import_lock_dialog_view.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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_lock_dialog_view.h"
6
7#include "base/bind.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 "chrome/grit/chromium_strings.h"
12#include "chrome/grit/generated_resources.h"
13#include "chrome/grit/locale_settings.h"
14#include "content/public/browser/user_metrics.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"
19
20using base::UserMetricsAction;
21
22namespace importer {
23
24void ShowImportLockDialog(gfx::NativeWindow parent,
25                          const base::Callback<void(bool)>& callback) {
26  ImportLockDialogView::Show(parent, callback);
27  content::RecordAction(UserMetricsAction("ImportLockDialogView_Shown"));
28}
29
30}  // namespace importer
31
32// static
33void ImportLockDialogView::Show(gfx::NativeWindow parent,
34                                const base::Callback<void(bool)>& callback) {
35  views::DialogDelegate::CreateDialogWidget(
36      new ImportLockDialogView(callback), NULL, NULL)->Show();
37}
38
39ImportLockDialogView::ImportLockDialogView(
40    const base::Callback<void(bool)>& callback)
41    : description_label_(NULL),
42      callback_(callback) {
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_);
48}
49
50ImportLockDialogView::~ImportLockDialogView() {
51}
52
53gfx::Size ImportLockDialogView::GetPreferredSize() const {
54  return gfx::Size(views::Widget::GetLocalizedContentsSize(
55      IDS_IMPORTLOCK_DIALOG_WIDTH_CHARS,
56      IDS_IMPORTLOCK_DIALOG_HEIGHT_LINES));
57}
58
59void ImportLockDialogView::Layout() {
60  gfx::Rect bounds(GetLocalBounds());
61  bounds.Inset(views::kButtonHEdgeMargin, views::kPanelVertMargin);
62  description_label_->SetBoundsRect(bounds);
63}
64
65base::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);
69}
70
71base::string16 ImportLockDialogView::GetWindowTitle() const {
72  return l10n_util::GetStringUTF16(IDS_IMPORTER_LOCK_TITLE);
73}
74
75bool ImportLockDialogView::Accept() {
76  base::MessageLoop::current()->PostTask(FROM_HERE,
77                                         base::Bind(callback_, true));
78  return true;
79}
80
81bool ImportLockDialogView::Cancel() {
82  base::MessageLoop::current()->PostTask(FROM_HERE,
83                                         base::Bind(callback_, false));
84  return true;
85}
86