| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "ui/arc/notification/arc_custom_notification_view.h" | 5 #include "ui/arc/notification/arc_custom_notification_view.h" |
| 6 | 6 |
| 7 #include "components/exo/notification_surface.h" | 7 #include "components/exo/notification_surface.h" |
| 8 #include "components/exo/surface.h" | 8 #include "components/exo/surface.h" |
| 9 #include "third_party/skia/include/core/SkColor.h" | 9 #include "third_party/skia/include/core/SkColor.h" |
| 10 #include "ui/base/l10n/l10n_util.h" | 10 #include "ui/base/l10n/l10n_util.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 namespace arc { | 25 namespace arc { |
| 26 | 26 |
| 27 class ArcCustomNotificationView::EventForwarder : public ui::EventHandler { | 27 class ArcCustomNotificationView::EventForwarder : public ui::EventHandler { |
| 28 public: | 28 public: |
| 29 explicit EventForwarder(ArcCustomNotificationView* owner) : owner_(owner) {} | 29 explicit EventForwarder(ArcCustomNotificationView* owner) : owner_(owner) {} |
| 30 ~EventForwarder() override = default; | 30 ~EventForwarder() override = default; |
| 31 | 31 |
| 32 private: | 32 private: |
| 33 // ui::EventHandler | 33 // ui::EventHandler |
| 34 void OnEvent(ui::Event* event) override { owner_->OnEvent(event); } | 34 void OnEvent(ui::Event* event) override { |
| 35 // Do not forward event targeted to the floating close button so that |
| 36 // keyboard press and tap are handled properly. |
| 37 if (owner_->floating_close_button_widget_ && event->target() && |
| 38 owner_->floating_close_button_widget_->GetNativeWindow() == |
| 39 event->target()) { |
| 40 return; |
| 41 } |
| 42 |
| 43 owner_->OnEvent(event); |
| 44 } |
| 35 | 45 |
| 36 ArcCustomNotificationView* const owner_; | 46 ArcCustomNotificationView* const owner_; |
| 37 | 47 |
| 38 DISALLOW_COPY_AND_ASSIGN(EventForwarder); | 48 DISALLOW_COPY_AND_ASSIGN(EventForwarder); |
| 39 }; | 49 }; |
| 40 | 50 |
| 41 class ArcCustomNotificationView::SlideHelper | 51 class ArcCustomNotificationView::SlideHelper |
| 42 : public ui::LayerAnimationObserver { | 52 : public ui::LayerAnimationObserver { |
| 43 public: | 53 public: |
| 44 explicit SlideHelper(ArcCustomNotificationView* owner) : owner_(owner) { | 54 explicit SlideHelper(ArcCustomNotificationView* owner) : owner_(owner) { |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 ArcCustomNotificationView::~ArcCustomNotificationView() { | 128 ArcCustomNotificationView::~ArcCustomNotificationView() { |
| 119 SetSurface(nullptr); | 129 SetSurface(nullptr); |
| 120 if (item_) | 130 if (item_) |
| 121 item_->RemoveObserver(this); | 131 item_->RemoveObserver(this); |
| 122 } | 132 } |
| 123 | 133 |
| 124 void ArcCustomNotificationView::CreateFloatingCloseButton() { | 134 void ArcCustomNotificationView::CreateFloatingCloseButton() { |
| 125 floating_close_button_ = new views::ImageButton(this); | 135 floating_close_button_ = new views::ImageButton(this); |
| 126 floating_close_button_->set_background( | 136 floating_close_button_->set_background( |
| 127 views::Background::CreateSolidBackground(SK_ColorTRANSPARENT)); | 137 views::Background::CreateSolidBackground(SK_ColorTRANSPARENT)); |
| 128 floating_close_button_->SetBorder( | 138 |
| 129 views::Border::CreateEmptyBorder(5, 5, 5, 5)); | 139 // The sizes below are in DIPs. |
| 140 constexpr int kPaddingFromBorder = 4; |
| 141 constexpr int kImageSize = 16; |
| 142 constexpr int kTouchExtendedPadding = |
| 143 message_center::kControlButtonSize - kImageSize - kPaddingFromBorder; |
| 144 floating_close_button_->SetBorder(views::Border::CreateEmptyBorder( |
| 145 kPaddingFromBorder, kTouchExtendedPadding, kTouchExtendedPadding, |
| 146 kPaddingFromBorder)); |
| 130 | 147 |
| 131 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 148 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 132 floating_close_button_->SetImage( | 149 floating_close_button_->SetImage( |
| 133 views::CustomButton::STATE_NORMAL, | 150 views::CustomButton::STATE_NORMAL, |
| 134 rb.GetImageSkiaNamed(IDR_NOTIFICATION_CLOSE)); | 151 rb.GetImageSkiaNamed(IDR_ARC_NOTIFICATION_CLOSE)); |
| 135 floating_close_button_->SetImage( | |
| 136 views::CustomButton::STATE_HOVERED, | |
| 137 rb.GetImageSkiaNamed(IDR_NOTIFICATION_CLOSE_HOVER)); | |
| 138 floating_close_button_->SetImage( | |
| 139 views::CustomButton::STATE_PRESSED, | |
| 140 rb.GetImageSkiaNamed(IDR_NOTIFICATION_CLOSE_PRESSED)); | |
| 141 floating_close_button_->set_animate_on_state_change(false); | 152 floating_close_button_->set_animate_on_state_change(false); |
| 142 floating_close_button_->SetAccessibleName(l10n_util::GetStringUTF16( | 153 floating_close_button_->SetAccessibleName(l10n_util::GetStringUTF16( |
| 143 IDS_MESSAGE_CENTER_CLOSE_NOTIFICATION_BUTTON_ACCESSIBLE_NAME)); | 154 IDS_MESSAGE_CENTER_CLOSE_NOTIFICATION_BUTTON_ACCESSIBLE_NAME)); |
| 144 | 155 |
| 145 views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL); | 156 views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL); |
| 146 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; | 157 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; |
| 147 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 158 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 148 params.parent = surface_->window(); | 159 params.parent = surface_->window(); |
| 149 | 160 |
| 150 floating_close_button_widget_.reset(new views::Widget); | 161 floating_close_button_widget_.reset(new views::Widget); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 } else if (!item_->pinned() && !floating_close_button_widget_) { | 319 } else if (!item_->pinned() && !floating_close_button_widget_) { |
| 309 CreateFloatingCloseButton(); | 320 CreateFloatingCloseButton(); |
| 310 } | 321 } |
| 311 } | 322 } |
| 312 | 323 |
| 313 void ArcCustomNotificationView::OnItemNotificationSurfaceRemoved() { | 324 void ArcCustomNotificationView::OnItemNotificationSurfaceRemoved() { |
| 314 SetSurface(nullptr); | 325 SetSurface(nullptr); |
| 315 } | 326 } |
| 316 | 327 |
| 317 } // namespace arc | 328 } // namespace arc |
| OLD | NEW |