OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/download/download_shelf_context_menu.h" | 5 #include "chrome/browser/download/download_shelf_context_menu.h" |
6 | 6 |
7 #include "chrome/browser/download/download_item.h" | 7 #include "chrome/browser/download/download_item.h" |
8 #include "chrome/browser/download/download_item_model.h" | 8 #include "chrome/browser/download/download_item_model.h" |
9 #include "grit/generated_resources.h" | 9 #include "grit/generated_resources.h" |
10 #include "ui/base/l10n/l10n_util.h" | 10 #include "ui/base/l10n/l10n_util.h" |
11 | 11 |
12 DownloadShelfContextMenu::~DownloadShelfContextMenu() {} | 12 DownloadShelfContextMenu::~DownloadShelfContextMenu() {} |
13 | 13 |
14 DownloadShelfContextMenu::DownloadShelfContextMenu( | 14 DownloadShelfContextMenu::DownloadShelfContextMenu( |
15 BaseDownloadItemModel* download_model) | 15 BaseDownloadItemModel* download_model) |
16 : download_model_(download_model), | 16 : download_model_(download_model), |
17 download_item_(download_model->download()) { | 17 download_item_(download_model->download()) { |
18 } | 18 } |
19 | 19 |
20 ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel() { | 20 ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() { |
21 if (in_progress_download_menu_model_.get()) | 21 return download_item_->IsComplete() ? GetFinishedMenuModel() |
22 return in_progress_download_menu_model_.get(); | 22 : GetInProgressMenuModel(); |
23 | |
24 in_progress_download_menu_model_.reset(new ui::SimpleMenuModel(this)); | |
25 | |
26 in_progress_download_menu_model_->AddCheckItemWithStringId( | |
27 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); | |
28 in_progress_download_menu_model_->AddCheckItemWithStringId( | |
29 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); | |
30 in_progress_download_menu_model_->AddSeparator(); | |
31 in_progress_download_menu_model_->AddItemWithStringId( | |
32 TOGGLE_PAUSE, IDS_DOWNLOAD_MENU_PAUSE_ITEM); | |
33 in_progress_download_menu_model_->AddItemWithStringId( | |
34 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); | |
35 in_progress_download_menu_model_->AddSeparator(); | |
36 in_progress_download_menu_model_->AddItemWithStringId( | |
37 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); | |
38 | |
39 return in_progress_download_menu_model_.get(); | |
40 } | |
41 | |
42 ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel() { | |
43 if (finished_download_menu_model_.get()) | |
44 return finished_download_menu_model_.get(); | |
45 | |
46 finished_download_menu_model_.reset(new ui::SimpleMenuModel(this)); | |
47 | |
48 finished_download_menu_model_->AddItemWithStringId( | |
49 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN); | |
50 finished_download_menu_model_->AddCheckItemWithStringId( | |
51 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); | |
52 finished_download_menu_model_->AddSeparator(); | |
53 finished_download_menu_model_->AddItemWithStringId( | |
54 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); | |
55 finished_download_menu_model_->AddSeparator(); | |
56 finished_download_menu_model_->AddItemWithStringId( | |
57 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); | |
58 | |
59 return finished_download_menu_model_.get(); | |
60 } | 23 } |
61 | 24 |
62 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { | 25 bool DownloadShelfContextMenu::IsCommandIdEnabled(int command_id) const { |
63 switch (command_id) { | 26 switch (command_id) { |
64 case SHOW_IN_FOLDER: | 27 case SHOW_IN_FOLDER: |
65 case OPEN_WHEN_COMPLETE: | 28 case OPEN_WHEN_COMPLETE: |
66 return !download_item_->IsCancelled(); | 29 return !download_item_->IsCancelled(); |
67 case ALWAYS_OPEN_TYPE: | 30 case ALWAYS_OPEN_TYPE: |
68 return download_item_->CanOpenDownload(); | 31 return download_item_->CanOpenDownload(); |
69 case CANCEL: | 32 case CANCEL: |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 if (download_item_->IsInProgress()) | 95 if (download_item_->IsInProgress()) |
133 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); | 96 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); |
134 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); | 97 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN); |
135 case ALWAYS_OPEN_TYPE: | 98 case ALWAYS_OPEN_TYPE: |
136 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); | 99 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); |
137 case CANCEL: | 100 case CANCEL: |
138 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); | 101 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_CANCEL); |
139 case TOGGLE_PAUSE: { | 102 case TOGGLE_PAUSE: { |
140 if (download_item_->is_paused()) | 103 if (download_item_->is_paused()) |
141 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); | 104 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_RESUME_ITEM); |
142 else | 105 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); |
143 return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PAUSE_ITEM); | |
144 } | 106 } |
145 default: | 107 default: |
146 NOTREACHED(); | 108 NOTREACHED(); |
| 109 break; |
147 } | 110 } |
148 return string16(); | 111 return string16(); |
149 } | 112 } |
| 113 |
| 114 ui::SimpleMenuModel* DownloadShelfContextMenu::GetInProgressMenuModel() { |
| 115 if (in_progress_download_menu_model_.get()) |
| 116 return in_progress_download_menu_model_.get(); |
| 117 |
| 118 in_progress_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 119 |
| 120 in_progress_download_menu_model_->AddCheckItemWithStringId( |
| 121 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE); |
| 122 in_progress_download_menu_model_->AddCheckItemWithStringId( |
| 123 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); |
| 124 in_progress_download_menu_model_->AddSeparator(); |
| 125 in_progress_download_menu_model_->AddItemWithStringId( |
| 126 TOGGLE_PAUSE, IDS_DOWNLOAD_MENU_PAUSE_ITEM); |
| 127 in_progress_download_menu_model_->AddItemWithStringId( |
| 128 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); |
| 129 in_progress_download_menu_model_->AddSeparator(); |
| 130 in_progress_download_menu_model_->AddItemWithStringId( |
| 131 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); |
| 132 |
| 133 return in_progress_download_menu_model_.get(); |
| 134 } |
| 135 |
| 136 ui::SimpleMenuModel* DownloadShelfContextMenu::GetFinishedMenuModel() { |
| 137 if (finished_download_menu_model_.get()) |
| 138 return finished_download_menu_model_.get(); |
| 139 |
| 140 finished_download_menu_model_.reset(new ui::SimpleMenuModel(this)); |
| 141 |
| 142 finished_download_menu_model_->AddItemWithStringId( |
| 143 OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN); |
| 144 finished_download_menu_model_->AddCheckItemWithStringId( |
| 145 ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE); |
| 146 finished_download_menu_model_->AddSeparator(); |
| 147 finished_download_menu_model_->AddItemWithStringId( |
| 148 SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW); |
| 149 finished_download_menu_model_->AddSeparator(); |
| 150 finished_download_menu_model_->AddItemWithStringId( |
| 151 CANCEL, IDS_DOWNLOAD_MENU_CANCEL); |
| 152 |
| 153 return finished_download_menu_model_.get(); |
| 154 } |
OLD | NEW |