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

Unified Diff: ui/message_center/views/message_view.cc

Issue 114323002: Fixes the context menu for a notification. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix2 Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: ui/message_center/views/message_view.cc
diff --git a/ui/message_center/views/message_view.cc b/ui/message_center/views/message_view.cc
index 28e6fdbca0fd0f27a89f1d46367e18c94f46d30f..509e75579c21245bb85c14f060ad1b3b678d9a8f 100644
--- a/ui/message_center/views/message_view.cc
+++ b/ui/message_center/views/message_view.cc
@@ -17,13 +17,11 @@
#include "ui/message_center/message_center_util.h"
#include "ui/message_center/views/padded_button.h"
#include "ui/views/background.h"
-#include "ui/views/context_menu_controller.h"
#include "ui/views/controls/button/image_button.h"
-#include "ui/views/controls/menu/menu_runner.h"
#include "ui/views/controls/scroll_view.h"
+#include "ui/views/focus/focus_manager.h"
#include "ui/views/painter.h"
#include "ui/views/shadow_border.h"
-#include "ui/views/widget/widget.h"
namespace {
@@ -33,137 +31,10 @@ const int kCloseIconRightPadding = 5;
const int kShadowOffset = 1;
const int kShadowBlur = 4;
-// Menu constants
-const int kTogglePermissionCommand = 0;
-const int kShowSettingsCommand = 1;
-
-// A dropdown menu for notifications.
-class MenuModel : public ui::SimpleMenuModel,
- public ui::SimpleMenuModel::Delegate {
- public:
- MenuModel(message_center::MessageViewController* controller,
- message_center::NotifierId notifier_id,
- const string16& display_source);
- virtual ~MenuModel();
-
- // Overridden from ui::SimpleMenuModel::Delegate:
- virtual bool IsItemForCommandIdDynamic(int command_id) const OVERRIDE;
- virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
- virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
- virtual bool GetAcceleratorForCommandId(
- int command_id,
- ui::Accelerator* accelerator) OVERRIDE;
- virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
-
- private:
- message_center::MessageViewController* controller_;
- message_center::NotifierId notifier_id_;
- DISALLOW_COPY_AND_ASSIGN(MenuModel);
-};
-
-MenuModel::MenuModel(message_center::MessageViewController* controller,
- message_center::NotifierId notifier_id,
- const string16& display_source)
- : ui::SimpleMenuModel(this),
- controller_(controller),
- notifier_id_(notifier_id) {
- // Add 'disable notifications' menu item.
- if (!display_source.empty()) {
- AddItem(kTogglePermissionCommand,
- l10n_util::GetStringFUTF16(IDS_MESSAGE_CENTER_NOTIFIER_DISABLE,
- display_source));
- }
- // Add settings menu item.
- AddItem(kShowSettingsCommand,
- l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_SETTINGS));
-}
-
-MenuModel::~MenuModel() {
-}
-
-bool MenuModel::IsItemForCommandIdDynamic(int command_id) const {
- return false;
-}
-
-bool MenuModel::IsCommandIdChecked(int command_id) const {
- return false;
-}
-
-bool MenuModel::IsCommandIdEnabled(int command_id) const {
- return true;
-}
-
-bool MenuModel::GetAcceleratorForCommandId(int command_id,
- ui::Accelerator* accelerator) {
- return false;
-}
-
-void MenuModel::ExecuteCommand(int command_id, int event_flags) {
- switch (command_id) {
- case kTogglePermissionCommand:
- controller_->DisableNotificationsFromThisSource(notifier_id_);
- break;
- case kShowSettingsCommand:
- controller_->ShowNotifierSettingsBubble();
- break;
- default:
- NOTREACHED();
- }
-}
-
} // namespace
namespace message_center {
-class MessageViewContextMenuController : public views::ContextMenuController {
- public:
- MessageViewContextMenuController(MessageViewController* controller,
- const NotifierId& notifier_id,
- const string16& display_source);
- virtual ~MessageViewContextMenuController();
-
- protected:
- // Overridden from views::ContextMenuController:
- virtual void ShowContextMenuForView(views::View* source,
- const gfx::Point& point,
- ui::MenuSourceType source_type) OVERRIDE;
-
- MessageViewController* controller_; // Weak, owns us.
- NotifierId notifier_id_;
- string16 display_source_;
-};
-
-MessageViewContextMenuController::MessageViewContextMenuController(
- MessageViewController* controller,
- const NotifierId& notifier_id,
- const string16& display_source)
- : controller_(controller),
- notifier_id_(notifier_id),
- display_source_(display_source) {
-}
-
-MessageViewContextMenuController::~MessageViewContextMenuController() {
-}
-
-void MessageViewContextMenuController::ShowContextMenuForView(
- views::View* source,
- const gfx::Point& point,
- ui::MenuSourceType source_type) {
- MenuModel menu_model(controller_, notifier_id_, display_source_);
- if (menu_model.GetItemCount() == 0)
- return;
-
- views::MenuRunner menu_runner(&menu_model);
-
- ignore_result(menu_runner.RunMenuAt(
- source->GetWidget()->GetTopLevelWidget(),
- NULL,
- gfx::Rect(point, gfx::Size()),
- views::MenuItemView::TOPRIGHT,
- source_type,
- views::MenuRunner::HAS_MNEMONICS));
-}
-
MessageView::MessageView(MessageViewController* controller,
const std::string& notification_id,
const NotifierId& notifier_id,
@@ -171,14 +42,10 @@ MessageView::MessageView(MessageViewController* controller,
: controller_(controller),
notification_id_(notification_id),
notifier_id_(notifier_id),
- context_menu_controller_(
- new MessageViewContextMenuController(controller,
- notifier_id,
- display_source)),
background_view_(NULL),
- scroller_(NULL) {
+ scroller_(NULL),
+ display_source_(display_source) {
SetFocusable(true);
- set_context_menu_controller(context_menu_controller_.get());
// Create the opaque background that's above the view's shadow.
background_view_ = new views::View();
« no previous file with comments | « ui/message_center/views/message_view.h ('k') | ui/message_center/views/message_view_context_menu_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698