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

Side by Side Diff: chrome/browser/ui/gtk/content_setting_bubble_gtk.cc

Issue 7749017: Revert "content: Start splitting up chrome/browser/ui/gtk/gtk_util.h" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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
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/ui/gtk/content_setting_bubble_gtk.h" 5 #include "chrome/browser/ui/gtk/content_setting_bubble_gtk.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/i18n/rtl.h" 11 #include "base/i18n/rtl.h"
12 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
13 #include "chrome/browser/content_settings/host_content_settings_map.h" 13 #include "chrome/browser/content_settings/host_content_settings_map.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" 15 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h"
16 #include "chrome/browser/ui/gtk/gtk_chrome_link_button.h" 16 #include "chrome/browser/ui/gtk/gtk_chrome_link_button.h"
17 #include "chrome/browser/ui/gtk/gtk_theme_service.h" 17 #include "chrome/browser/ui/gtk/gtk_theme_service.h"
18 #include "chrome/browser/ui/gtk/gtk_util.h" 18 #include "chrome/browser/ui/gtk/gtk_util.h"
19 #include "chrome/common/content_settings.h" 19 #include "chrome/common/content_settings.h"
20 #include "content/browser/tab_contents/tab_contents.h" 20 #include "content/browser/tab_contents/tab_contents.h"
21 #include "content/common/content_notification_types.h" 21 #include "content/common/content_notification_types.h"
22 #include "content/common/notification_source.h" 22 #include "content/common/notification_source.h"
23 #include "grit/generated_resources.h" 23 #include "grit/generated_resources.h"
24 #include "grit/ui_resources.h" 24 #include "grit/ui_resources.h"
25 #include "ui/base/gtk/gtk_hig_constants.h"
26 #include "ui/base/l10n/l10n_util.h" 25 #include "ui/base/l10n/l10n_util.h"
27 #include "ui/base/text/text_elider.h" 26 #include "ui/base/text/text_elider.h"
28 #include "ui/gfx/gtk_util.h" 27 #include "ui/gfx/gtk_util.h"
29 #include "webkit/plugins/npapi/plugin_list.h" 28 #include "webkit/plugins/npapi/plugin_list.h"
30 29
31 namespace { 30 namespace {
32 31
33 // Padding between content and edge of bubble. 32 // Padding between content and edge of bubble.
34 const int kContentBorder = 7; 33 const int kContentBorder = 7;
35 34
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 const NotificationSource& source, 81 const NotificationSource& source,
83 const NotificationDetails& details) { 82 const NotificationDetails& details) {
84 DCHECK(type == content::NOTIFICATION_TAB_CONTENTS_DESTROYED); 83 DCHECK(type == content::NOTIFICATION_TAB_CONTENTS_DESTROYED);
85 DCHECK(source == Source<TabContents>(tab_contents_)); 84 DCHECK(source == Source<TabContents>(tab_contents_));
86 tab_contents_ = NULL; 85 tab_contents_ = NULL;
87 } 86 }
88 87
89 void ContentSettingBubbleGtk::BuildBubble() { 88 void ContentSettingBubbleGtk::BuildBubble() {
90 GtkThemeService* theme_provider = GtkThemeService::GetFrom(profile_); 89 GtkThemeService* theme_provider = GtkThemeService::GetFrom(profile_);
91 90
92 GtkWidget* bubble_content = gtk_vbox_new(FALSE, ui::kControlSpacing); 91 GtkWidget* bubble_content = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
93 gtk_container_set_border_width(GTK_CONTAINER(bubble_content), kContentBorder); 92 gtk_container_set_border_width(GTK_CONTAINER(bubble_content), kContentBorder);
94 93
95 const ContentSettingBubbleModel::BubbleContent& content = 94 const ContentSettingBubbleModel::BubbleContent& content =
96 content_setting_bubble_model_->bubble_content(); 95 content_setting_bubble_model_->bubble_content();
97 if (!content.title.empty()) { 96 if (!content.title.empty()) {
98 // Add the content label. 97 // Add the content label.
99 GtkWidget* label = gtk_label_new(content.title.c_str()); 98 GtkWidget* label = gtk_label_new(content.title.c_str());
100 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); 99 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
101 gtk_box_pack_start(GTK_BOX(bubble_content), label, FALSE, FALSE, 0); 100 gtk_box_pack_start(GTK_BOX(bubble_content), label, FALSE, FALSE, 0);
102 } 101 }
103 102
104 const std::set<std::string>& plugins = content.resource_identifiers; 103 const std::set<std::string>& plugins = content.resource_identifiers;
105 if (!plugins.empty()) { 104 if (!plugins.empty()) {
106 GtkWidget* list_content = gtk_vbox_new(FALSE, ui::kControlSpacing); 105 GtkWidget* list_content = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
107 106
108 for (std::set<std::string>::const_iterator it = plugins.begin(); 107 for (std::set<std::string>::const_iterator it = plugins.begin();
109 it != plugins.end(); ++it) { 108 it != plugins.end(); ++it) {
110 std::string name = UTF16ToUTF8( 109 std::string name = UTF16ToUTF8(
111 webkit::npapi::PluginList::Singleton()->GetPluginGroupName(*it)); 110 webkit::npapi::PluginList::Singleton()->GetPluginGroupName(*it));
112 if (name.empty()) 111 if (name.empty())
113 name = *it; 112 name = *it;
114 113
115 GtkWidget* label = gtk_label_new(BuildElidedText(name).c_str()); 114 GtkWidget* label = gtk_label_new(BuildElidedText(name).c_str());
116 GtkWidget* label_box = gtk_hbox_new(FALSE, 0); 115 GtkWidget* label_box = gtk_hbox_new(FALSE, 0);
117 gtk_box_pack_start(GTK_BOX(label_box), label, FALSE, FALSE, 0); 116 gtk_box_pack_start(GTK_BOX(label_box), label, FALSE, FALSE, 0);
118 117
119 gtk_box_pack_start(GTK_BOX(list_content), 118 gtk_box_pack_start(GTK_BOX(list_content),
120 label_box, 119 label_box,
121 FALSE, FALSE, 0); 120 FALSE, FALSE, 0);
122 } 121 }
123 gtk_box_pack_start(GTK_BOX(bubble_content), list_content, FALSE, FALSE, 122 gtk_box_pack_start(GTK_BOX(bubble_content), list_content, FALSE, FALSE,
124 ui::kControlSpacing); 123 gtk_util::kControlSpacing);
125 } 124 }
126 125
127 if (content_setting_bubble_model_->content_type() == 126 if (content_setting_bubble_model_->content_type() ==
128 CONTENT_SETTINGS_TYPE_POPUPS) { 127 CONTENT_SETTINGS_TYPE_POPUPS) {
129 const std::vector<ContentSettingBubbleModel::PopupItem>& popup_items = 128 const std::vector<ContentSettingBubbleModel::PopupItem>& popup_items =
130 content.popup_items; 129 content.popup_items;
131 GtkWidget* table = gtk_table_new(popup_items.size(), 2, FALSE); 130 GtkWidget* table = gtk_table_new(popup_items.size(), 2, FALSE);
132 int row = 0; 131 int row = 0;
133 for (std::vector<ContentSettingBubbleModel::PopupItem>::const_iterator 132 for (std::vector<ContentSettingBubbleModel::PopupItem>::const_iterator
134 i(popup_items.begin()); i != popup_items.end(); ++i, ++row) { 133 i(popup_items.begin()); i != popup_items.end(); ++i, ++row) {
135 GtkWidget* image = gtk_image_new(); 134 GtkWidget* image = gtk_image_new();
136 if (!i->bitmap.empty()) { 135 if (!i->bitmap.empty()) {
137 GdkPixbuf* icon_pixbuf = gfx::GdkPixbufFromSkBitmap(&i->bitmap); 136 GdkPixbuf* icon_pixbuf = gfx::GdkPixbufFromSkBitmap(&i->bitmap);
138 gtk_image_set_from_pixbuf(GTK_IMAGE(image), icon_pixbuf); 137 gtk_image_set_from_pixbuf(GTK_IMAGE(image), icon_pixbuf);
139 g_object_unref(icon_pixbuf); 138 g_object_unref(icon_pixbuf);
140 139
141 // We stuff the image in an event box so we can trap mouse clicks on the 140 // We stuff the image in an event box so we can trap mouse clicks on the
142 // image (and launch the popup). 141 // image (and launch the popup).
143 GtkWidget* event_box = gtk_event_box_new(); 142 GtkWidget* event_box = gtk_event_box_new();
144 gtk_container_add(GTK_CONTAINER(event_box), image); 143 gtk_container_add(GTK_CONTAINER(event_box), image);
145 144
146 popup_icons_[event_box] = i -popup_items.begin(); 145 popup_icons_[event_box] = i -popup_items.begin();
147 g_signal_connect(event_box, "button_press_event", 146 g_signal_connect(event_box, "button_press_event",
148 G_CALLBACK(OnPopupIconButtonPressThunk), this); 147 G_CALLBACK(OnPopupIconButtonPressThunk), this);
149 gtk_table_attach(GTK_TABLE(table), event_box, 0, 1, row, row + 1, 148 gtk_table_attach(GTK_TABLE(table), event_box, 0, 1, row, row + 1,
150 GTK_FILL, GTK_FILL, ui::kControlSpacing / 2, 149 GTK_FILL, GTK_FILL, gtk_util::kControlSpacing / 2,
151 ui::kControlSpacing / 2); 150 gtk_util::kControlSpacing / 2);
152 } 151 }
153 152
154 GtkWidget* button = gtk_chrome_link_button_new( 153 GtkWidget* button = gtk_chrome_link_button_new(
155 BuildElidedText(i->title).c_str()); 154 BuildElidedText(i->title).c_str());
156 popup_links_[button] = i -popup_items.begin(); 155 popup_links_[button] = i -popup_items.begin();
157 g_signal_connect(button, "clicked", G_CALLBACK(OnPopupLinkClickedThunk), 156 g_signal_connect(button, "clicked", G_CALLBACK(OnPopupLinkClickedThunk),
158 this); 157 this);
159 gtk_table_attach(GTK_TABLE(table), button, 1, 2, row, row + 1, 158 gtk_table_attach(GTK_TABLE(table), button, 1, 2, row, row + 1,
160 GTK_FILL, GTK_FILL, ui::kControlSpacing / 2, 159 GTK_FILL, GTK_FILL, gtk_util::kControlSpacing / 2,
161 ui::kControlSpacing / 2); 160 gtk_util::kControlSpacing / 2);
162 } 161 }
163 162
164 gtk_box_pack_start(GTK_BOX(bubble_content), table, FALSE, FALSE, 0); 163 gtk_box_pack_start(GTK_BOX(bubble_content), table, FALSE, FALSE, 0);
165 } 164 }
166 165
167 const ContentSettingBubbleModel::RadioGroup& radio_group = 166 const ContentSettingBubbleModel::RadioGroup& radio_group =
168 content.radio_group; 167 content.radio_group;
169 for (ContentSettingBubbleModel::RadioItems::const_iterator i = 168 for (ContentSettingBubbleModel::RadioItems::const_iterator i =
170 radio_group.radio_items.begin(); 169 radio_group.radio_items.begin();
171 i != radio_group.radio_items.end(); ++i) { 170 i != radio_group.radio_items.end(); ++i) {
(...skipping 15 matching lines...) Expand all
187 for (std::vector<GtkWidget*>::const_iterator i = radio_group_gtk_.begin(); 186 for (std::vector<GtkWidget*>::const_iterator i = radio_group_gtk_.begin();
188 i != radio_group_gtk_.end(); ++i) { 187 i != radio_group_gtk_.end(); ++i) {
189 // We can attach signal handlers now that all defaults are set. 188 // We can attach signal handlers now that all defaults are set.
190 g_signal_connect(*i, "toggled", G_CALLBACK(OnRadioToggledThunk), this); 189 g_signal_connect(*i, "toggled", G_CALLBACK(OnRadioToggledThunk), this);
191 } 190 }
192 191
193 for (std::vector<ContentSettingBubbleModel::DomainList>::const_iterator i = 192 for (std::vector<ContentSettingBubbleModel::DomainList>::const_iterator i =
194 content.domain_lists.begin(); 193 content.domain_lists.begin();
195 i != content.domain_lists.end(); ++i) { 194 i != content.domain_lists.end(); ++i) {
196 // Put each list into its own vbox to allow spacing between lists. 195 // Put each list into its own vbox to allow spacing between lists.
197 GtkWidget* list_content = gtk_vbox_new(FALSE, ui::kControlSpacing); 196 GtkWidget* list_content = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
198 197
199 GtkWidget* label = gtk_label_new(BuildElidedText(i->title).c_str()); 198 GtkWidget* label = gtk_label_new(BuildElidedText(i->title).c_str());
200 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); 199 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
201 GtkWidget* label_box = gtk_hbox_new(FALSE, 0); 200 GtkWidget* label_box = gtk_hbox_new(FALSE, 0);
202 gtk_box_pack_start(GTK_BOX(label_box), label, FALSE, FALSE, 0); 201 gtk_box_pack_start(GTK_BOX(label_box), label, FALSE, FALSE, 0);
203 gtk_box_pack_start(GTK_BOX(list_content), label_box, FALSE, FALSE, 0); 202 gtk_box_pack_start(GTK_BOX(list_content), label_box, FALSE, FALSE, 0);
204 for (std::set<std::string>::const_iterator j = i->hosts.begin(); 203 for (std::set<std::string>::const_iterator j = i->hosts.begin();
205 j != i->hosts.end(); ++j) { 204 j != i->hosts.end(); ++j) {
206 gtk_box_pack_start(GTK_BOX(list_content), 205 gtk_box_pack_start(GTK_BOX(list_content),
207 gtk_util::IndentWidget(gtk_util::CreateBoldLabel(*j)), 206 gtk_util::IndentWidget(gtk_util::CreateBoldLabel(*j)),
208 FALSE, FALSE, 0); 207 FALSE, FALSE, 0);
209 } 208 }
210 gtk_box_pack_start(GTK_BOX(bubble_content), list_content, FALSE, FALSE, 209 gtk_box_pack_start(GTK_BOX(bubble_content), list_content, FALSE, FALSE,
211 ui::kControlSpacing); 210 gtk_util::kControlSpacing);
212 } 211 }
213 212
214 if (!content.custom_link.empty()) { 213 if (!content.custom_link.empty()) {
215 GtkWidget* custom_link_box = gtk_hbox_new(FALSE, 0); 214 GtkWidget* custom_link_box = gtk_hbox_new(FALSE, 0);
216 GtkWidget* custom_link = NULL; 215 GtkWidget* custom_link = NULL;
217 if (content.custom_link_enabled) { 216 if (content.custom_link_enabled) {
218 custom_link = gtk_chrome_link_button_new(content.custom_link.c_str()); 217 custom_link = gtk_chrome_link_button_new(content.custom_link.c_str());
219 g_signal_connect(custom_link, "clicked", 218 g_signal_connect(custom_link, "clicked",
220 G_CALLBACK(OnCustomLinkClickedThunk), this); 219 G_CALLBACK(OnCustomLinkClickedThunk), this);
221 } else { 220 } else {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 301
303 void ContentSettingBubbleGtk::OnCustomLinkClicked(GtkWidget* button) { 302 void ContentSettingBubbleGtk::OnCustomLinkClicked(GtkWidget* button) {
304 content_setting_bubble_model_->OnCustomLinkClicked(); 303 content_setting_bubble_model_->OnCustomLinkClicked();
305 Close(); 304 Close();
306 } 305 }
307 306
308 void ContentSettingBubbleGtk::OnManageLinkClicked(GtkWidget* button) { 307 void ContentSettingBubbleGtk::OnManageLinkClicked(GtkWidget* button) {
309 content_setting_bubble_model_->OnManageLinkClicked(); 308 content_setting_bubble_model_->OnManageLinkClicked();
310 Close(); 309 Close();
311 } 310 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/constrained_window_gtk.cc ('k') | chrome/browser/ui/gtk/create_application_shortcuts_dialog_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698