summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/sync_setup_wizard_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/gtk/sync_setup_wizard_gtk.cc')
-rw-r--r--chrome/browser/gtk/sync_setup_wizard_gtk.cc121
1 files changed, 121 insertions, 0 deletions
diff --git a/chrome/browser/gtk/sync_setup_wizard_gtk.cc b/chrome/browser/gtk/sync_setup_wizard_gtk.cc
new file mode 100644
index 0000000..e2f46a9
--- /dev/null
+++ b/chrome/browser/gtk/sync_setup_wizard_gtk.cc
@@ -0,0 +1,121 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/gtk/sync_setup_wizard_gtk.h"
+
+#include "chrome/browser/browser_list.h"
+#include "chrome/browser/browser_window.h"
+#include "chrome/browser/sync/profile_sync_service.h"
+#include "chrome/browser/views/sync/sync_setup_wizard.h"
+#include "chrome/common/gtk_util.h"
+
+SyncSetupWizard::SyncSetupWizard(ProfileSyncService* service)
+ : username_textbox_(NULL),
+ password_textbox_(NULL),
+ service_(service),
+ visible_(false) {
+}
+
+SyncSetupWizard::~SyncSetupWizard() {
+}
+
+void SyncSetupWizard::Step(State advance_state) {
+ switch (advance_state) {
+ case GAIA_LOGIN:
+ SyncSetupWizardGtk::Show(service_, this);
+ break;
+ case GAIA_SUCCESS:
+ case MERGE_AND_SYNC:
+ case FATAL_ERROR:
+ case DONE:
+ // TODO(zork): Implement
+ break;
+ default:
+ NOTREACHED();
+ }
+}
+
+bool SyncSetupWizard::IsVisible() const {
+ return visible_;
+}
+
+// static
+void SyncSetupWizardGtk::Show(ProfileSyncService* service,
+ SyncSetupWizard *wizard) {
+ Browser* b = BrowserList::GetLastActive();
+ new SyncSetupWizardGtk(b->window()->GetNativeHandle(), service, wizard);
+}
+
+SyncSetupWizardGtk::SyncSetupWizardGtk(GtkWindow* parent,
+ ProfileSyncService* service,
+ SyncSetupWizard *wizard)
+ : service_(service),
+ wizard_(wizard) {
+ // TODO(zork): Put in proper localized strings.
+ //
+ // Build the dialog.
+ GtkWidget* dialog = gtk_dialog_new_with_buttons(
+ "Setting up Bookmarks Sync",
+ parent,
+ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR),
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT,
+ NULL);
+ gtk_util::AddButtonToDialog(dialog,
+ "Accept",
+ GTK_STOCK_APPLY, GTK_RESPONSE_ACCEPT);
+
+ GtkWidget* content_area = GTK_DIALOG(dialog)->vbox;
+ gtk_box_set_spacing(GTK_BOX(content_area), gtk_util::kContentAreaSpacing);
+
+ GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
+ gtk_container_add(GTK_CONTAINER(content_area), vbox);
+
+ // Description.
+ GtkWidget* description = gtk_label_new(
+ "Google Chrome can store your bookmark data with your Google account.\n"
+ "Bookmarks that you create on this computer will instantly be made\n"
+ "available on all the computers synced to this account.\n");
+ gtk_misc_set_alignment(GTK_MISC(description), 0, 0);
+ gtk_container_add(GTK_CONTAINER(content_area), description);
+
+ // Label on top of the username.
+ GtkWidget* email = gtk_label_new("Email:");
+ gtk_misc_set_alignment(GTK_MISC(email), 0, 0);
+ gtk_container_add(GTK_CONTAINER(content_area), email);
+
+ // Username text box
+ username_textbox_= gtk_entry_new();
+ gtk_container_add(GTK_CONTAINER(content_area), username_textbox_);
+
+ // Label on top of the password.
+ GtkWidget* password = gtk_label_new("Password:");
+ gtk_misc_set_alignment(GTK_MISC(password), 0, 0);
+ gtk_container_add(GTK_CONTAINER(content_area), password);
+
+ // Password text box
+ password_textbox_= gtk_entry_new();
+ gtk_entry_set_visibility(GTK_ENTRY(password_textbox_), FALSE);
+ gtk_container_add(GTK_CONTAINER(content_area), password_textbox_);
+
+ g_signal_connect(dialog, "response",
+ G_CALLBACK(HandleOnResponseDialog), this);
+ gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
+ gtk_widget_show_all(dialog);
+}
+
+void SyncSetupWizardGtk::OnDialogResponse(GtkWidget* widget, int response) {
+ wizard_->SetVisible(false);
+ if (response == GTK_RESPONSE_ACCEPT) {
+ service_->OnUserSubmittedAuth(
+ gtk_entry_get_text(GTK_ENTRY(username_textbox_)),
+ gtk_entry_get_text(GTK_ENTRY(password_textbox_)));
+
+ service_->SetSyncSetupCompleted();
+ }
+ service_->OnUserCancelledDialog();
+
+ delete this;
+ gtk_widget_destroy(GTK_WIDGET(widget));
+}