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

Unified Diff: chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc

Issue 10332185: Update behavior of one-click infobar to remove modal dialog, add "undo". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make GTK ok and undo buttons the same size horizontally Created 8 years, 7 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/one_click_signin_bubble_gtk.cc
diff --git a/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc b/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc
index 74d8dae8fd89941ad3c8de45957637b657155995..63fac7a84b6501cbbb749f8f827a68e7e1994f8f 100644
--- a/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc
+++ b/chrome/browser/ui/gtk/one_click_signin_bubble_gtk.cc
@@ -6,8 +6,9 @@
#include <gtk/gtk.h>
-#include "base/i18n/rtl.h"
+#include "base/callback_helpers.h"
#include "base/logging.h"
Peter Kasting 2012/05/24 22:25:18 Nit: Alphabetize
Roger Tawa OOO till Jul 10th 2012/05/25 16:04:08 I thought that the order of #includes is also base
Peter Kasting 2012/05/25 16:58:06 Nope, unix sort.
+#include "base/i18n/rtl.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/gtk/browser_toolbar_gtk.h"
#include "chrome/browser/ui/gtk/browser_window_gtk.h"
@@ -26,11 +27,9 @@ const int kContentBorder = 7;
OneClickSigninBubbleGtk::OneClickSigninBubbleGtk(
BrowserWindowGtk* browser_window_gtk,
- const base::Closure& learn_more_callback,
- const base::Closure& advanced_callback)
+ const BrowserWindow::StartSyncCallback& start_sync_callback)
: bubble_(NULL),
- learn_more_callback_(learn_more_callback),
- advanced_callback_(advanced_callback) {
+ start_sync_callback_(start_sync_callback) {
// Setup the BubbleGtk content.
GtkWidget* bubble_content = gtk_vbox_new(FALSE, 0);
@@ -49,18 +48,6 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk(
GtkThemeService* const theme_provider = GtkThemeService::GetFrom(
browser_window_gtk->browser()->profile());
- GtkWidget* learn_more_line = gtk_hbox_new(FALSE, kContentBorder);
- gtk_box_pack_start(GTK_BOX(bubble_content),
- learn_more_line, FALSE, FALSE, 0);
-
- // Learn more link.
- GtkWidget* learn_more_link = theme_provider->BuildChromeLinkButton(
- l10n_util::GetStringUTF8(IDS_SYNC_PROMO_NTP_BUBBLE_LEARN_MORE));
- g_signal_connect(learn_more_link, "clicked",
- G_CALLBACK(OnClickLearnMoreLinkThunk), this);
- gtk_box_pack_start(GTK_BOX(learn_more_line),
- learn_more_link, FALSE, FALSE, 0);
-
GtkWidget* bottom_line = gtk_hbox_new(FALSE, kContentBorder);
gtk_box_pack_start(GTK_BOX(bubble_content),
bottom_line, FALSE, FALSE, 0);
@@ -73,14 +60,31 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk(
gtk_box_pack_start(GTK_BOX(bottom_line),
advanced_link, FALSE, FALSE, 0);
+ // Make the OK and Undo buttons the same size horizontally.
+ GtkSizeGroup* size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+
// OK Button.
GtkWidget* ok_button = gtk_button_new_with_label(
l10n_util::GetStringUTF8(IDS_OK).c_str());
g_signal_connect(ok_button, "clicked",
G_CALLBACK(OnClickOKThunk), this);
+ gtk_size_group_add_widget(size_group, ok_button);
gtk_box_pack_end(GTK_BOX(bottom_line),
ok_button, FALSE, FALSE, 0);
+ // Undo Button.
+ // TODO(akalin): at the moment, the OK and undo buttons are not the same
+ // size and look kind of ugly. Figure out how to make it nicer.
Peter Kasting 2012/05/24 22:25:18 This comment seems out of date?
Roger Tawa OOO till Jul 10th 2012/05/25 16:04:08 Done.
+ GtkWidget* undo_button = gtk_button_new_with_label(
+ l10n_util::GetStringUTF8(IDS_ONE_CLICK_BUBBLE_UNDO).c_str());
+ g_signal_connect(undo_button, "clicked",
+ G_CALLBACK(OnClickUndoThunk), this);
+ gtk_size_group_add_widget(size_group, undo_button);
+ gtk_box_pack_end(GTK_BOX(bottom_line),
+ undo_button, FALSE, FALSE, 0);
+
+ g_object_unref(size_group);
+
GtkWidget* const app_menu_widget =
browser_window_gtk->GetToolbar()->GetAppMenuButton();
gfx::Rect bounds = gtk_util::WidgetBounds(app_menu_widget);
@@ -98,6 +102,10 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk(
void OneClickSigninBubbleGtk::BubbleClosing(
BubbleGtk* bubble, bool closed_by_escape) {
+ if (!start_sync_callback_.is_null())
+ base::ResetAndReturn(&start_sync_callback_).Run(
+ OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
+
delete this;
}
@@ -105,26 +113,34 @@ void OneClickSigninBubbleGtk::ClickOKForTest() {
OnClickOK(NULL);
}
-void OneClickSigninBubbleGtk::ClickLearnMoreForTest() {
- OnClickLearnMoreLink(NULL);
+void OneClickSigninBubbleGtk::ClickUndoForTest() {
+ OnClickUndo(NULL);
}
void OneClickSigninBubbleGtk::ClickAdvancedForTest() {
OnClickAdvancedLink(NULL);
}
-void OneClickSigninBubbleGtk::OnClickLearnMoreLink(GtkWidget* link) {
- learn_more_callback_.Run();
+void OneClickSigninBubbleGtk::CloseForTest() {
bubble_->Close();
}
void OneClickSigninBubbleGtk::OnClickAdvancedLink(GtkWidget* link) {
- advanced_callback_.Run();
+ base::ResetAndReturn(&start_sync_callback_).Run(
+ OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST);
bubble_->Close();
}
void OneClickSigninBubbleGtk::OnClickOK(GtkWidget* link) {
+ base::ResetAndReturn(&start_sync_callback_).Run(
+ OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
bubble_->Close();
}
-OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() {}
+void OneClickSigninBubbleGtk::OnClickUndo(GtkWidget* link) {
+ start_sync_callback_.Reset();
+ bubble_->Close();
+}
+
+OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() {
+}

Powered by Google App Engine
This is Rietveld 408576698