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..02bb3444fe847b8ad9130cc65bff101c5d4aa736 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" |
+#include "base/i18n/rtl.h" |
akalin
2012/05/24 18:42:04
sort (i18n goes before logging)
Roger Tawa OOO till Jul 10th
2012/05/24 19:08:33
this is the correct sorting, since we should keep
|
#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); |
@@ -81,6 +68,16 @@ OneClickSigninBubbleGtk::OneClickSigninBubbleGtk( |
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. |
+ 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_box_pack_end(GTK_BOX(bottom_line), |
+ undo_button, FALSE, FALSE, 0); |
+ |
GtkWidget* const app_menu_widget = |
browser_window_gtk->GetToolbar()->GetAppMenuButton(); |
gfx::Rect bounds = gtk_util::WidgetBounds(app_menu_widget); |
@@ -98,6 +95,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 +106,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(); |
+} |
+ |
+void OneClickSigninBubbleGtk::OnClickUndo(GtkWidget* link) { |
+ start_sync_callback_.Reset(); |
bubble_->Close(); |
} |
-OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() {} |
+OneClickSigninBubbleGtk::~OneClickSigninBubbleGtk() { |
+} |