172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/gtk/importer/import_progress_dialog_gtk.h"
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <gtk/gtk.h>
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/utf_string_conversions.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/importer_host.h"
13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/importer/importer_observer.h"
1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/gtk_util.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/chromium_strings.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h"
1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h"
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SetItemImportStatus(GtkWidget* label, int res_id, bool is_done) {
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string status = l10n_util::GetStringUTF8(res_id);
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Windows version of this has fancy throbbers to indicate progress. Here
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // we rely on text until we can have something equivalent on Linux.
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (is_done)
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    status = "\xE2\x9C\x94 " + status;  // U+2714 HEAVY CHECK MARK
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  else
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    status.append(" ...");
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_label_set_text(GTK_LABEL(label), status.c_str());
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// static
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid ImportProgressDialogGtk::StartImport(
36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    GtkWindow* parent,
37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    uint16 items,
38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    ImporterHost* importer_host,
39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    ImporterObserver* importer_observer,
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    const importer::SourceProfile& source_profile,
41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    Profile* profile,
42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    bool first_run) {
43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ImportProgressDialogGtk* dialog = new ImportProgressDialogGtk(
44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      parent,
45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      items,
46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      importer_host,
47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      importer_observer,
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      source_profile.importer_name,
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      source_profile.importer_type == importer::BOOKMARKS_HTML);
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // In headless mode it means that we don't show the progress window, but it
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // still need it to exist. No user interaction will be required.
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (!importer_host->is_headless())
54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    dialog->ShowDialog();
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  importer_host->StartImportSettings(
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      source_profile, profile, items, new ProfileWriter(profile), first_run);
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
60dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenImportProgressDialogGtk::ImportProgressDialogGtk(
61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    GtkWindow* parent,
62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    uint16 items,
63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    ImporterHost* importer_host,
64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    ImporterObserver* importer_observer,
65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    const string16& importer_name,
66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    bool bookmarks_import)
67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    : parent_(parent),
68dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      items_(items),
69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      importer_host_(importer_host),
70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      importer_observer_(importer_observer),
71dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      importing_(true) {
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  importer_host_->SetObserver(this);
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Build the dialog.
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  dialog_ = gtk_dialog_new_with_buttons(
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetStringUTF8(IDS_IMPORT_PROGRESS_TITLE).c_str(),
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      parent_,
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR),
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GTK_STOCK_CANCEL,
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      GTK_RESPONSE_REJECT,
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      NULL);
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  importer_host_->set_parent_window(GTK_WINDOW(dialog_));
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* content_area = GTK_DIALOG(dialog_)->vbox;
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_box_set_spacing(GTK_BOX(content_area), gtk_util::kContentAreaSpacing);
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* control_group = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* import_info = gtk_label_new(
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      l10n_util::GetStringFUTF8(IDS_IMPORT_PROGRESS_INFO,
91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                importer_name).c_str());
9272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  gtk_util::SetLabelWidth(import_info, 400);
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_box_pack_start(GTK_BOX(control_group), import_info, FALSE, FALSE, 0);
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GtkWidget* item_box = gtk_vbox_new(FALSE, gtk_util::kControlSpacing);
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
97dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  if (items_ & importer::HISTORY) {
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    history_ = gtk_label_new(
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        l10n_util::GetStringUTF8(IDS_IMPORT_PROGRESS_STATUS_HISTORY).c_str());
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_misc_set_alignment(GTK_MISC(history_), 0, 0.5);
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_box_pack_start(GTK_BOX(item_box), history_, FALSE, FALSE, 0);
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
104dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  if (items_ & importer::FAVORITES) {
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    bookmarks_ = gtk_label_new(
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        l10n_util::GetStringUTF8(IDS_IMPORT_PROGRESS_STATUS_BOOKMARKS).c_str());
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_misc_set_alignment(GTK_MISC(bookmarks_), 0, 0.5);
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_box_pack_start(GTK_BOX(item_box), bookmarks_, FALSE, FALSE, 0);
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
111dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  if (items_ & importer::SEARCH_ENGINES) {
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    search_engines_ = gtk_label_new(
113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        l10n_util::GetStringUTF8(IDS_IMPORT_PROGRESS_STATUS_SEARCH).c_str());
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_misc_set_alignment(GTK_MISC(search_engines_), 0, 0.5);
115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_box_pack_start(GTK_BOX(item_box), search_engines_, FALSE, FALSE, 0);
116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
118dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  if (items_ & importer::PASSWORDS) {
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    passwords_ = gtk_label_new(
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        l10n_util::GetStringUTF8(IDS_IMPORT_PROGRESS_STATUS_PASSWORDS).c_str());
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_misc_set_alignment(GTK_MISC(passwords_), 0, 0.5);
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    gtk_box_pack_start(GTK_BOX(item_box), passwords_, FALSE, FALSE, 0);
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_box_pack_start(GTK_BOX(control_group), gtk_util::IndentWidget(item_box),
126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     FALSE, FALSE, 0);
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_box_pack_start(GTK_BOX(content_area), control_group, FALSE, FALSE, 0);
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  g_signal_connect(dialog_, "response",
130dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                   G_CALLBACK(OnResponseThunk), this);
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_window_set_resizable(GTK_WINDOW(dialog_), FALSE);
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
134731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickImportProgressDialogGtk::~ImportProgressDialogGtk() {}
135731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
136dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid ImportProgressDialogGtk::OnResponse(GtkWidget* dialog, int response_id) {
137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (!importing_) {
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    CloseDialog();
139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return;
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Only response to the dialog is to close it so we hide immediately.
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_hide_all(dialog_);
144dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  if (response_id == GTK_RESPONSE_REJECT)
145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    importer_host_->Cancel();
146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid ImportProgressDialogGtk::ShowDialog() {
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gtk_widget_show_all(dialog_);
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
152dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid ImportProgressDialogGtk::CloseDialog() {
153dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  gtk_widget_destroy(dialog_);
154dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  dialog_ = NULL;
155dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  delete this;
156dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
158ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ImportProgressDialogGtk::ImportStarted() {
159ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  importing_ = true;
160ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
161ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
162dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid ImportProgressDialogGtk::ImportItemStarted(importer::ImportItem item) {
163dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  DCHECK(items_ & item);
164dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  switch (item) {
165dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::FAVORITES:
166dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(bookmarks_,
167dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_BOOKMARKS, false);
168dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
169dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::SEARCH_ENGINES:
170dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(search_engines_,
171dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_SEARCH, false);
172dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
173dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::PASSWORDS:
174dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(passwords_,
175dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_PASSWORDS, false);
176dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
177dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::HISTORY:
178dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(history_,
179dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_HISTORY, false);
180dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
181dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    default:
182dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
183dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  }
184dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
185dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
186dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid ImportProgressDialogGtk::ImportItemEnded(importer::ImportItem item) {
187dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  DCHECK(items_ & item);
188dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  switch (item) {
189dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::FAVORITES:
190dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(bookmarks_,
191dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_BOOKMARKS, true);
192dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
193dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::SEARCH_ENGINES:
194dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(search_engines_,
195dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_SEARCH, true);
196dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
197dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::PASSWORDS:
198dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(passwords_,
199dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_PASSWORDS, true);
200dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
201dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    case importer::HISTORY:
202dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      SetItemImportStatus(history_,
203dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          IDS_IMPORT_PROGRESS_STATUS_HISTORY, true);
204dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
205dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    default:
206dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      break;
207dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  }
208dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
209dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
210dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid ImportProgressDialogGtk::ImportEnded() {
211dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  importing_ = false;
212dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  importer_host_->SetObserver(NULL);
213dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  if (importer_observer_)
214dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    importer_observer_->ImportCompleted();
215dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  CloseDialog();
216dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
217dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
218dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace importer {
219dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
220dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid ShowImportProgressDialog(GtkWindow* parent,
221dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                              uint16 items,
222dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                              ImporterHost* importer_host,
223dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                              ImporterObserver* importer_observer,
224ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                              const SourceProfile& source_profile,
225dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                              Profile* profile,
226dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                              bool first_run) {
227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DCHECK_NE(0, items);
228dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ImportProgressDialogGtk::StartImport(
229ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      parent, items, importer_host, importer_observer, source_profile, profile,
230dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      first_run);
231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
232dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
233dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}  // namespace importer
234