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