instant_confirm_view.cc revision 3f50c38dc070f4bb515c1b64450dae14f316474e
1731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Use of this source code is governed by a BSD-style license that can be 3731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// found in the LICENSE file. 4731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 5731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/views/instant_confirm_view.h" 6731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "app/l10n_util.h" 83f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/utf_string_conversions.h" 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/browser_list.h" 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/instant/instant_confirm_dialog.h" 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/instant/instant_controller.h" 12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/prefs/pref_service.h" 1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h" 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/ui/browser.h" 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/common/pref_names.h" 16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "grit/generated_resources.h" 17201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "grit/chromium_strings.h" 18731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "grit/locale_settings.h" 19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "views/controls/label.h" 20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "views/grid_layout.h" 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "views/layout_manager.h" 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "views/standard_layout.h" 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "views/window/window.h" 24731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 25731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickInstantConfirmView::InstantConfirmView(Profile* profile) : profile_(profile) { 26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick views::Label* description_label = new views::Label( 273f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_INSTANT_OPT_IN_MESSAGE))); 28731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick description_label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); 29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick description_label->SetMultiLine(true); 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick views::Link* learn_more_link = new views::Link( 323f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen UTF16ToWide(l10n_util::GetStringUTF16(IDS_LEARN_MORE))); 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick learn_more_link->SetHorizontalAlignment(views::Label::ALIGN_LEFT); 34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick learn_more_link->SetController(this); 35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick views::GridLayout* layout = CreatePanelGridLayout(this); 37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick SetLayoutManager(layout); 38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const int first_column_set = 1; 40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick views::ColumnSet* column_set = layout->AddColumnSet(first_column_set); 41201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1, 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick views::GridLayout::USE_PREF, 0, 0); 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick layout->StartRow(0, first_column_set); 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick layout->AddView(description_label); 45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick layout->StartRow(0, first_column_set); 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick layout->AddView(learn_more_link); 47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickbool InstantConfirmView::Accept(bool window_closing) { 50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return Accept(); 51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 53731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickbool InstantConfirmView::Accept() { 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch InstantController::Enable(profile_); 55731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return true; 56731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 57731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 58731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickbool InstantConfirmView::Cancel() { 59731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return true; 60731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 61731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 62731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickviews::View* InstantConfirmView::GetContentsView() { 63731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return this; 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 65731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickstd::wstring InstantConfirmView::GetWindowTitle() const { 673f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen return UTF16ToWide(l10n_util::GetStringUTF16(IDS_INSTANT_OPT_IN_TITLE)); 68731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 69731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 70731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickgfx::Size InstantConfirmView::GetPreferredSize() { 71731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DCHECK(GetLayoutManager()); 72731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick int pref_width = views::Window::GetLocalizedContentsWidth( 73731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick IDS_INSTANT_CONFIRM_DIALOG_WIDTH_CHARS); 74731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick int pref_height = 75731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick GetLayoutManager()->GetPreferredHeightForWidth(this, pref_width); 76731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return gfx::Size(pref_width, pref_height); 77731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 78731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 79731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickbool InstantConfirmView::IsModal() const { 80731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return true; 81731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 82731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 83731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid InstantConfirmView::LinkActivated(views::Link* source, int event_flags) { 84731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick Browser* browser = BrowserList::GetLastActive(); 85201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch browser->OpenURL(browser::InstantLearnMoreURL(), GURL(), 86731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick NEW_FOREGROUND_TAB, PageTransition::TYPED); 87731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 88731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 89731df977c0511bca2206b5f333555b1205ff1f43Iain Merricknamespace browser { 90731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 91731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid ShowInstantConfirmDialog(gfx::NativeWindow parent, Profile* profile) { 92731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick views::Window::CreateChromeWindow(parent, gfx::Rect(), 93731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick new InstantConfirmView(profile))->Show(); 94731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 95731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 96731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} // namespace browser 97