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

Unified Diff: ash/shelf/shelf_item_context_menu.cc

Issue 107163005: [ash] Add TYPE_DIALOG and its item's LauncherContextMenu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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: ash/shelf/shelf_item_context_menu.cc
diff --git a/ash/shelf/shelf_item_context_menu.cc b/ash/shelf/shelf_item_context_menu.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0ea4c6359eace53f3cb36980b15cce4650765455
--- /dev/null
+++ b/ash/shelf/shelf_item_context_menu.cc
@@ -0,0 +1,129 @@
+// Copyright 2013 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.
+
+#include "ash/shelf/shelf_item_context_menu.h"
+
+#include "ash/root_window_controller.h"
+#include "ash/shelf/shelf_delegate.h"
+#include "ash/shelf/shelf_widget.h"
+#include "ash/shelf/shelf_window_watcher_item_delegate.h"
+#include "ash/shell_delegate.h"
+#include "grit/ash_strings.h"
+#include "ui/aura/window.h"
+#include "ui/base/l10n/l10n_util.h"
+
+#if defined(OS_CHROMEOS)
+#include "ash/desktop_background/user_wallpaper_delegate.h"
+#endif
+
+namespace ash {
+namespace internal {
+
+ShelfItemContextMenu::ShelfItemContextMenu(
+ ShelfWindowWatcherItemDelegate* item_delegate,
+ aura::Window* root_window)
+ : ui::SimpleMenuModel(this),
+ item_delegate_(item_delegate),
+ root_window_(root_window),
+ shell_(Shell::GetInstance()),
+ shelf_alignment_menu_(root_window) {
+ Init();
+}
+
+ShelfItemContextMenu::~ShelfItemContextMenu() {
+}
+
+void ShelfItemContextMenu::Init() {
+ AddItem(MENU_CLOSE,
+ l10n_util::GetStringUTF16(IDS_ASH_SHELF_CONTEXT_MENU_CLOSE));
+
+ AddSeparator(ui::NORMAL_SEPARATOR);
+
+ if (!IsFullScreenMode()) {
+ AddCheckItemWithStringId(MENU_AUTO_HIDE,
+ IDS_ASH_SHELF_CONTEXT_MENU_AUTO_HIDE);
+ }
+
+ if (ash::ShelfWidget::ShelfAlignmentAllowed()) {
+ AddSubMenuWithStringId(MENU_ALIGNMENT_MENU,
+ IDS_ASH_SHELF_CONTEXT_MENU_POSITION,
+ &shelf_alignment_menu_);
+ }
+
+#if defined(OS_CHROMEOS)
+ AddItem(MENU_CHANGE_WALLPAPER,
+ l10n_util::GetStringUTF16(IDS_AURA_SET_DESKTOP_WALLPAPER));
+#endif
+}
+
+bool ShelfItemContextMenu::IsCommandIdChecked(int command_id) const {
+ switch (command_id) {
+ case MENU_AUTO_HIDE:
+ return shell_->GetShelfAutoHideBehavior(root_window_) ==
+ SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
+ default:
+ return false;
+ }
+}
+
+bool ShelfItemContextMenu::IsCommandIdEnabled(int command_id) const {
+ switch (command_id) {
+ case MENU_CLOSE:
+ return true;
+ case MENU_AUTO_HIDE:
+ return shell_->GetShelfDelegate()->
+ CanUserModifyShelfAutoHideBehavior(root_window_);
+ case MENU_ALIGNMENT_MENU:
+ return ShelfWidget::ShelfAlignmentAllowed() ? true : false;
+#if defined(OS_CHROMEOS)
+ case MENU_CHANGE_WALLPAPER:
+ return shell_->user_wallpaper_delegate()->CanOpenSetWallpaperPage();
+#endif
+ default:
+ return false;
+ }
+}
+
+bool ShelfItemContextMenu::GetAcceleratorForCommandId(
+ int command_id,
+ ui::Accelerator* accelerator) {
+ return false;
+}
+
+void ShelfItemContextMenu::ExecuteCommand(int command_id, int event_flags) {
+ switch (command_id) {
+ case MENU_CLOSE:
+ item_delegate_->Close();
+ shell_->delegate()->RecordUserMetricsAction(
+ ash::UMA_CLOSE_THROUGH_CONTEXT_MENU);
+ break;
+ case MENU_AUTO_HIDE:
+ ToggleShelfAutoHideBehavior();
+ break;
+ case MENU_ALIGNMENT_MENU:
+ break;
+#if defined(OS_CHROMEOS)
+ case MENU_CHANGE_WALLPAPER:
+ shell_->user_wallpaper_delegate()->OpenSetWallpaperPage();
+ break;
+#endif
+ }
+}
+
+bool ShelfItemContextMenu::IsFullScreenMode() const {
+ RootWindowController* controller = GetRootWindowController(root_window_);
+ return controller && !!controller->GetWindowForFullscreenMode();
+}
+
+void ShelfItemContextMenu::ToggleShelfAutoHideBehavior() const {
+ ShelfAutoHideBehavior behavior =
+ shell_->GetShelfAutoHideBehavior(root_window_);
+ behavior = (behavior == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) ?
+ SHELF_AUTO_HIDE_BEHAVIOR_NEVER :
+ SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
+ shell_->SetShelfAutoHideBehavior(behavior, root_window_);
+}
+
+} // namespace internal
+} // namespace ash

Powered by Google App Engine
This is Rietveld 408576698