diff options
Diffstat (limited to 'chrome/browser/gtk/sync_setup_wizard_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/sync_setup_wizard_gtk.cc | 121 |
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)); +} |