1// Copyright (c) 2011 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/message_loop.h" 8#include "base/utf_string_conversions.h" 9#include "chrome/browser/importer/importer_host.h" 10#include "chrome/browser/importer/importer_lock_dialog.h" 11#include "chrome/browser/metrics/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 "views/controls/label.h" 17#include "views/layout/layout_constants.h" 18#include "views/window/window.h" 19 20// Default size of the dialog window. 21static const int kDefaultWindowWidth = 320; 22static const int kDefaultWindowHeight = 100; 23 24namespace importer { 25 26void ShowImportLockDialog(gfx::NativeWindow parent, 27 ImporterHost* importer_host) { 28 ImportLockDialogView::Show(parent, importer_host); 29 UserMetrics::RecordAction(UserMetricsAction("ImportLockDialogView_Shown")); 30} 31 32} // namespace importer 33 34// static 35void ImportLockDialogView::Show(gfx::NativeWindow parent, 36 ImporterHost* importer_host) { 37 views::Window::CreateChromeWindow( 38 NULL, gfx::Rect(), 39 new ImportLockDialogView(importer_host))->Show(); 40} 41 42ImportLockDialogView::ImportLockDialogView(ImporterHost* importer_host) 43 : description_label_(NULL), 44 importer_host_(importer_host) { 45 description_label_ = new views::Label( 46 UTF16ToWide(l10n_util::GetStringUTF16(IDS_IMPORTER_LOCK_TEXT))); 47 description_label_->SetMultiLine(true); 48 description_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); 49 AddChildView(description_label_); 50} 51 52ImportLockDialogView::~ImportLockDialogView() { 53} 54 55gfx::Size ImportLockDialogView::GetPreferredSize() { 56 return gfx::Size(views::Window::GetLocalizedContentsSize( 57 IDS_IMPORTLOCK_DIALOG_WIDTH_CHARS, 58 IDS_IMPORTLOCK_DIALOG_HEIGHT_LINES)); 59} 60 61void ImportLockDialogView::Layout() { 62 description_label_->SetBounds( 63 views::kPanelHorizMargin, 64 views::kPanelVertMargin, 65 width() - 2 * views::kPanelHorizMargin, 66 height() - 2 * views::kPanelVertMargin); 67} 68 69std::wstring ImportLockDialogView::GetDialogButtonLabel( 70 MessageBoxFlags::DialogButton button) const { 71 if (button == MessageBoxFlags::DIALOGBUTTON_OK) { 72 return UTF16ToWide(l10n_util::GetStringUTF16(IDS_IMPORTER_LOCK_OK)); 73 } else if (button == MessageBoxFlags::DIALOGBUTTON_CANCEL) { 74 return UTF16ToWide(l10n_util::GetStringUTF16(IDS_IMPORTER_LOCK_CANCEL)); 75 } 76 return std::wstring(); 77} 78 79bool ImportLockDialogView::IsModal() const { 80 return false; 81} 82 83std::wstring ImportLockDialogView::GetWindowTitle() const { 84 return UTF16ToWide(l10n_util::GetStringUTF16(IDS_IMPORTER_LOCK_TITLE)); 85} 86 87bool ImportLockDialogView::Accept() { 88 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( 89 importer_host_.get(), &ImporterHost::OnImportLockDialogEnd, true)); 90 return true; 91} 92 93bool ImportLockDialogView::Cancel() { 94 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( 95 importer_host_.get(), &ImporterHost::OnImportLockDialogEnd, false)); 96 return true; 97} 98 99views::View* ImportLockDialogView::GetContentsView() { 100 return this; 101} 102