diff options
author | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-18 00:57:49 +0000 |
---|---|---|
committer | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-18 00:57:49 +0000 |
commit | 44b2c885548d647611d908309dfdf6306eac7ed8 (patch) | |
tree | c46fd5199ac07df770ca9b01a0b73dc594b6d63d /chrome/browser/cocoa/bookmark_menu_bridge.h | |
parent | 9eef357377e89bffd2d5ff9fad9de0c94d8cc934 (diff) | |
download | chromium_src-44b2c885548d647611d908309dfdf6306eac7ed8.zip chromium_src-44b2c885548d647611d908309dfdf6306eac7ed8.tar.gz chromium_src-44b2c885548d647611d908309dfdf6306eac7ed8.tar.bz2 |
Mac bookmark work.
- The bookmark menu is populated dynamically with bookmarks, including
subfolders --> submenus. E.g. star something --> shows up in menu.
Menu items are disabled but always present and current.
- Always Show Bookmarks" menu now live; reads from / writes to
preference, and shows correct "toggle state".
- Bookmark bar on each tab, present if requested. (Currently an empty box).
- Random stuff; e.g. bookmark prefs init moved to a x-plat location.
This CL does not contain Cole's views.
Bried english description of the nib file changes:
- add a new view for the bookmark bar in the tab; hook it up to the controller
- Many tag sets (e.g. View-->Always Show Bookmarks Bar now 40009)
- Remove dummy bookmark menu items
Review URL: http://codereview.chromium.org/46078
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11936 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/bookmark_menu_bridge.h')
-rw-r--r-- | chrome/browser/cocoa/bookmark_menu_bridge.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/bookmark_menu_bridge.h b/chrome/browser/cocoa/bookmark_menu_bridge.h new file mode 100644 index 0000000..81ff98fc --- /dev/null +++ b/chrome/browser/cocoa/bookmark_menu_bridge.h @@ -0,0 +1,56 @@ +// Copyright (c) 2009 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. + +// C++ controller for the bookmark menu. When bookmarks are changed, +// this class takes care of updating Cocoa bookmark menus. This is +// not named BookmarkMenuController to help avoid confusion between +// languages. This class needs to be C++, not ObjC, since it derives +// from BookmarkModelObserver. + +#ifndef CHROME_BROWSER_COCOA_BOOKMARK_MENU_BRIDGE_H_ +#define CHROME_BROWSER_COCOA_BOOKMARK_MENU_BRIDGE_H_ + +#include "chrome/browser/bookmarks/bookmark_model.h" + + +class Browser; +@class NSMenu; + +class BookmarkMenuBridge : public BookmarkModelObserver { + public: + BookmarkMenuBridge(Browser* browser); + ~BookmarkMenuBridge(); + + // Overridden from BookmarkModelObserver + virtual void Loaded(BookmarkModel* model); + virtual void BookmarkNodeMoved(BookmarkModel* model, + BookmarkNode* old_parent, + int old_index, + BookmarkNode* new_parent, + int new_index); + virtual void BookmarkNodeAdded(BookmarkModel* model, + BookmarkNode* parent, + int index); + virtual void BookmarkNodeChanged(BookmarkModel* model, + BookmarkNode* node); + virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model, + BookmarkNode* node); + virtual void BookmarkNodeChildrenReordered(BookmarkModel* model, + BookmarkNode* node); + + protected: + // Clear all bookmarks from the given bookmark menu. + void ClearBookmarkMenu(NSMenu* menu); + + // Helper for recursively adding items to our bookmark menu + // All children of |node| will be added to |menu|. + // TODO(jrg): add a counter to enforce maximum nodes added + void AddNodeToMenu(BookmarkNode* node, NSMenu* menu); + + private: + friend class BookmarkMenuBridgeTest; + Browser* browser_; +}; + +#endif // CHROME_BROWSER_COCOA_BOOKMARK_MENU_BRIDGE_H_ |