Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: ash/system/tray/tray_notification_view.cc

Issue 10694043: Handle gesture events in notifications. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + remove extra WS Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/system/tray/tray_notification_view.h ('k') | ash/system/tray/tray_views.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/system/tray/tray_notification_view.h"
6
7 #include "ash/system/tray/system_tray_item.h"
8 #include "ash/system/tray/tray_constants.h"
9 #include "grit/ash_strings.h"
10 #include "grit/ui_resources_standard.h"
11 #include "ui/base/resource/resource_bundle.h"
12 #include "ui/gfx/image/image_skia.h"
13 #include "ui/views/controls/button/image_button.h"
14 #include "ui/views/controls/image_view.h"
15 #include "ui/views/layout/grid_layout.h"
16
17 namespace ash {
18 namespace internal {
19
20 TrayNotificationView::TrayNotificationView(SystemTrayItem* tray, int icon_id)
21 : tray_(tray),
22 icon_id_(icon_id),
23 icon_(NULL) {
24 }
25
26 TrayNotificationView::~TrayNotificationView() {
27 }
28
29 void TrayNotificationView::InitView(views::View* contents) {
30 set_background(views::Background::CreateSolidBackground(kBackgroundColor));
31
32 views::GridLayout* layout = new views::GridLayout(this);
33 SetLayoutManager(layout);
34
35 views::ImageButton* close_button = new views::ImageButton(this);
36 close_button->SetImage(views::CustomButton::BS_NORMAL,
37 ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
38 IDR_AURA_WINDOW_CLOSE));
39
40 icon_ = new views::ImageView;
41 if (icon_id_ != 0) {
42 icon_->SetImage(
43 ResourceBundle::GetSharedInstance().GetImageSkiaNamed(icon_id_));
44 }
45
46 views::ColumnSet* columns = layout->AddColumnSet(0);
47
48 columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
49
50 // Icon
51 columns->AddColumn(views::GridLayout::CENTER, views::GridLayout::CENTER,
52 0, /* resize percent */
53 views::GridLayout::FIXED,
54 kNotificationIconWidth, kNotificationIconWidth);
55
56 columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
57
58 // Contents
59 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL,
60 0, /* resize percent */
61 views::GridLayout::FIXED,
62 kTrayNotificationContentsWidth,
63 kTrayNotificationContentsWidth);
64
65 columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
66
67 // Close button
68 columns->AddColumn(views::GridLayout::CENTER, views::GridLayout::CENTER,
69 0, /* resize percent */
70 views::GridLayout::FIXED,
71 kNotificationIconWidth, kNotificationIconWidth);
72
73 columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
74
75 // Layout rows
76 layout->AddPaddingRow(0, kTrayPopupPaddingBetweenItems);
77 layout->StartRow(0, 0);
78 layout->AddView(icon_);
79 layout->AddView(contents);
80 layout->AddView(close_button);
81 layout->AddPaddingRow(0, kTrayPopupPaddingBetweenItems);
82 }
83
84 void TrayNotificationView::SetIconImage(const gfx::ImageSkia& image) {
85 icon_->SetImage(image);
86 SchedulePaint();
87 }
88
89 void TrayNotificationView::UpdateView(views::View* new_contents) {
90 RemoveAllChildViews(true);
91 InitView(new_contents);
92 Layout();
93 PreferredSizeChanged();
94 SchedulePaint();
95 }
96
97 void TrayNotificationView::UpdateViewAndImage(views::View* new_contents,
98 const gfx::ImageSkia& image) {
99 RemoveAllChildViews(true);
100 InitView(new_contents);
101 icon_->SetImage(image);
102 Layout();
103 PreferredSizeChanged();
104 SchedulePaint();
105 }
106
107 void TrayNotificationView::ButtonPressed(views::Button* sender,
108 const views::Event& event) {
109 HandleClose();
110 }
111
112 bool TrayNotificationView::OnMousePressed(const views::MouseEvent& event) {
113 HandleClickAction();
114 return true;
115 }
116
117 ui::GestureStatus TrayNotificationView::OnGestureEvent(
118 const views::GestureEvent& event) {
119 if (event.type() != ui::ET_GESTURE_TAP)
120 return ui::GESTURE_STATUS_UNKNOWN;
121 HandleClickAction();
122 return ui::GESTURE_STATUS_CONSUMED;
123 }
124
125 void TrayNotificationView::OnClose() {
126 }
127
128 void TrayNotificationView::OnClickAction() {
129 }
130
131 void TrayNotificationView::HandleClose() {
132 OnClose();
133 tray_->HideNotificationView();
134 }
135
136 void TrayNotificationView::HandleClickAction() {
137 HandleClose();
138 OnClickAction();
139 }
140
141 } // namespace internal
142 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/tray/tray_notification_view.h ('k') | ash/system/tray/tray_views.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698