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

Side by Side Diff: chrome/browser/download/download_shelf_context_menu.cc

Issue 6974005: download: Add a GetMenuModel() that grabs the correct model. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698