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.
5 #include "chrome/browser/ui/views/importer/import_lock_dialog_view.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/importer/importer_lock_dialog.h"
11 #include "content/public/browser/user_metrics.h"
12 #include "grit/chromium_strings.h"
13 #include "grit/generated_resources.h"
14 #include "grit/locale_settings.h"
15 #include "ui/base/l10n/l10n_util.h"
16 #include "ui/views/controls/label.h"
17 #include "ui/views/layout/layout_constants.h"
18 #include "ui/views/widget/widget.h"
20 using base::UserMetricsAction
;
24 void ShowImportLockDialog(gfx::NativeWindow parent
,
25 const base::Callback
<void(bool)>& callback
) {
26 ImportLockDialogView::Show(parent
, callback
);
27 content::RecordAction(UserMetricsAction("ImportLockDialogView_Shown"));
30 } // namespace importer
33 void ImportLockDialogView::Show(gfx::NativeWindow parent
,
34 const base::Callback
<void(bool)>& callback
) {
35 views::DialogDelegate::CreateDialogWidget(
36 new ImportLockDialogView(callback
), NULL
, NULL
)->Show();
39 ImportLockDialogView::ImportLockDialogView(
40 const base::Callback
<void(bool)>& callback
)
41 : description_label_(NULL
),
43 description_label_
= new views::Label(
44 l10n_util::GetStringUTF16(IDS_IMPORTER_LOCK_TEXT
));
45 description_label_
->SetMultiLine(true);
46 description_label_
->SetHorizontalAlignment(gfx::ALIGN_LEFT
);
47 AddChildView(description_label_
);
50 ImportLockDialogView::~ImportLockDialogView() {
53 gfx::Size
ImportLockDialogView::GetPreferredSize() {
54 return gfx::Size(views::Widget::GetLocalizedContentsSize(
55 IDS_IMPORTLOCK_DIALOG_WIDTH_CHARS
,
56 IDS_IMPORTLOCK_DIALOG_HEIGHT_LINES
));
59 void ImportLockDialogView::Layout() {
60 gfx::Rect
bounds(GetLocalBounds());
61 bounds
.Inset(views::kButtonHEdgeMargin
, views::kPanelVertMargin
);
62 description_label_
->SetBoundsRect(bounds
);
65 base::string16
ImportLockDialogView::GetDialogButtonLabel(
66 ui::DialogButton button
) const {
67 return l10n_util::GetStringUTF16((button
== ui::DIALOG_BUTTON_OK
) ?
68 IDS_IMPORTER_LOCK_OK
: IDS_IMPORTER_LOCK_CANCEL
);
71 base::string16
ImportLockDialogView::GetWindowTitle() const {
72 return l10n_util::GetStringUTF16(IDS_IMPORTER_LOCK_TITLE
);
75 bool ImportLockDialogView::Accept() {
76 base::MessageLoop::current()->PostTask(FROM_HERE
,
77 base::Bind(callback_
, true));
81 bool ImportLockDialogView::Cancel() {
82 base::MessageLoop::current()->PostTask(FROM_HERE
,
83 base::Bind(callback_
, false));