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

Unified Diff: chrome/browser/media_galleries/media_galleries_dialog_controller.cc

Issue 37553002: [MediaGalleries] Add context menu for forgetting galleries. [views] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dlgfix
Patch Set: Inline menu text command Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media_galleries/media_galleries_dialog_controller.cc
diff --git a/chrome/browser/media_galleries/media_galleries_dialog_controller.cc b/chrome/browser/media_galleries/media_galleries_dialog_controller.cc
index e4202eb976fd7a6f45bfd004678d2f049835b53a..5e9b259cd096d4428cab6af314f629f1d6146b50 100644
--- a/chrome/browser/media_galleries/media_galleries_dialog_controller.cc
+++ b/chrome/browser/media_galleries/media_galleries_dialog_controller.cc
@@ -22,6 +22,7 @@
#include "content/public/browser/web_contents_view.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/models/simple_menu_model.h"
#include "ui/base/text/bytes_formatting.h"
using extensions::APIPermission;
@@ -44,6 +45,40 @@ bool GalleriesVectorComparator(
} // namespace
+class GalleryContextMenuModel : public ui::SimpleMenuModel::Delegate {
+ public:
+ explicit GalleryContextMenuModel(MediaGalleriesDialogController* controller)
+ : controller_(controller), id_(kInvalidMediaGalleryPrefId) {}
+ virtual ~GalleryContextMenuModel() {}
+
+ void set_media_gallery_pref_id(MediaGalleryPrefId id) {
+ id_ = id;
+ }
+
+ virtual bool IsCommandIdChecked(int command_id) const OVERRIDE {
+ return false;
+ }
+ virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE {
+ return true;
+ }
+ virtual bool IsCommandIdVisible(int command_id) const OVERRIDE {
+ return true;
+ }
+
+ virtual bool GetAcceleratorForCommandId(
+ int command_id, ui::Accelerator* accelerator) OVERRIDE {
+ return false;
+ }
+
+ virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE {
+ controller_->DidForgetGallery(id_);
+ }
+
+ private:
+ MediaGalleriesDialogController* controller_;
+ MediaGalleryPrefId id_;
+};
+
MediaGalleriesDialogController::MediaGalleriesDialogController(
content::WebContents* web_contents,
const Extension& extension,
@@ -60,6 +95,13 @@ MediaGalleriesDialogController::MediaGalleriesDialogController(
preferences_->EnsureInitialized(
base::Bind(&MediaGalleriesDialogController::OnPreferencesInitialized,
base::Unretained(this)));
+
+ gallery_menu_model_.reset(new GalleryContextMenuModel(this));
+ ui::SimpleMenuModel* menu_model =
+ new ui::SimpleMenuModel(gallery_menu_model_.get());
+ menu_model->AddItem(
+ 1, l10n_util::GetStringUTF16(IDS_MEDIA_GALLERIES_DIALOG_DELETE));
+ context_menu_model_.reset(menu_model);
}
void MediaGalleriesDialogController::OnPreferencesInitialized() {
@@ -218,6 +260,12 @@ void MediaGalleriesDialogController::DidToggleNewGallery(
}
}
+void MediaGalleriesDialogController::DidForgetGallery(
+ MediaGalleryPrefId pref_id) {
+ DCHECK(preferences_);
+ preferences_->ForgetGalleryById(pref_id);
+}
+
void MediaGalleriesDialogController::DialogFinished(bool accepted) {
// The dialog has finished, so there is no need to watch for more updates
// from |preferences_|. Do this here and not in the dtor since this is the
@@ -412,6 +460,12 @@ void MediaGalleriesDialogController::UpdateGalleriesOnDeviceEvent(
dialog_->UpdateGalleries();
}
+ui::MenuModel* MediaGalleriesDialogController::GetContextMenuModel(
+ MediaGalleryPrefId id) {
+ gallery_menu_model_->set_media_gallery_pref_id(id);
+ return context_menu_model_.get();
+}
+
// MediaGalleries dialog -------------------------------------------------------
MediaGalleriesDialog::~MediaGalleriesDialog() {}

Powered by Google App Engine
This is Rietveld 408576698