diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-20 21:35:32 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-20 21:35:32 +0000 |
commit | df0f6e8f05dcab26f0e53bda494cb0d22ae315d0 (patch) | |
tree | 117d1fc17719bff500b9f2c2552789dc23d83ebb /chrome/browser/gtk/collected_cookies_gtk.cc | |
parent | 706dbc20653f11019797dcb2bdfee2e9e83b0fba (diff) | |
download | chromium_src-df0f6e8f05dcab26f0e53bda494cb0d22ae315d0.zip chromium_src-df0f6e8f05dcab26f0e53bda494cb0d22ae315d0.tar.gz chromium_src-df0f6e8f05dcab26f0e53bda494cb0d22ae315d0.tar.bz2 |
Display an infobar when content settings were created.
The xib changes add a gradient view with an icon and a text field that is displayed as infobar. The text field is set to truncate. The blocked cookies label is set to wrap. The various views are connected to the new outlets.
win: http://imgur.com/OmTxr.png
linux: http://imgur.com/OmTxr
mac: http://imgur.com/VbwFp
BUG=49826
TEST=unit_tests
Review URL: http://codereview.chromium.org/3108029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56913 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/collected_cookies_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/collected_cookies_gtk.cc | 101 |
1 files changed, 95 insertions, 6 deletions
diff --git a/chrome/browser/gtk/collected_cookies_gtk.cc b/chrome/browser/gtk/collected_cookies_gtk.cc index 2992120..8d4dbf7 100644 --- a/chrome/browser/gtk/collected_cookies_gtk.cc +++ b/chrome/browser/gtk/collected_cookies_gtk.cc @@ -13,8 +13,56 @@ #include "grit/generated_resources.h" namespace { -// Height of the cookie tree view. +// Width and height of the cookie tree view. +const int kTreeViewWidth = 450; const int kTreeViewHeight = 150; + +// Padding within the banner box. +const int kBannerPadding = 3; + +// Returns the text to display in the info bar when content settings were +// created. +const std::string GetInfobarLabel(ContentSetting setting, + bool multiple_domains_added, + const string16& domain_name) { + if (multiple_domains_added) { + switch (setting) { + case CONTENT_SETTING_BLOCK: + return l10n_util::GetStringUTF8( + IDS_COLLECTED_COOKIES_MULTIPLE_BLOCK_RULES_CREATED); + + case CONTENT_SETTING_ALLOW: + return l10n_util::GetStringUTF8( + IDS_COLLECTED_COOKIES_MULTIPLE_ALLOW_RULES_CREATED); + + case CONTENT_SETTING_SESSION_ONLY: + return l10n_util::GetStringUTF8( + IDS_COLLECTED_COOKIES_MULTIPLE_SESSION_RULES_CREATED); + + default: + NOTREACHED(); + return std::string(); + } + } + + switch (setting) { + case CONTENT_SETTING_BLOCK: + return l10n_util::GetStringFUTF8( + IDS_COLLECTED_COOKIES_BLOCK_RULE_CREATED, domain_name); + + case CONTENT_SETTING_ALLOW: + return l10n_util::GetStringFUTF8( + IDS_COLLECTED_COOKIES_ALLOW_RULE_CREATED, domain_name); + + case CONTENT_SETTING_SESSION_ONLY: + return l10n_util::GetStringFUTF8( + IDS_COLLECTED_COOKIES_SESSION_RULE_CREATED, domain_name); + + default: + NOTREACHED(); + return std::string(); + } +} } // namespace CollectedCookiesGtk::CollectedCookiesGtk(GtkWindow* parent, @@ -29,6 +77,9 @@ CollectedCookiesGtk::CollectedCookiesGtk(GtkWindow* parent, } void CollectedCookiesGtk::Init() { + HostContentSettingsMap* host_content_settings_map = + tab_contents_->profile()->GetHostContentSettingsMap(); + dialog_ = gtk_vbox_new(FALSE, gtk_util::kContentAreaSpacing); gtk_box_set_spacing(GTK_BOX(dialog_), gtk_util::kContentAreaSpacing); @@ -63,7 +114,7 @@ void CollectedCookiesGtk::Init() { new gtk_tree::TreeAdapter(this, allowed_cookies_tree_model_.get())); allowed_tree_ = gtk_tree_view_new_with_model( GTK_TREE_MODEL(allowed_cookies_tree_adapter_->tree_store())); - gtk_widget_set_size_request(allowed_tree_, -1, kTreeViewHeight); + gtk_widget_set_size_request(allowed_tree_, kTreeViewWidth, kTreeViewHeight); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(allowed_tree_), FALSE); gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(allowed_tree_), TRUE); gtk_container_add(GTK_CONTAINER(scroll_window), allowed_tree_); @@ -99,15 +150,22 @@ void CollectedCookiesGtk::Init() { G_CALLBACK(OnBlockAllowedButtonClickedThunk), this); gtk_container_add(GTK_CONTAINER(button_box), block_allowed_cookie_button_); + GtkWidget* separator = gtk_hseparator_new(); + gtk_box_pack_start(GTK_BOX(dialog_), separator, TRUE, TRUE, 0); + // Blocked Cookie list. cookie_list_vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); gtk_box_pack_start(GTK_BOX(dialog_), cookie_list_vbox, TRUE, TRUE, 0); label = gtk_label_new( - l10n_util::GetStringUTF8(IDS_COLLECTED_COOKIES_BLOCKED_COOKIES_LABEL). - c_str()); + l10n_util::GetStringUTF8( + host_content_settings_map->BlockThirdPartyCookies() ? + IDS_COLLECTED_COOKIES_BLOCKED_THIRD_PARTY_BLOCKING_ENABLED : + IDS_COLLECTED_COOKIES_BLOCKED_COOKIES_LABEL).c_str()); + gtk_widget_set_size_request(label, kTreeViewWidth, -1); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(cookie_list_vbox), label, TRUE, TRUE, 0); scroll_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), @@ -123,7 +181,7 @@ void CollectedCookiesGtk::Init() { new gtk_tree::TreeAdapter(this, blocked_cookies_tree_model_.get())); blocked_tree_ = gtk_tree_view_new_with_model( GTK_TREE_MODEL(blocked_cookies_tree_adapter_->tree_store())); - gtk_widget_set_size_request(blocked_tree_, -1, kTreeViewHeight); + gtk_widget_set_size_request(blocked_tree_, kTreeViewWidth, kTreeViewHeight); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(blocked_tree_), FALSE); gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(blocked_tree_), TRUE); gtk_container_add(GTK_CONTAINER(scroll_window), blocked_tree_); @@ -166,6 +224,24 @@ void CollectedCookiesGtk::Init() { gtk_container_add(GTK_CONTAINER(button_box), for_session_blocked_cookie_button_); + // Infobar. + infobar_ = gtk_frame_new(NULL); + GtkWidget* infobar_contents = gtk_hbox_new(FALSE, kBannerPadding); + gtk_container_set_border_width(GTK_CONTAINER(infobar_contents), + kBannerPadding); + gtk_container_add(GTK_CONTAINER(infobar_), infobar_contents); + GtkWidget* info_image = + gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO, + GTK_ICON_SIZE_SMALL_TOOLBAR); + gtk_box_pack_start(GTK_BOX(infobar_contents), info_image, FALSE, FALSE, 0); + infobar_label_ = gtk_label_new(NULL); + gtk_box_pack_start( + GTK_BOX(infobar_contents), infobar_label_, FALSE, FALSE, 0); + gtk_widget_show_all(infobar_); + gtk_widget_set_no_show_all(infobar_, TRUE); + gtk_widget_hide(infobar_); + gtk_box_pack_start(GTK_BOX(dialog_), infobar_, TRUE, TRUE, 0); + // Close button. button_box = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(button_box), GTK_BUTTONBOX_END); @@ -259,6 +335,8 @@ void CollectedCookiesGtk::AddExceptions(GtkTreeSelection* selection, GtkTreeModel* model; GList* paths = gtk_tree_selection_get_selected_rows(selection, &model); + string16 last_domain_name; + bool multiple_domains_added = false; for (GList* item = paths; item; item = item->next) { GtkTreeIter iter; gtk_tree_model_get_iter( @@ -266,12 +344,23 @@ void CollectedCookiesGtk::AddExceptions(GtkTreeSelection* selection, CookieTreeOriginNode* node = static_cast<CookieTreeOriginNode*>( adapter->GetNode(&iter)); if (node->CanCreateContentException()) { + if (!last_domain_name.empty()) + multiple_domains_added = true; + last_domain_name = node->GetTitleAsString16(); node->CreateContentException( tab_contents_->profile()->GetHostContentSettingsMap(), setting); } } g_list_foreach(paths, reinterpret_cast<GFunc>(gtk_tree_path_free), NULL); g_list_free(paths); + if (last_domain_name.empty()) { + gtk_widget_hide(infobar_); + } else { + gtk_label_set_text( + GTK_LABEL(infobar_label_), GetInfobarLabel( + setting, multiple_domains_added, last_domain_name).c_str()); + gtk_widget_show(infobar_); + } } void CollectedCookiesGtk::OnBlockAllowedButtonClicked(GtkWidget* button) { |