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

Side by Side Diff: chrome/browser/ui/gtk/bookmarks/bookmark_bubble_gtk.h

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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This is the GTK implementation of the bookmark bubble, the dialog box
6 // presented to create or edit a bookmark. There can only ever be a single
7 // bubble open, so the class presents only static methods, and handles the
8 // singleton behavior for you. It also handles the object and widget
9 // lifetimes, destroying everything and possibly committing any changes when
10 // the bubble is closed.
11
12 #ifndef CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BUBBLE_GTK_H_
13 #define CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BUBBLE_GTK_H_
14
15 #include <string>
16 #include <vector>
17
18 #include "base/basictypes.h"
19 #include "base/compiler_specific.h"
20 #include "base/gtest_prod_util.h"
21 #include "base/memory/scoped_ptr.h"
22 #include "base/memory/weak_ptr.h"
23 #include "chrome/browser/ui/gtk/bubble/bubble_gtk.h"
24 #include "content/public/browser/notification_observer.h"
25 #include "content/public/browser/notification_registrar.h"
26 #include "ui/base/gtk/gtk_signal.h"
27 #include "url/gurl.h"
28
29 class BookmarkModel;
30 class Profile;
31 class RecentlyUsedFoldersComboModel;
32
33 typedef struct _GtkWidget GtkWidget;
34 typedef struct _GParamSpec GParamSpec;
35
36 class BookmarkBubbleGtk : public BubbleDelegateGtk,
37 public content::NotificationObserver {
38 public:
39 // Shows the bookmark bubble, pointing at |anchor_widget|.
40 static void Show(GtkWidget* anchor_widget,
41 Profile* profile,
42 const GURL& url,
43 bool newly_bookmarked);
44
45 // BubbleDelegateGtk:
46 virtual void BubbleClosing(BubbleGtk* bubble, bool closed_by_escape) OVERRIDE;
47
48 // content::NotificationObserver:
49 virtual void Observe(int type,
50 const content::NotificationSource& source,
51 const content::NotificationDetails& details) OVERRIDE;
52
53 private:
54 friend class BookmarkBubbleGtkBrowserTest;
55 FRIEND_TEST_ALL_PREFIXES(BookmarkBubbleGtkBrowserTest, SyncPromoSignedIn);
56 FRIEND_TEST_ALL_PREFIXES(BookmarkBubbleGtkBrowserTest, SyncPromoNotSignedIn);
57 FRIEND_TEST_ALL_PREFIXES(BookmarkBubbleGtkBrowserTest, SyncPromoLink);
58
59 BookmarkBubbleGtk(GtkWidget* anchor,
60 Profile* profile,
61 const GURL& url,
62 bool newly_bookmarked);
63 virtual ~BookmarkBubbleGtk();
64
65 // Notified when the content is destroyed so we can delete our instance.
66 CHROMEGTK_CALLBACK_0(BookmarkBubbleGtk, void, OnDestroy);
67 CHROMEGTK_CALLBACK_0(BookmarkBubbleGtk, void, OnNameActivate);
68 CHROMEGTK_CALLBACK_0(BookmarkBubbleGtk, void, OnFolderChanged);
69 CHROMEGTK_CALLBACK_0(BookmarkBubbleGtk, void, OnEditClicked);
70 CHROMEGTK_CALLBACK_0(BookmarkBubbleGtk, void, OnCloseClicked);
71 CHROMEGTK_CALLBACK_0(BookmarkBubbleGtk, void, OnRemoveClicked);
72 CHROMEGTK_CALLBACK_1(BookmarkBubbleGtk,
73 gboolean,
74 OnSignInClicked,
75 gchar*);
76 CHROMEGTK_CALLBACK_0(BookmarkBubbleGtk, void, OnSyncPromoRealize);
77 CHROMEGTK_CALLBACK_1(BookmarkBubbleGtk,
78 gboolean,
79 OnSyncPromoExpose,
80 GdkEventExpose*);
81
82 // Sets the colors used in the sync promo according to the current theme.
83 void UpdatePromoColors();
84
85 // Update the bookmark with any edits that have been made.
86 void ApplyEdits();
87
88 // Open the bookmark editor for the current url and close the bubble.
89 void ShowEditor();
90
91 // Return the UTF8 encoded title for the current |url_|.
92 std::string GetTitle();
93
94 void InitFolderComboModel();
95
96 // We basically have a singleton, since a bubble is sort of app-modal. This
97 // keeps track of the currently open bubble, or NULL if none is open.
98 static BookmarkBubbleGtk* bookmark_bubble_;
99
100 // The URL of the bookmark.
101 GURL url_;
102
103 // Our current profile (used to access the bookmark system).
104 Profile* profile_;
105
106 // This is owned by the Profile.
107 BookmarkModel* model_;
108
109 // Provides colors and stuff.
110 GtkThemeService* theme_service_;
111
112 // The widget relative to which we are positioned.
113 GtkWidget* anchor_;
114
115 // The button that removes the bookmark.
116 GtkWidget* remove_button_;
117
118 // The bookmark sync promo, if shown.
119 GtkWidget* promo_;
120
121 // The label in the bookmark sync promo, if shown.
122 GtkWidget* promo_label_;
123
124 // The various labels in the interface. We keep track of them for theme
125 // changes.
126 std::vector<GtkWidget*> labels_;
127
128 // The GtkEntry for editing the bookmark name / title.
129 GtkWidget* name_entry_;
130
131 // The combo box for selecting the bookmark folder.
132 GtkWidget* folder_combo_;
133 scoped_ptr<RecentlyUsedFoldersComboModel> folder_combo_model_;
134
135 BubbleGtk* bubble_;
136
137 // Whether the bubble is creating or editing an existing bookmark.
138 bool newly_bookmarked_;
139 // When closing the window, whether we should update or remove the bookmark.
140 bool apply_edits_;
141 bool remove_bookmark_;
142
143 content::NotificationRegistrar registrar_;
144
145 // We need to push some things on the back of the message loop, so we have
146 // a factory attached to our instance to manage task lifetimes.
147 base::WeakPtrFactory<BookmarkBubbleGtk> factory_;
148
149 DISALLOW_COPY_AND_ASSIGN(BookmarkBubbleGtk);
150 };
151
152 #endif // CHROME_BROWSER_UI_GTK_BOOKMARKS_BOOKMARK_BUBBLE_GTK_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698