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

Unified Diff: chrome/browser/ui/gtk/bookmarks/bookmark_sub_menu_model_gtk.cc

Issue 231733005: Delete the GTK+ port of Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remerge to ToT Created 6 years, 8 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/ui/gtk/bookmarks/bookmark_sub_menu_model_gtk.cc
diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_sub_menu_model_gtk.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_sub_menu_model_gtk.cc
deleted file mode 100644
index b073de680c7b732c608fa3d72371245d65152f9f..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/gtk/bookmarks/bookmark_sub_menu_model_gtk.cc
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/gtk/bookmarks/bookmark_sub_menu_model_gtk.h"
-
-#include "base/stl_util.h"
-#include "base/strings/string16.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/app/chrome_command_ids.h"
-#include "chrome/browser/bookmarks/bookmark_model.h"
-#include "chrome/browser/bookmarks/bookmark_model_factory.h"
-#include "chrome/browser/bookmarks/bookmark_stats.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/gtk/bookmarks/bookmark_utils_gtk.h"
-#include "chrome/browser/ui/gtk/gtk_theme_service.h"
-#include "chrome/browser/ui/gtk/menu_gtk.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#include "ui/base/accelerators/menu_label_accelerator_util_linux.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/base/window_open_disposition.h"
-
-using content::OpenURLParams;
-using content::PageNavigator;
-
-// Per chrome/app/chrome_command_ids.h, values < 4000 are for "dynamic menu
-// items". We only use one command id for all the bookmarks, because we handle
-// bookmark item activations directly. So we pick a suitably large random value
-// and use that to avoid accidental conflicts with other dynamic items.
-static const int kBookmarkItemCommandId = 1759;
-
-BookmarkNodeMenuModel::BookmarkNodeMenuModel(
- ui::SimpleMenuModel::Delegate* delegate,
- BookmarkModel* model,
- const BookmarkNode* node,
- PageNavigator* page_navigator,
- Profile* profile)
- : SimpleMenuModel(delegate),
- model_(model),
- node_(node),
- page_navigator_(page_navigator),
- profile_(profile) {
- DCHECK(page_navigator_);
-}
-
-BookmarkNodeMenuModel::~BookmarkNodeMenuModel() {
- Clear();
-}
-
-void BookmarkNodeMenuModel::Clear() {
- SimpleMenuModel::Clear();
- STLDeleteElements(&submenus_);
-}
-
-void BookmarkNodeMenuModel::MenuWillShow() {
- Clear();
- PopulateMenu();
-}
-
-void BookmarkNodeMenuModel::MenuClosed() {
- Clear();
-}
-
-void BookmarkNodeMenuModel::ActivatedAt(int index) {
- NavigateToMenuItem(index, CURRENT_TAB);
-}
-
-void BookmarkNodeMenuModel::ActivatedAt(int index, int event_flags) {
- NavigateToMenuItem(index, ui::DispositionFromEventFlags(event_flags));
-}
-
-void BookmarkNodeMenuModel::PopulateMenu() {
- DCHECK(submenus_.empty());
- for (int i = 0; i < node_->child_count(); ++i) {
- const BookmarkNode* child = node_->GetChild(i);
- if (child->is_folder()) {
- AddSubMenuForNode(child);
- } else {
- // Ironically the label will end up getting converted back to UTF8 later.
- // We need to escape any Windows-style "&" characters since they will be
- // converted in MenuGtk outside of our control here.
- const base::string16 label = base::UTF8ToUTF16(
- ui::EscapeWindowsStyleAccelerators(BuildMenuLabelFor(child)));
- // No command id. We override ActivatedAt below to handle activations.
- AddItem(kBookmarkItemCommandId, label);
- GdkPixbuf* node_icon = GetPixbufForNode(
- child,
- model_,
- GtkThemeService::GetFrom(profile_)->UsingNativeTheme());
- SetIcon(GetItemCount() - 1, gfx::Image(node_icon));
- // TODO(mdm): set up an observer to watch for icon load events and set
- // the icons in response.
- }
- }
-}
-
-void BookmarkNodeMenuModel::AddSubMenuForNode(const BookmarkNode* node) {
- DCHECK(node->is_folder());
- // Ironically the label will end up getting converted back to UTF8 later.
- // We need to escape any Windows-style "&" characters since they will be
- // converted in MenuGtk outside of our control here.
- const base::string16 label = base::UTF8ToUTF16(
- ui::EscapeWindowsStyleAccelerators(BuildMenuLabelFor(node)));
- // Don't pass in the delegate, if any. Bookmark submenus don't need one.
- BookmarkNodeMenuModel* submenu =
- new BookmarkNodeMenuModel(NULL, model_, node, page_navigator_, profile_);
- // No command id. Nothing happens if you click on the submenu itself.
- AddSubMenu(kBookmarkItemCommandId, label, submenu);
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- const gfx::Image& folder_icon = rb.GetImageNamed(IDR_BOOKMARK_BAR_FOLDER);
- SetIcon(GetItemCount() - 1, folder_icon);
- submenus_.push_back(submenu);
-}
-
-void BookmarkNodeMenuModel::NavigateToMenuItem(
- int index,
- WindowOpenDisposition disposition) {
- const BookmarkNode* node = node_->GetChild(index);
- DCHECK(node);
- RecordBookmarkLaunch(node, BOOKMARK_LAUNCH_LOCATION_WRENCH_MENU);
- page_navigator_->OpenURL(OpenURLParams(
- node->url(), content::Referrer(), disposition,
- content::PAGE_TRANSITION_AUTO_BOOKMARK,
- false)); // is_renderer_initiated
-}
-
-BookmarkSubMenuModel::BookmarkSubMenuModel(
- ui::SimpleMenuModel::Delegate* delegate,
- Browser* browser)
- : BookmarkNodeMenuModel(delegate, NULL, NULL, browser, browser->profile()),
- browser_(browser),
- fixed_items_(0),
- bookmark_end_(0),
- menu_(NULL),
- menu_showing_(false) {
-}
-
-BookmarkSubMenuModel::~BookmarkSubMenuModel() {
- if (model())
- model()->RemoveObserver(this);
-}
-
-void BookmarkSubMenuModel::BookmarkModelLoaded(BookmarkModel* model,
- bool ids_reassigned) {
- // For now, just close the menu when the bookmarks are finished loading.
- // TODO(mdm): it would be slicker to just populate the menu while it's open.
- BookmarkModelChanged();
-}
-
-void BookmarkSubMenuModel::BookmarkModelChanged() {
- if (menu_showing_ && menu_)
- menu_->Cancel();
-}
-
-void BookmarkSubMenuModel::BookmarkModelBeingDeleted(
- BookmarkModel* model) {
- set_model(NULL);
- // All our submenus will still have pointers to the model, but this call
- // should force the menu to close, which will cause them to be deleted.
- BookmarkModelChanged();
-}
-
-void BookmarkSubMenuModel::MenuWillShow() {
- menu_showing_ = true;
- Clear();
- AddCheckItemWithStringId(IDC_SHOW_BOOKMARK_BAR, IDS_SHOW_BOOKMARK_BAR);
- AddItemWithStringId(IDC_SHOW_BOOKMARK_MANAGER, IDS_BOOKMARK_MANAGER);
- AddItemWithStringId(IDC_IMPORT_SETTINGS, IDS_IMPORT_SETTINGS_MENU_LABEL);
- AddSeparator(ui::NORMAL_SEPARATOR);
- AddItemWithStringId(IDC_BOOKMARK_PAGE, IDS_BOOKMARK_THIS_PAGE);
- AddItemWithStringId(IDC_BOOKMARK_ALL_TABS, IDS_BOOKMARK_OPEN_PAGES);
- fixed_items_ = bookmark_end_ = GetItemCount();
- if (!model()) {
- set_model(BookmarkModelFactory::GetForProfile(browser_->profile()));
- if (!model())
- return;
- model()->AddObserver(this);
- }
- // We can't do anything further if the model isn't loaded yet.
- if (!model()->loaded())
- return;
- // The node count includes the node itself, so 1 means empty.
- if (model()->bookmark_bar_node()->GetTotalNodeCount() > 1) {
- AddSeparator(ui::NORMAL_SEPARATOR);
- fixed_items_ = GetItemCount();
- if (!node())
- set_node(model()->bookmark_bar_node());
- // PopulateMenu() won't clear the items we added above.
- PopulateMenu();
- }
- bookmark_end_ = GetItemCount();
-
- // We want only one separator after the top-level bookmarks and before the
- // other node and/or mobile node.
- AddSeparator(ui::NORMAL_SEPARATOR);
- if (model()->other_node()->GetTotalNodeCount() > 1)
- AddSubMenuForNode(model()->other_node());
- if (model()->mobile_node()->GetTotalNodeCount() > 1)
- AddSubMenuForNode(model()->mobile_node());
- RemoveTrailingSeparators();
-}
-
-void BookmarkSubMenuModel::MenuClosed() {
- menu_showing_ = false;
- BookmarkNodeMenuModel::MenuClosed();
-}
-
-void BookmarkSubMenuModel::ActivatedAt(int index) {
- // Because this is also overridden in BookmarkNodeMenuModel which doesn't know
- // we might be prepending items, we have to adjust the index for it.
- if (index >= fixed_items_ && index < bookmark_end_)
- BookmarkNodeMenuModel::ActivatedAt(index - fixed_items_);
- else
- SimpleMenuModel::ActivatedAt(index);
-}
-
-void BookmarkSubMenuModel::ActivatedAt(int index, int event_flags) {
- // Because this is also overridden in BookmarkNodeMenuModel which doesn't know
- // we might be prepending items, we have to adjust the index for it.
- if (index >= fixed_items_ && index < bookmark_end_)
- BookmarkNodeMenuModel::ActivatedAt(index - fixed_items_, event_flags);
- else
- SimpleMenuModel::ActivatedAt(index, event_flags);
-}
-
-bool BookmarkSubMenuModel::IsEnabledAt(int index) const {
- // We don't want the delegate interfering with bookmark items.
- return index >= fixed_items_ || SimpleMenuModel::IsEnabledAt(index);
-}
-
-bool BookmarkSubMenuModel::IsVisibleAt(int index) const {
- // We don't want the delegate interfering with bookmark items.
- return index >= fixed_items_ || SimpleMenuModel::IsVisibleAt(index);
-}
-
-// static
-bool BookmarkSubMenuModel::IsBookmarkItemCommandId(int command_id) {
- return command_id == kBookmarkItemCommandId;
-}

Powered by Google App Engine
This is Rietveld 408576698