OLD | NEW |
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 "chrome/browser/ui/views/ash/launcher/launcher_context_menu.h" | 5 #include "chrome/browser/ui/views/ash/launcher/launcher_context_menu.h" |
6 | 6 |
7 #include "ash/launcher/launcher_context_menu.h" | 7 #include "ash/launcher/launcher_context_menu.h" |
8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
| 9 #include "chrome/browser/extensions/extension_prefs.h" |
9 #include "chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.h" | 10 #include "chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.h" |
10 #include "grit/generated_resources.h" | 11 #include "grit/generated_resources.h" |
11 #include "ui/base/l10n/l10n_util.h" | 12 #include "ui/base/l10n/l10n_util.h" |
12 | 13 |
13 LauncherContextMenu::LauncherContextMenu(ChromeLauncherDelegate* delegate, | 14 LauncherContextMenu::LauncherContextMenu(ChromeLauncherDelegate* delegate, |
14 const ash::LauncherItem* item) | 15 const ash::LauncherItem* item) |
15 : ui::SimpleMenuModel(NULL), | 16 : ui::SimpleMenuModel(NULL), |
16 delegate_(delegate), | 17 delegate_(delegate), |
17 item_(item ? *item : ash::LauncherItem()) { | 18 item_(item ? *item : ash::LauncherItem()) { |
18 set_delegate(this); | 19 set_delegate(this); |
19 | 20 |
20 if (is_valid_item()) { | 21 if (is_valid_item()) { |
21 if (item_.type == ash::TYPE_APP_SHORTCUT) { | 22 if (item_.type == ash::TYPE_APP_SHORTCUT) { |
22 DCHECK(delegate->IsPinned(item_.id)); | 23 DCHECK(delegate->IsPinned(item_.id)); |
23 AddItem( | 24 AddItem( |
24 MENU_PIN, | 25 MENU_PIN, |
25 l10n_util::GetStringUTF16(IDS_LAUNCHER_CONTEXT_MENU_UNPIN)); | 26 l10n_util::GetStringUTF16(IDS_LAUNCHER_CONTEXT_MENU_UNPIN)); |
| 27 AddSeparator(); |
26 AddCheckItemWithStringId( | 28 AddCheckItemWithStringId( |
27 LAUNCH_TYPE_REGULAR_TAB, | 29 LAUNCH_TYPE_REGULAR_TAB, |
28 IDS_APP_CONTEXT_MENU_OPEN_REGULAR); | 30 IDS_APP_CONTEXT_MENU_OPEN_REGULAR); |
29 AddCheckItemWithStringId( | 31 AddCheckItemWithStringId( |
| 32 LAUNCH_TYPE_PINNED_TAB, |
| 33 IDS_APP_CONTEXT_MENU_OPEN_PINNED); |
| 34 AddCheckItemWithStringId( |
30 LAUNCH_TYPE_WINDOW, | 35 LAUNCH_TYPE_WINDOW, |
31 IDS_APP_CONTEXT_MENU_OPEN_WINDOW); | 36 IDS_APP_CONTEXT_MENU_OPEN_WINDOW); |
| 37 AddCheckItemWithStringId( |
| 38 LAUNCH_TYPE_FULLSCREEN, |
| 39 IDS_APP_CONTEXT_MENU_OPEN_FULLSCREEN); |
32 } else { | 40 } else { |
33 AddItem(MENU_OPEN, delegate->GetTitle(item_)); | 41 AddItem(MENU_OPEN, delegate->GetTitle(item_)); |
34 if (delegate->IsOpen(item_.id)) { | 42 if (delegate->IsOpen(item_.id)) { |
35 AddItem(MENU_CLOSE, | 43 AddItem(MENU_CLOSE, |
36 l10n_util::GetStringUTF16(IDS_LAUNCHER_CONTEXT_MENU_CLOSE)); | 44 l10n_util::GetStringUTF16(IDS_LAUNCHER_CONTEXT_MENU_CLOSE)); |
37 } | 45 } |
38 } | 46 } |
39 AddSeparator(); | 47 AddSeparator(); |
40 } | 48 } |
41 AddCheckItemWithStringId( | 49 AddCheckItemWithStringId( |
42 MENU_AUTO_HIDE, ash::LauncherContextMenu::GetAutoHideResourceStringId()); | 50 MENU_AUTO_HIDE, ash::LauncherContextMenu::GetAutoHideResourceStringId()); |
43 } | 51 } |
44 | 52 |
45 LauncherContextMenu::~LauncherContextMenu() { | 53 LauncherContextMenu::~LauncherContextMenu() { |
46 } | 54 } |
47 | 55 |
48 bool LauncherContextMenu::IsCommandIdChecked(int command_id) const { | 56 bool LauncherContextMenu::IsCommandIdChecked(int command_id) const { |
49 switch (command_id) { | 57 switch (command_id) { |
| 58 case LAUNCH_TYPE_PINNED_TAB: |
| 59 return delegate_->GetLaunchType(item_.id) == |
| 60 ExtensionPrefs::LAUNCH_PINNED; |
50 case LAUNCH_TYPE_REGULAR_TAB: | 61 case LAUNCH_TYPE_REGULAR_TAB: |
51 return delegate_->GetAppType(item_.id) == | 62 return delegate_->GetLaunchType(item_.id) == |
52 ChromeLauncherDelegate::APP_TYPE_TAB; | 63 ExtensionPrefs::LAUNCH_REGULAR; |
53 case LAUNCH_TYPE_WINDOW: | 64 case LAUNCH_TYPE_WINDOW: |
54 return delegate_->GetAppType(item_.id) == | 65 return delegate_->GetLaunchType(item_.id) == |
55 ChromeLauncherDelegate::APP_TYPE_WINDOW; | 66 ExtensionPrefs::LAUNCH_WINDOW; |
| 67 case LAUNCH_TYPE_FULLSCREEN: |
| 68 return delegate_->GetLaunchType(item_.id) == |
| 69 ExtensionPrefs::LAUNCH_FULLSCREEN; |
56 case MENU_AUTO_HIDE: | 70 case MENU_AUTO_HIDE: |
57 return ash::LauncherContextMenu::IsAutoHideMenuHideChecked(); | 71 return ash::LauncherContextMenu::IsAutoHideMenuHideChecked(); |
58 default: | 72 default: |
59 return false; | 73 return false; |
60 } | 74 } |
61 } | 75 } |
62 | 76 |
63 bool LauncherContextMenu::IsCommandIdEnabled(int command_id) const { | 77 bool LauncherContextMenu::IsCommandIdEnabled(int command_id) const { |
64 return true; | 78 return true; |
65 } | 79 } |
66 | 80 |
67 bool LauncherContextMenu::GetAcceleratorForCommandId( | 81 bool LauncherContextMenu::GetAcceleratorForCommandId( |
68 int command_id, | 82 int command_id, |
69 ui::Accelerator* accelerator) { | 83 ui::Accelerator* accelerator) { |
70 return false; | 84 return false; |
71 } | 85 } |
72 | 86 |
73 void LauncherContextMenu::ExecuteCommand(int command_id) { | 87 void LauncherContextMenu::ExecuteCommand(int command_id) { |
74 switch (static_cast<MenuItem>(command_id)) { | 88 switch (static_cast<MenuItem>(command_id)) { |
75 case MENU_OPEN: | 89 case MENU_OPEN: |
76 delegate_->Open(item_.id); | 90 delegate_->Open(item_.id); |
77 break; | 91 break; |
78 case MENU_CLOSE: | 92 case MENU_CLOSE: |
79 delegate_->Close(item_.id); | 93 delegate_->Close(item_.id); |
80 break; | 94 break; |
81 case MENU_PIN: | 95 case MENU_PIN: |
82 delegate_->TogglePinned(item_.id); | 96 delegate_->TogglePinned(item_.id); |
83 break; | 97 break; |
| 98 case LAUNCH_TYPE_PINNED_TAB: |
| 99 delegate_->SetLaunchType(item_.id, ExtensionPrefs::LAUNCH_PINNED); |
| 100 break; |
84 case LAUNCH_TYPE_REGULAR_TAB: | 101 case LAUNCH_TYPE_REGULAR_TAB: |
85 delegate_->SetAppType(item_.id, ChromeLauncherDelegate::APP_TYPE_TAB); | 102 delegate_->SetLaunchType(item_.id, ExtensionPrefs::LAUNCH_REGULAR); |
86 break; | 103 break; |
87 case LAUNCH_TYPE_WINDOW: | 104 case LAUNCH_TYPE_WINDOW: |
88 delegate_->SetAppType(item_.id, ChromeLauncherDelegate::APP_TYPE_WINDOW); | 105 delegate_->SetLaunchType(item_.id, ExtensionPrefs::LAUNCH_WINDOW); |
| 106 break; |
| 107 case LAUNCH_TYPE_FULLSCREEN: |
| 108 delegate_->SetLaunchType(item_.id, ExtensionPrefs::LAUNCH_FULLSCREEN); |
89 break; | 109 break; |
90 case MENU_AUTO_HIDE: | 110 case MENU_AUTO_HIDE: |
91 return ash::LauncherContextMenu::ToggleAutoHideMenu(); | 111 return ash::LauncherContextMenu::ToggleAutoHideMenu(); |
92 } | 112 } |
93 } | 113 } |
OLD | NEW |