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

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: Add enum 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..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() {
+}

Powered by Google App Engine
This is Rietveld 408576698