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

Unified Diff: ui/message_center/message_center_tray.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
« no previous file with comments | « ui/message_center/message_center_tray.h ('k') | ui/message_center/message_center_tray_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/message_center/message_center_tray.cc
diff --git a/ui/message_center/message_center_tray.cc b/ui/message_center/message_center_tray.cc
index 58e5868a1e8b5edc329fabec409472ec80486f08..fff1fd25b220a9e6fbedc22b0e2030bd9166fb81 100644
--- a/ui/message_center/message_center_tray.cc
+++ b/ui/message_center/message_center_tray.cc
@@ -8,6 +8,7 @@
#include "base/strings/utf_string_conversions.h"
#include "grit/ui_strings.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/models/simple_menu_model.h"
#include "ui/message_center/message_center.h"
#include "ui/message_center/message_center_tray_delegate.h"
#include "ui/message_center/message_center_types.h"
@@ -15,6 +16,85 @@
namespace message_center {
+namespace {
+
+// Menu constants
+const int kTogglePermissionCommand = 0;
+const int kShowSettingsCommand = 1;
+
+// The model of the context menu for a notification card.
+class NotificationMenuModel : public ui::SimpleMenuModel,
+ public ui::SimpleMenuModel::Delegate {
+ public:
+ NotificationMenuModel(MessageCenterTray* tray,
+ const NotifierId& notifier_id,
+ const base::string16& display_source);
+ virtual ~NotificationMenuModel();
+
+ // Overridden from ui::SimpleMenuModel::Delegate:
+ 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:
+ MessageCenterTray* tray_;
+ NotifierId notifier_id_;
+ DISALLOW_COPY_AND_ASSIGN(NotificationMenuModel);
+};
+
+NotificationMenuModel::NotificationMenuModel(
+ MessageCenterTray* tray,
+ const NotifierId& notifier_id,
+ const base::string16& display_source)
+ : ui::SimpleMenuModel(this),
+ tray_(tray),
+ 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));
+}
+
+NotificationMenuModel::~NotificationMenuModel() {
+}
+
+bool NotificationMenuModel::IsCommandIdChecked(int command_id) const {
+ return false;
+}
+
+bool NotificationMenuModel::IsCommandIdEnabled(int command_id) const {
+ return tray_->delegate()->IsContextMenuEnabled();
+}
+
+bool NotificationMenuModel::GetAcceleratorForCommandId(
+ int command_id,
+ ui::Accelerator* accelerator) {
+ return false;
+}
+
+void NotificationMenuModel::ExecuteCommand(int command_id, int event_flags) {
+ switch (command_id) {
+ case kTogglePermissionCommand:
+ tray_->message_center()->DisableNotificationsByNotifier(notifier_id_);
+ break;
+ case kShowSettingsCommand:
+ tray_->ShowNotifierSettingsBubble();
+ break;
+ default:
+ NOTREACHED();
+ }
+}
+
+} // namespace
+
MessageCenterTray::MessageCenterTray(
MessageCenterTrayDelegate* delegate,
message_center::MessageCenter* message_center)
@@ -116,6 +196,13 @@ void MessageCenterTray::ShowNotifierSettingsBubble() {
NotifyMessageCenterTrayChanged();
}
+scoped_ptr<ui::MenuModel> MessageCenterTray::CreateNotificationMenuModel(
+ const NotifierId& notifier_id,
+ const base::string16& display_source) {
+ return scoped_ptr<ui::MenuModel>(new NotificationMenuModel(
+ this, notifier_id, display_source));
+}
+
void MessageCenterTray::OnNotificationAdded(
const std::string& notification_id) {
OnMessageCenterChanged();
« no previous file with comments | « ui/message_center/message_center_tray.h ('k') | ui/message_center/message_center_tray_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698