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

Side by Side Diff: ui/message_center/message_view.cc

Issue 12277024: Notificaitons refactor step 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed latest nits Created 7 years, 10 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/message_center/message_view.h" 5 #include "ui/message_center/message_view.h"
6 6
7 #include "grit/ui_resources.h" 7 #include "grit/ui_resources.h"
8 #include "grit/ui_strings.h" 8 #include "grit/ui_strings.h"
9 #include "ui/base/l10n/l10n_util.h" 9 #include "ui/base/l10n/l10n_util.h"
10 #include "ui/base/models/simple_menu_model.h" 10 #include "ui/base/models/simple_menu_model.h"
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 // Menu constants 137 // Menu constants
138 const int kTogglePermissionCommand = 0; 138 const int kTogglePermissionCommand = 0;
139 const int kToggleExtensionCommand = 1; 139 const int kToggleExtensionCommand = 1;
140 const int kShowSettingsCommand = 2; 140 const int kShowSettingsCommand = 2;
141 141
142 // A dropdown menu for notifications. 142 // A dropdown menu for notifications.
143 class WebNotificationMenuModel : public ui::SimpleMenuModel, 143 class WebNotificationMenuModel : public ui::SimpleMenuModel,
144 public ui::SimpleMenuModel::Delegate { 144 public ui::SimpleMenuModel::Delegate {
145 public: 145 public:
146 WebNotificationMenuModel(NotificationList::Delegate* list_delegate, 146 WebNotificationMenuModel(NotificationList::Delegate* list_delegate,
147 const Notification& notification) 147 Notification* notification)
148 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), 148 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)),
149 list_delegate_(list_delegate), 149 list_delegate_(list_delegate),
150 notification_(notification) { 150 notification_(notification) {
151 // Add 'disable notifications' menu item. 151 // Add 'disable notifications' menu item.
152 if (!notification.extension_id.empty()) { 152 if (!notification->extension_id().empty()) {
153 AddItem(kToggleExtensionCommand, 153 AddItem(kToggleExtensionCommand,
154 GetLabelForCommandId(kToggleExtensionCommand)); 154 GetLabelForCommandId(kToggleExtensionCommand));
155 } else if (!notification.display_source.empty()) { 155 } else if (!notification->display_source().empty()) {
156 AddItem(kTogglePermissionCommand, 156 AddItem(kTogglePermissionCommand,
157 GetLabelForCommandId(kTogglePermissionCommand)); 157 GetLabelForCommandId(kTogglePermissionCommand));
158 } 158 }
159 // Add settings menu item. 159 // Add settings menu item.
160 if (!notification.display_source.empty()) { 160 if (!notification->display_source().empty()) {
161 AddItem(kShowSettingsCommand, 161 AddItem(kShowSettingsCommand,
162 GetLabelForCommandId(kShowSettingsCommand)); 162 GetLabelForCommandId(kShowSettingsCommand));
163 } 163 }
164 } 164 }
165 165
166 virtual ~WebNotificationMenuModel() { 166 virtual ~WebNotificationMenuModel() {
167 } 167 }
168 168
169 // Overridden from ui::SimpleMenuModel: 169 // Overridden from ui::SimpleMenuModel:
170 virtual string16 GetLabelForCommandId(int command_id) const OVERRIDE { 170 virtual string16 GetLabelForCommandId(int command_id) const OVERRIDE {
171 switch (command_id) { 171 switch (command_id) {
172 case kToggleExtensionCommand: 172 case kToggleExtensionCommand:
173 return l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_EXTENSIONS_DISABLE); 173 return l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_EXTENSIONS_DISABLE);
174 case kTogglePermissionCommand: 174 case kTogglePermissionCommand:
175 return l10n_util::GetStringFUTF16(IDS_MESSAGE_CENTER_SITE_DISABLE, 175 return l10n_util::GetStringFUTF16(IDS_MESSAGE_CENTER_SITE_DISABLE,
176 notification_.display_source); 176 notification_->display_source());
177 case kShowSettingsCommand: 177 case kShowSettingsCommand:
178 return l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_SETTINGS); 178 return l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_SETTINGS);
179 default: 179 default:
180 NOTREACHED(); 180 NOTREACHED();
181 } 181 }
182 return string16(); 182 return string16();
183 } 183 }
184 184
185 // Overridden from ui::SimpleMenuModel::Delegate: 185 // Overridden from ui::SimpleMenuModel::Delegate:
186 virtual bool IsCommandIdChecked(int command_id) const OVERRIDE { 186 virtual bool IsCommandIdChecked(int command_id) const OVERRIDE {
187 return false; 187 return false;
188 } 188 }
189 189
190 virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE { 190 virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE {
191 return false; 191 return false;
192 } 192 }
193 193
194 virtual bool GetAcceleratorForCommandId( 194 virtual bool GetAcceleratorForCommandId(
195 int command_id, 195 int command_id,
196 ui::Accelerator* accelerator) OVERRIDE { 196 ui::Accelerator* accelerator) OVERRIDE {
197 return false; 197 return false;
198 } 198 }
199 199
200 virtual void ExecuteCommand(int command_id) OVERRIDE { 200 virtual void ExecuteCommand(int command_id) OVERRIDE {
201 switch (command_id) { 201 switch (command_id) {
202 case kToggleExtensionCommand: 202 case kToggleExtensionCommand:
203 list_delegate_->DisableNotificationByExtension(notification_.id); 203 list_delegate_->DisableNotificationByExtension(notification_->id());
204 break; 204 break;
205 case kTogglePermissionCommand: 205 case kTogglePermissionCommand:
206 list_delegate_->DisableNotificationByUrl(notification_.id); 206 list_delegate_->DisableNotificationByUrl(notification_->id());
207 break; 207 break;
208 case kShowSettingsCommand: 208 case kShowSettingsCommand:
209 list_delegate_->ShowNotificationSettings(notification_.id); 209 list_delegate_->ShowNotificationSettings(notification_->id());
210 break; 210 break;
211 default: 211 default:
212 NOTREACHED(); 212 NOTREACHED();
213 } 213 }
214 } 214 }
215 215
216 private: 216 private:
217 NotificationList::Delegate* list_delegate_; 217 NotificationList::Delegate* list_delegate_; // Weak, global MessageCenter
218 Notification notification_; 218 Notification* notification_; // Weak, owned by NotificationList
219 219
220 DISALLOW_COPY_AND_ASSIGN(WebNotificationMenuModel); 220 DISALLOW_COPY_AND_ASSIGN(WebNotificationMenuModel);
221 }; 221 };
222 222
223 MessageView::MessageView( 223 MessageView::MessageView(
224 NotificationList::Delegate* list_delegate, 224 NotificationList::Delegate* list_delegate,
225 const Notification& notification) 225 Notification* notification)
226 : list_delegate_(list_delegate), 226 : list_delegate_(list_delegate),
227 notification_(notification), 227 notification_(notification),
228 scroller_(NULL) { 228 scroller_(NULL) {
229 ControlButton *close = new ControlButton(this); 229 ControlButton *close = new ControlButton(this);
230 close->SetPadding(-kCloseIconRightPadding, kCloseIconTopPadding); 230 close->SetPadding(-kCloseIconRightPadding, kCloseIconTopPadding);
231 close->SetNormalImage(IDR_NOTIFICATION_CLOSE); 231 close->SetNormalImage(IDR_NOTIFICATION_CLOSE);
232 close->SetHoveredImage(IDR_NOTIFICATION_CLOSE_HOVER); 232 close->SetHoveredImage(IDR_NOTIFICATION_CLOSE_HOVER);
233 close->SetPressedImage(IDR_NOTIFICATION_CLOSE_PRESSED); 233 close->SetPressedImage(IDR_NOTIFICATION_CLOSE_PRESSED);
234 close_button_.reset(close); 234 close_button_.reset(close);
235 } 235 }
236 236
237 MessageView::MessageView() { 237 MessageView::MessageView() {
238 } 238 }
239 239
240 MessageView::~MessageView() { 240 MessageView::~MessageView() {
241 } 241 }
242 242
243 bool MessageView::OnMousePressed(const ui::MouseEvent& event) { 243 bool MessageView::OnMousePressed(const ui::MouseEvent& event) {
244 if (event.flags() & ui::EF_RIGHT_MOUSE_BUTTON) { 244 if (event.flags() & ui::EF_RIGHT_MOUSE_BUTTON) {
245 ShowMenu(event.location()); 245 ShowMenu(event.location());
246 return true; 246 return true;
247 } 247 }
248 list_delegate_->OnNotificationClicked(notification_.id); 248 list_delegate_->OnNotificationClicked(notification_->id());
249 return true; 249 return true;
250 } 250 }
251 251
252 void MessageView::OnGestureEvent(ui::GestureEvent* event) { 252 void MessageView::OnGestureEvent(ui::GestureEvent* event) {
253 if (event->type() == ui::ET_GESTURE_TAP) { 253 if (event->type() == ui::ET_GESTURE_TAP) {
254 list_delegate_->OnNotificationClicked(notification_.id); 254 list_delegate_->OnNotificationClicked(notification_->id());
255 event->SetHandled(); 255 event->SetHandled();
256 return; 256 return;
257 } 257 }
258 258
259 if (event->type() == ui::ET_GESTURE_LONG_PRESS) { 259 if (event->type() == ui::ET_GESTURE_LONG_PRESS) {
260 ShowMenu(event->location()); 260 ShowMenu(event->location());
261 event->SetHandled(); 261 event->SetHandled();
262 return; 262 return;
263 } 263 }
264 264
265 SlideOutView::OnGestureEvent(event); 265 SlideOutView::OnGestureEvent(event);
266 // Do not return here by checking handled(). SlideOutView calls SetHandled() 266 // Do not return here by checking handled(). SlideOutView calls SetHandled()
267 // even though the scroll gesture doesn't make no (or little) effects on the 267 // even though the scroll gesture doesn't make no (or little) effects on the
268 // slide-out behavior. See http://crbug.com/172991 268 // slide-out behavior. See http://crbug.com/172991
269 269
270 if (!event->IsScrollGestureEvent()) 270 if (!event->IsScrollGestureEvent())
271 return; 271 return;
272 272
273 if (scroller_) 273 if (scroller_)
274 scroller_->OnGestureEvent(event); 274 scroller_->OnGestureEvent(event);
275 event->SetHandled(); 275 event->SetHandled();
276 } 276 }
277 277
278 void MessageView::ButtonPressed(views::Button* sender, 278 void MessageView::ButtonPressed(views::Button* sender,
279 const ui::Event& event) { 279 const ui::Event& event) {
280 if (sender == close_button()) 280 if (sender == close_button())
281 list_delegate_->SendRemoveNotification(notification_.id); 281 list_delegate_->SendRemoveNotification(notification_->id());
282 } 282 }
283 283
284 void MessageView::ShowMenu(gfx::Point screen_location) { 284 void MessageView::ShowMenu(gfx::Point screen_location) {
285 WebNotificationMenuModel menu_model(list_delegate_, notification_); 285 WebNotificationMenuModel menu_model(list_delegate_, notification_);
286 if (menu_model.GetItemCount() == 0) 286 if (menu_model.GetItemCount() == 0)
287 return; 287 return;
288 288
289 views::MenuModelAdapter menu_model_adapter(&menu_model); 289 views::MenuModelAdapter menu_model_adapter(&menu_model);
290 views::MenuRunner menu_runner(menu_model_adapter.CreateMenu()); 290 views::MenuRunner menu_runner(menu_model_adapter.CreateMenu());
291 291
292 views::View::ConvertPointToScreen(this, &screen_location); 292 views::View::ConvertPointToScreen(this, &screen_location);
293 ignore_result(menu_runner.RunMenuAt( 293 ignore_result(menu_runner.RunMenuAt(
294 GetWidget()->GetTopLevelWidget(), 294 GetWidget()->GetTopLevelWidget(),
295 NULL, 295 NULL,
296 gfx::Rect(screen_location, gfx::Size()), 296 gfx::Rect(screen_location, gfx::Size()),
297 views::MenuItemView::TOPRIGHT, 297 views::MenuItemView::TOPRIGHT,
298 views::MenuRunner::HAS_MNEMONICS)); 298 views::MenuRunner::HAS_MNEMONICS));
299 } 299 }
300 300
301 void MessageView::OnSlideOut() { 301 void MessageView::OnSlideOut() {
302 list_delegate_->SendRemoveNotification(notification_.id); 302 list_delegate_->SendRemoveNotification(notification_->id());
303 } 303 }
304 304
305 } // namespace message_center 305 } // namespace message_center
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698