Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(866)

Side by Side Diff: chrome/browser/ui/views/importer/import_progress_dialog_view.cc

Issue 14322002: Remove unused ImportProgressDialog. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/importer/import_progress_dialog_view.h"
6
7 #include "chrome/browser/importer/importer_host.h"
8 #include "chrome/browser/importer/importer_observer.h"
9 #include "chrome/browser/importer/importer_progress_dialog.h"
10 #include "grit/chromium_strings.h"
11 #include "grit/generated_resources.h"
12 #include "grit/locale_settings.h"
13 #include "ui/base/l10n/l10n_util.h"
14 #include "ui/views/controls/label.h"
15 #include "ui/views/controls/throbber.h"
16 #include "ui/views/layout/grid_layout.h"
17 #include "ui/views/layout/layout_constants.h"
18 #include "ui/views/widget/widget.h"
19
20 ImportProgressDialogView::ImportProgressDialogView(
21 uint16 items,
22 ImporterHost* importer_host,
23 ImporterObserver* importer_observer,
24 const string16& importer_name,
25 bool bookmarks_import)
26 : state_bookmarks_(new views::CheckmarkThrobber),
27 state_searches_(new views::CheckmarkThrobber),
28 state_passwords_(new views::CheckmarkThrobber),
29 state_history_(new views::CheckmarkThrobber),
30 state_cookies_(new views::CheckmarkThrobber),
31 label_bookmarks_(new views::Label(
32 l10n_util::GetStringUTF16(IDS_IMPORT_PROGRESS_STATUS_BOOKMARKS))),
33 label_searches_(new views::Label(
34 l10n_util::GetStringUTF16(IDS_IMPORT_PROGRESS_STATUS_SEARCH))),
35 label_passwords_(new views::Label(
36 l10n_util::GetStringUTF16(IDS_IMPORT_PROGRESS_STATUS_PASSWORDS))),
37 label_history_(new views::Label(
38 l10n_util::GetStringUTF16(IDS_IMPORT_PROGRESS_STATUS_HISTORY))),
39 label_cookies_(new views::Label(
40 l10n_util::GetStringUTF16(IDS_IMPORT_PROGRESS_STATUS_COOKIES))),
41 items_(items),
42 importer_host_(importer_host),
43 importer_observer_(importer_observer),
44 importing_(true),
45 bookmarks_import_(bookmarks_import) {
46 const string16 info_text = bookmarks_import ?
47 l10n_util::GetStringUTF16(IDS_IMPORT_BOOKMARKS) :
48 l10n_util::GetStringFUTF16(IDS_IMPORT_PROGRESS_INFO, importer_name);
49 label_info_ = new views::Label(info_text);
50 label_info_->SetMultiLine(true);
51 label_info_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
52 label_bookmarks_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
53 label_searches_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
54 label_passwords_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
55 label_history_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
56 label_cookies_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
57
58 importer_host_->SetObserver(this);
59
60 // These are scoped pointers, so we don't need the parent to delete them.
61 state_bookmarks_->set_owned_by_client();
62 state_searches_->set_owned_by_client();
63 state_passwords_->set_owned_by_client();
64 state_history_->set_owned_by_client();
65 state_cookies_->set_owned_by_client();
66 label_bookmarks_->set_owned_by_client();
67 label_searches_->set_owned_by_client();
68 label_passwords_->set_owned_by_client();
69 label_history_->set_owned_by_client();
70 label_cookies_->set_owned_by_client();
71 }
72
73 ImportProgressDialogView::~ImportProgressDialogView() {
74 RemoveChildView(state_bookmarks_.get());
75 RemoveChildView(state_searches_.get());
76 RemoveChildView(state_passwords_.get());
77 RemoveChildView(state_history_.get());
78 RemoveChildView(state_cookies_.get());
79 RemoveChildView(label_bookmarks_.get());
80 RemoveChildView(label_searches_.get());
81 RemoveChildView(label_passwords_.get());
82 RemoveChildView(label_history_.get());
83 RemoveChildView(label_cookies_.get());
84
85 if (importing_) {
86 // We're being deleted while importing, clean up state so that the importer
87 // doesn't have a reference to us and cancel the import. We can get here
88 // if our parent window is closed, which closes our window and deletes us.
89 importing_ = false;
90 importer_host_->SetObserver(NULL);
91 importer_host_->Cancel();
92 if (importer_observer_)
93 importer_observer_->ImportCompleted();
94 }
95 }
96
97 gfx::Size ImportProgressDialogView::GetPreferredSize() {
98 return gfx::Size(views::Widget::GetLocalizedContentsSize(
99 IDS_IMPORTPROGRESS_DIALOG_WIDTH_CHARS,
100 IDS_IMPORTPROGRESS_DIALOG_HEIGHT_LINES));
101 }
102
103 void ImportProgressDialogView::ViewHierarchyChanged(bool is_add,
104 views::View* parent,
105 views::View* child) {
106 if (is_add && child == this)
107 InitControlLayout();
108 }
109
110 int ImportProgressDialogView::GetDialogButtons() const {
111 return ui::DIALOG_BUTTON_CANCEL;
112 }
113
114 string16 ImportProgressDialogView::GetDialogButtonLabel(
115 ui::DialogButton button) const {
116 DCHECK_EQ(button, ui::DIALOG_BUTTON_CANCEL);
117 return l10n_util::GetStringUTF16(IDS_IMPORT_PROGRESS_STATUS_CANCEL);
118 }
119
120 string16 ImportProgressDialogView::GetWindowTitle() const {
121 return l10n_util::GetStringUTF16(IDS_IMPORT_PROGRESS_TITLE);
122 }
123
124 bool ImportProgressDialogView::Cancel() {
125 // When the user cancels the import, we need to tell the importer_host to stop
126 // importing and return false so that the window lives long enough to receive
127 // ImportEnded, which will close the window. Closing the window results in
128 // another call to this function and at that point we must return true to
129 // allow the window to close.
130 if (!importing_)
131 return true; // We have received ImportEnded, so we can close.
132
133 // Cancel the import and wait for further instructions.
134 importer_host_->Cancel();
135 return false;
136 }
137
138 void ImportProgressDialogView::InitControlLayout() {
139 using views::GridLayout;
140 using views::ColumnSet;
141
142 GridLayout* layout = GridLayout::CreatePanel(this);
143 SetLayoutManager(layout);
144
145 gfx::Size ps = state_history_->GetPreferredSize();
146
147 const int single_column_view_set_id = 0;
148 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id);
149 if (bookmarks_import_) {
150 column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0,
151 GridLayout::FIXED, ps.width(), 0);
152 column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
153 }
154 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
155 GridLayout::USE_PREF, 0, 0);
156 const int double_column_view_set_id = 1;
157 column_set = layout->AddColumnSet(double_column_view_set_id);
158 column_set->AddPaddingColumn(
159 0, views::kUnrelatedControlLargeHorizontalSpacing);
160 column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0,
161 GridLayout::FIXED, ps.width(), 0);
162 column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
163 column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1,
164 GridLayout::USE_PREF, 0, 0);
165 column_set->AddPaddingColumn(
166 0, views::kUnrelatedControlLargeHorizontalSpacing);
167
168 layout->StartRow(0, single_column_view_set_id);
169 if (bookmarks_import_)
170 layout->AddView(state_bookmarks_.get());
171 layout->AddView(label_info_);
172 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
173
174 if (items_ & importer::HISTORY) {
175 layout->StartRow(0, double_column_view_set_id);
176 layout->AddView(state_history_.get());
177 layout->AddView(label_history_.get());
178 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
179 }
180 if (items_ & importer::FAVORITES && !bookmarks_import_) {
181 layout->StartRow(0, double_column_view_set_id);
182 layout->AddView(state_bookmarks_.get());
183 layout->AddView(label_bookmarks_.get());
184 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
185 }
186 if (items_ & importer::SEARCH_ENGINES) {
187 layout->StartRow(0, double_column_view_set_id);
188 layout->AddView(state_searches_.get());
189 layout->AddView(label_searches_.get());
190 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
191 }
192 if (items_ & importer::PASSWORDS) {
193 layout->StartRow(0, double_column_view_set_id);
194 layout->AddView(state_passwords_.get());
195 layout->AddView(label_passwords_.get());
196 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
197 }
198 if (items_ & importer::COOKIES) {
199 layout->StartRow(0, double_column_view_set_id);
200 layout->AddView(state_cookies_.get());
201 layout->AddView(label_cookies_.get());
202 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
203 }
204 }
205
206 void ImportProgressDialogView::ImportStarted() {
207 importing_ = true;
208 }
209
210 void ImportProgressDialogView::ImportItemStarted(importer::ImportItem item) {
211 DCHECK(items_ & item);
212 switch (item) {
213 case importer::FAVORITES:
214 state_bookmarks_->Start();
215 break;
216 case importer::SEARCH_ENGINES:
217 state_searches_->Start();
218 break;
219 case importer::PASSWORDS:
220 state_passwords_->Start();
221 break;
222 case importer::HISTORY:
223 state_history_->Start();
224 break;
225 case importer::COOKIES:
226 state_cookies_->Start();
227 break;
228 }
229 }
230
231 void ImportProgressDialogView::ImportItemEnded(importer::ImportItem item) {
232 DCHECK(items_ & item);
233 switch (item) {
234 case importer::FAVORITES:
235 state_bookmarks_->Stop();
236 state_bookmarks_->SetChecked(true);
237 break;
238 case importer::SEARCH_ENGINES:
239 state_searches_->Stop();
240 state_searches_->SetChecked(true);
241 break;
242 case importer::PASSWORDS:
243 state_passwords_->Stop();
244 state_passwords_->SetChecked(true);
245 break;
246 case importer::HISTORY:
247 state_history_->Stop();
248 state_history_->SetChecked(true);
249 break;
250 case importer::COOKIES:
251 state_cookies_->Stop();
252 state_cookies_->SetChecked(true);
253 break;
254 }
255 }
256
257 void ImportProgressDialogView::ImportEnded() {
258 // This can happen because:
259 // - the import completed successfully.
260 // - the import was canceled by the user.
261 // - the user chose to skip the import because they didn't want to shut down
262 // Firefox.
263 // In every case, we need to close the UI now.
264 importing_ = false;
265 importer_host_->SetObserver(NULL);
266 GetWidget()->Close();
267 if (importer_observer_)
268 importer_observer_->ImportCompleted();
269 }
270
271 namespace importer {
272
273 void ShowImportProgressDialog(uint16 items,
274 ImporterHost* importer_host,
275 ImporterObserver* importer_observer,
276 const SourceProfile& source_profile,
277 Profile* target_profile,
278 bool first_run) {
279 DCHECK_NE(items, 0u);
280 ImportProgressDialogView* progress_view = new ImportProgressDialogView(
281 items,
282 importer_host,
283 importer_observer,
284 source_profile.importer_name,
285 source_profile.importer_type == importer::TYPE_BOOKMARKS_FILE);
286
287 views::Widget* window = views::Widget::CreateWindow(progress_view);
288
289 if (!importer_host->is_headless() && !first_run)
290 window->Show();
291
292 importer_host->StartImportSettings(source_profile, target_profile, items,
293 new ProfileWriter(target_profile), first_run);
294 }
295
296 } // namespace importer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698