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 "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" 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