diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 01:01:21 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 01:01:21 +0000 |
commit | 32c531e4debc46f2342b2e4e3283fde1b77b0fe4 (patch) | |
tree | da659cb0addfc035c4692a6ac7c93363b98dfd55 /chrome/browser/views | |
parent | e8c287c870229879a207e15fa565afc439ae9d56 (diff) | |
download | chromium_src-32c531e4debc46f2342b2e4e3283fde1b77b0fe4.zip chromium_src-32c531e4debc46f2342b2e4e3283fde1b77b0fe4.tar.gz chromium_src-32c531e4debc46f2342b2e4e3283fde1b77b0fe4.tar.bz2 |
notifications/views: Make use of the cross platform NotificationOptionsMenuModel.
This is the second part of the implementation of the cross platform model that makes use of the implementation
in the views side and get rid of the duplicated coded.
BUG=None
TEST=Go to http://0xfe.muthanna.com/notifyme.html, request permission for notifications, notify it. Click on the wrench menu in the notification balloon, the menu should work as before.
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Review URL: http://codereview.chromium.org/3023004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52978 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r-- | chrome/browser/views/notifications/balloon_view.cc | 46 | ||||
-rw-r--r-- | chrome/browser/views/notifications/balloon_view.h | 14 |
2 files changed, 9 insertions, 51 deletions
diff --git a/chrome/browser/views/notifications/balloon_view.cc b/chrome/browser/views/notifications/balloon_view.cc index c89280b..fd7f99c 100644 --- a/chrome/browser/views/notifications/balloon_view.cc +++ b/chrome/browser/views/notifications/balloon_view.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -14,6 +14,7 @@ #include "chrome/browser/notifications/balloon.h" #include "chrome/browser/notifications/balloon_collection.h" #include "chrome/browser/notifications/desktop_notification_service.h" +#include "chrome/browser/notifications/notification_options_menu_model.h" #include "chrome/browser/profile.h" #include "chrome/browser/renderer_host/render_view_host.h" #include "chrome/browser/renderer_host/render_widget_host_view.h" @@ -98,7 +99,7 @@ BalloonViewImpl::BalloonViewImpl(BalloonCollection* collection) method_factory_(this), close_button_(NULL), animation_(NULL), - options_menu_contents_(NULL), + options_menu_model_(NULL), options_menu_menu_(NULL), options_menu_button_(NULL) { // This object is not to be deleted by the views hierarchy, @@ -360,17 +361,11 @@ void BalloonViewImpl::RunOptionsMenu(const gfx::Point& pt) { } void BalloonViewImpl::CreateOptionsMenu() { - if (options_menu_contents_.get()) + if (options_menu_model_.get()) return; - const string16 label_text = WideToUTF16Hack(l10n_util::GetStringF( - IDS_NOTIFICATION_BALLOON_REVOKE_MESSAGE, - this->balloon_->notification().display_source())); - - options_menu_contents_.reset(new menus::SimpleMenuModel(this)); - options_menu_contents_->AddItem(kRevokePermissionCommand, label_text); - - options_menu_menu_.reset(new views::Menu2(options_menu_contents_.get())); + options_menu_model_.reset(new NotificationOptionsMenuModel(balloon_)); + options_menu_menu_.reset(new views::Menu2(options_menu_model_.get())); } void BalloonViewImpl::GetContentsMask(const gfx::Rect& rect, @@ -484,35 +479,6 @@ void BalloonViewImpl::Paint(gfx::Canvas* canvas) { PaintBorder(canvas); } -// menus::SimpleMenuModel::Delegate methods -bool BalloonViewImpl::IsCommandIdChecked(int /* command_id */) const { - // Nothing in the menu is checked. - return false; -} - -bool BalloonViewImpl::IsCommandIdEnabled(int /* command_id */) const { - // All the menu options are always enabled. - return true; -} - -bool BalloonViewImpl::GetAcceleratorForCommandId( - int /* command_id */, menus::Accelerator* /* accelerator */) { - // Currently no accelerators. - return false; -} - -void BalloonViewImpl::ExecuteCommand(int command_id) { - DesktopNotificationService* service = - balloon_->profile()->GetDesktopNotificationService(); - switch (command_id) { - case kRevokePermissionCommand: - service->DenyPermission(balloon_->notification().origin_url()); - break; - default: - NOTIMPLEMENTED(); - } -} - void BalloonViewImpl::Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details) { diff --git a/chrome/browser/views/notifications/balloon_view.h b/chrome/browser/views/notifications/balloon_view.h index 6f10bd2..40fc68d 100644 --- a/chrome/browser/views/notifications/balloon_view.h +++ b/chrome/browser/views/notifications/balloon_view.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -7,7 +7,6 @@ #ifndef CHROME_BROWSER_VIEWS_NOTIFICATIONS_BALLOON_VIEW_H_ #define CHROME_BROWSER_VIEWS_NOTIFICATIONS_BALLOON_VIEW_H_ -#include "app/menus/simple_menu_model.h" #include "app/slide_animation.h" #include "base/basictypes.h" #include "base/scoped_ptr.h" @@ -37,6 +36,7 @@ class Menu2; class BalloonCollection; class NotificationDetails; +class NotificationOptionsMenuModel; class NotificationSource; class SlideAnimation; @@ -47,7 +47,6 @@ class BalloonViewImpl : public BalloonView, public views::ViewMenuDelegate, public views::WidgetDelegate, public views::ButtonListener, - public menus::SimpleMenuModel::Delegate, public NotificationObserver, public AnimationDelegate { public: @@ -81,13 +80,6 @@ class BalloonViewImpl : public BalloonView, // views::ButtonListener interface. virtual void ButtonPressed(views::Button* sender, const views::Event&); - // menus::SimpleMenuModel::Delegate interface. - virtual bool IsCommandIdChecked(int command_id) const; - virtual bool IsCommandIdEnabled(int command_id) const; - virtual bool GetAcceleratorForCommandId(int command_id, - menus::Accelerator* accelerator); - virtual void ExecuteCommand(int command_id); - // NotificationObserver interface. virtual void Observe(NotificationType type, const NotificationSource& source, @@ -167,7 +159,7 @@ class BalloonViewImpl : public BalloonView, gfx::Rect anim_frame_end_; // The options menu. - scoped_ptr<menus::SimpleMenuModel> options_menu_contents_; + scoped_ptr<NotificationOptionsMenuModel> options_menu_model_; scoped_ptr<views::Menu2> options_menu_menu_; views::MenuButton* options_menu_button_; |