| 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 |