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_VIEWS_IMPORTER_IMPORT_PROGRESS_DIALOG_VIEW_H_
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_VIEWS_IMPORTER_IMPORT_PROGRESS_DIALOG_VIEW_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"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/importer/importer_data_types.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/importer_progress_observer.h"
15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "views/view.h"
16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "views/window/dialog_delegate.h"
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ImporterHost;
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ImporterObserver;
20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace views {
22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass CheckmarkThrobber;
23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass Label;
24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass ImportProgressDialogView : public views::View,
27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                                 public views::DialogDelegate,
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                 public importer::ImporterProgressObserver {
29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public:
30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // |items| is a bitmask of importer::ImportItem being imported.
31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // |bookmark_import| is true if we're importing bookmarks from a
32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // bookmarks.html file.
33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ImportProgressDialogView(HWND parent_window,
34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                           uint16 items,
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                           ImporterHost* importer_host,
36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                           ImporterObserver* importer_observer,
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                           const string16& importer_name,
38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                           bool bookmarks_import);
39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual ~ImportProgressDialogView();
40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen protected:
42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // views::View:
43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual gfx::Size GetPreferredSize() OVERRIDE;
44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual void ViewHierarchyChanged(bool is_add,
45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                                    views::View* parent,
46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                                    views::View* child) OVERRIDE;
47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // views::DialogDelegate:
49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual int GetDialogButtons() const OVERRIDE;
50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual std::wstring GetDialogButtonLabel(
51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      MessageBoxFlags::DialogButton button) const OVERRIDE;
52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual bool IsModal() const OVERRIDE;
53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual std::wstring GetWindowTitle() const OVERRIDE;
54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual bool Cancel() OVERRIDE;
55dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual views::View* GetContentsView() OVERRIDE;
56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private:
58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Set up the control layout within this dialog.
59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  void InitControlLayout();
60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // importer::ImporterProgressObserver:
62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void ImportStarted() OVERRIDE;
63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual void ImportItemStarted(importer::ImportItem item) OVERRIDE;
64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual void ImportItemEnded(importer::ImportItem item) OVERRIDE;
65dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual void ImportEnded() OVERRIDE;
66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // The native window that we are parented to. Can be NULL.
68dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  HWND parent_window_;
69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Various dialog controls.
71dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::CheckmarkThrobber> state_bookmarks_;
72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::CheckmarkThrobber> state_searches_;
73dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::CheckmarkThrobber> state_passwords_;
74dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::CheckmarkThrobber> state_history_;
75dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::CheckmarkThrobber> state_cookies_;
76dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  views::Label* label_info_;
77dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::Label> label_bookmarks_;
78dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::Label> label_searches_;
79dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::Label> label_passwords_;
80dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::Label> label_history_;
81dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_ptr<views::Label> label_cookies_;
82dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
83dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Items to import from the other browser
84dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  uint16 items_;
85dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
86dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Utility class that does the actual import.
87dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  scoped_refptr<ImporterHost> importer_host_;
88dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
89dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Observer that we need to notify about import events.
90dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ImporterObserver* importer_observer_;
91dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
92dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // True if the import operation is in progress.
93dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  bool importing_;
94dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
95dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Are we importing a bookmarks.html file?
96dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  bool bookmarks_import_;
97dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
98dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  DISALLOW_COPY_AND_ASSIGN(ImportProgressDialogView);
99dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen};
100dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
101dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif  // CHROME_BROWSER_UI_VIEWS_IMPORTER_IMPORT_PROGRESS_DIALOG_VIEW_H_
102