| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/popup_message.h" | 5 #include "ash/popup_message.h" |
| 6 | 6 |
| 7 #include "ash/wm/window_animations.h" | 7 #include "ash/wm/window_animations.h" |
| 8 #include "grit/ash_resources.h" | 8 #include "grit/ash_resources.h" |
| 9 #include "ui/base/resource/resource_bundle.h" | 9 #include "ui/base/resource/resource_bundle.h" |
| 10 #include "ui/gfx/geometry/insets.h" | 10 #include "ui/gfx/geometry/insets.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 | 70 |
| 71 PopupMessage::MessageBubble::MessageBubble(const base::string16& caption, | 71 PopupMessage::MessageBubble::MessageBubble(const base::string16& caption, |
| 72 const base::string16& message, | 72 const base::string16& message, |
| 73 IconType message_type, | 73 IconType message_type, |
| 74 views::View* anchor, | 74 views::View* anchor, |
| 75 views::BubbleBorder::Arrow arrow, | 75 views::BubbleBorder::Arrow arrow, |
| 76 const gfx::Size& size_override, | 76 const gfx::Size& size_override, |
| 77 int arrow_offset) | 77 int arrow_offset) |
| 78 : views::BubbleDialogDelegateView(anchor, arrow), | 78 : views::BubbleDialogDelegateView(anchor, arrow), |
| 79 size_override_(size_override) { | 79 size_override_(size_override) { |
| 80 gfx::Insets insets = gfx::Insets(kArrowOffsetTopBottom, | 80 gfx::Insets insets = |
| 81 kArrowOffsetLeftRight, | 81 gfx::Insets(kArrowOffsetTopBottom, kArrowOffsetLeftRight, |
| 82 kArrowOffsetTopBottom, | 82 kArrowOffsetTopBottom, kArrowOffsetLeftRight); |
| 83 kArrowOffsetLeftRight); | |
| 84 // An anchor can have an asymmetrical border for spacing reasons. Adjust the | 83 // An anchor can have an asymmetrical border for spacing reasons. Adjust the |
| 85 // anchor location for this. | 84 // anchor location for this. |
| 86 if (anchor->border()) | 85 if (anchor->border()) |
| 87 insets += anchor->border()->GetInsets(); | 86 insets += anchor->border()->GetInsets(); |
| 88 | 87 |
| 89 set_anchor_view_insets(insets); | 88 set_anchor_view_insets(insets); |
| 90 set_close_on_deactivate(false); | 89 set_close_on_deactivate(false); |
| 91 set_can_activate(false); | 90 set_can_activate(false); |
| 92 set_accept_events(false); | 91 set_accept_events(false); |
| 93 | 92 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 110 // | Message text which can be multi line | message_label | 109 // | Message text which can be multi line | message_label |
| 111 // | as well. | | 110 // | as well. | |
| 112 // | |- | 111 // | |- |
| 113 // +-------------------------------------------------+ | 112 // +-------------------------------------------------+ |
| 114 // |------------details container--------------| | 113 // |------------details container--------------| |
| 115 // Note that the icon, caption and message are optional. | 114 // Note that the icon, caption and message are optional. |
| 116 | 115 |
| 117 // Add the icon to the first column (if there is one). | 116 // Add the icon to the first column (if there is one). |
| 118 if (message_type != ICON_NONE) { | 117 if (message_type != ICON_NONE) { |
| 119 views::ImageView* icon = new views::ImageView(); | 118 views::ImageView* icon = new views::ImageView(); |
| 120 icon->SetImage( | 119 icon->SetImage(bundle.GetImageNamed(IDR_AURA_WARNING_ICON).ToImageSkia()); |
| 121 bundle.GetImageNamed(IDR_AURA_WARNING_ICON).ToImageSkia()); | |
| 122 icon->SetVerticalAlignment(views::ImageView::LEADING); | 120 icon->SetVerticalAlignment(views::ImageView::LEADING); |
| 123 AddChildView(icon); | 121 AddChildView(icon); |
| 124 } | 122 } |
| 125 | 123 |
| 126 // Create a container for the text items and use it as second column. | 124 // Create a container for the text items and use it as second column. |
| 127 views::View* details = new views::View(); | 125 views::View* details = new views::View(); |
| 128 AddChildView(details); | 126 AddChildView(details); |
| 129 details->SetLayoutManager(new views::BoxLayout( | 127 details->SetLayoutManager(new views::BoxLayout( |
| 130 views::BoxLayout::kVertical, 0, 0, kVerticalPopupPaddingBetweenItems)); | 128 views::BoxLayout::kVertical, 0, 0, kVerticalPopupPaddingBetweenItems)); |
| 131 | 129 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 } | 189 } |
| 192 | 190 |
| 193 PopupMessage::PopupMessage(const base::string16& caption, | 191 PopupMessage::PopupMessage(const base::string16& caption, |
| 194 const base::string16& message, | 192 const base::string16& message, |
| 195 IconType message_type, | 193 IconType message_type, |
| 196 views::View* anchor, | 194 views::View* anchor, |
| 197 views::BubbleBorder::Arrow arrow, | 195 views::BubbleBorder::Arrow arrow, |
| 198 const gfx::Size& size_override, | 196 const gfx::Size& size_override, |
| 199 int arrow_offset) | 197 int arrow_offset) |
| 200 : view_(NULL) { | 198 : view_(NULL) { |
| 201 view_ = new MessageBubble( | 199 view_ = new MessageBubble(caption, message, message_type, anchor, arrow, |
| 202 caption, message, message_type, anchor, arrow, size_override, | 200 size_override, arrow_offset); |
| 203 arrow_offset); | |
| 204 widget_ = view_->GetWidget(); | 201 widget_ = view_->GetWidget(); |
| 205 | 202 |
| 206 gfx::NativeView native_view = widget_->GetNativeView(); | 203 gfx::NativeView native_view = widget_->GetNativeView(); |
| 207 wm::SetWindowVisibilityAnimationType( | 204 wm::SetWindowVisibilityAnimationType( |
| 208 native_view, wm::WINDOW_VISIBILITY_ANIMATION_TYPE_VERTICAL); | 205 native_view, wm::WINDOW_VISIBILITY_ANIMATION_TYPE_VERTICAL); |
| 209 wm::SetWindowVisibilityAnimationTransition( | 206 wm::SetWindowVisibilityAnimationTransition(native_view, wm::ANIMATE_HIDE); |
| 210 native_view, wm::ANIMATE_HIDE); | |
| 211 view_->GetWidget()->Show(); | 207 view_->GetWidget()->Show(); |
| 212 } | 208 } |
| 213 | 209 |
| 214 PopupMessage::~PopupMessage() { | 210 PopupMessage::~PopupMessage() { |
| 215 CancelHidingAnimation(); | 211 CancelHidingAnimation(); |
| 216 Close(); | 212 Close(); |
| 217 } | 213 } |
| 218 | 214 |
| 219 void PopupMessage::Close() { | 215 void PopupMessage::Close() { |
| 220 if (view_) { | 216 if (view_) { |
| 221 view_->ClosePopup(); | 217 view_->ClosePopup(); |
| 222 view_ = NULL; | 218 view_ = NULL; |
| 223 widget_ = NULL; | 219 widget_ = NULL; |
| 224 } | 220 } |
| 225 } | 221 } |
| 226 | 222 |
| 227 void PopupMessage::CancelHidingAnimation() { | 223 void PopupMessage::CancelHidingAnimation() { |
| 228 if (!widget_ || !widget_->GetNativeView()) | 224 if (!widget_ || !widget_->GetNativeView()) |
| 229 return; | 225 return; |
| 230 | 226 |
| 231 gfx::NativeView native_view = widget_->GetNativeView(); | 227 gfx::NativeView native_view = widget_->GetNativeView(); |
| 232 wm::SetWindowVisibilityAnimationTransition( | 228 wm::SetWindowVisibilityAnimationTransition(native_view, wm::ANIMATE_NONE); |
| 233 native_view, wm::ANIMATE_NONE); | |
| 234 } | 229 } |
| 235 | 230 |
| 236 } // namespace ash | 231 } // namespace ash |
| OLD | NEW |