1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be
3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file.
4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_UI_GTK_IMPORTER_IMPORT_PROGRESS_DIALOG_GTK_H_
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_GTK_IMPORTER_IMPORT_PROGRESS_DIALOG_GTK_H_
7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#pragma once
8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/basictypes.h"
10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/compiler_specific.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h"
12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/importer/importer_data_types.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/importer_progress_observer.h"
14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "ui/base/gtk/gtk_signal.h"
15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ImporterHost;
17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass ImporterObserver;
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Profile;
19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsentypedef struct _GtkWidget Widget;
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsentypedef struct _GtkWindow GtkWindow;
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ImportProgressDialogGtk : public importer::ImporterProgressObserver {
24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public:
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Displays the import progress dialog box and starts the import process.
26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  static void StartImport(GtkWindow* parent,
27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          uint16 items,
28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          ImporterHost* importer_host,
29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          ImporterObserver* importer_observer,
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                          const importer::SourceProfile& source_profile,
31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          Profile* profile,
32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          bool first_run);
33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private:
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ImportProgressDialogGtk(GtkWindow* parent,
36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          uint16 items,
37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          ImporterHost* importer_host,
38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          ImporterObserver* importer_observer,
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                          const string16& importer_name,
40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                          bool bookmarks_import);
41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual ~ImportProgressDialogGtk();
42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  CHROMEGTK_CALLBACK_1(ImportProgressDialogGtk, void, OnResponse, int);
44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  void ShowDialog();
46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  void CloseDialog();
48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // importer::ImporterProgressObserver:
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void ImportStarted() OVERRIDE;
51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual void ImportItemStarted(importer::ImportItem item) OVERRIDE;
52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual void ImportItemEnded(importer::ImportItem item) OVERRIDE;
53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual void ImportEnded() OVERRIDE;
54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
55dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Parent window.
56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  GtkWindow* parent_;
57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Import progress dialog.
59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  GtkWidget* dialog_;
60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Bookmarks/Favorites checkbox.
62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  GtkWidget* bookmarks_;
63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Search Engines checkbox.
65dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  GtkWidget* search_engines_;
66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Passwords checkbox.
68dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  GtkWidget* passwords_;
69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // History checkbox.
71dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  GtkWidget* history_;
72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
73dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Items to import from the other browser.
74dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  uint16 items_;
75dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
76dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Utility class that does the actual import.
77dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_refptr<ImporterHost> importer_host_;
78dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
79dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Observer that we need to notify about import events.
80dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ImporterObserver* importer_observer_;
81dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
82dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // True if the import operation is in progress.
83dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  bool importing_;
84dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
85dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  DISALLOW_COPY_AND_ASSIGN(ImportProgressDialogGtk);
86dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen};
87dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
88dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif  // CHROME_BROWSER_UI_GTK_IMPORTER_IMPORT_PROGRESS_DIALOG_GTK_H_
89