Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(344)

Side by Side Diff: chrome/browser/chromeos/ui/echo_dialog_view.cc

Issue 12317109: Add a dialog for getting user consent in the echo redeem flow. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/chromeos/ui/echo_dialog_view.h ('k') | chrome/chrome_browser_chromeos.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 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/chromeos/ui/echo_dialog_view.h"
6
7 #include "chrome/browser/chromeos/ui/echo_dialog_listener.h"
8 #include "grit/generated_resources.h"
9 #include "ui/base/l10n/l10n_util.h"
10 #include "ui/views/controls/styled_label.h"
11 #include "ui/views/widget/widget.h"
12 #include "ui/views/window/dialog_client_view.h"
13
14 namespace {
15
16 const int kDialogLabelTopInset = 20;
17 const int kDialogLabelLeftInset = 20;
18 const int kDialogLabelBottomInset = 20;
19 const int kDialogLabelRightInset = 100;
20
21 const int kDialogLabelPreferredWidth =
22 350 + kDialogLabelLeftInset + kDialogLabelRightInset;
23
24 } // namespace
25
26 namespace chromeos {
27
28 EchoDialogView::EchoDialogView(EchoDialogListener* listener)
29 : label_(NULL),
30 listener_(listener),
31 ok_button_label_id_(0),
32 cancel_button_label_id_(0) {
33 }
34
35 EchoDialogView::~EchoDialogView() {}
36
37 void EchoDialogView::InitForEnabledEcho(const string16& service_name,
38 const string16& origin) {
39 ok_button_label_id_ = IDS_OFFERS_CONSENT_INFOBAR_ENABLE_BUTTON;
40 cancel_button_label_id_ = IDS_OFFERS_CONSENT_INFOBAR_DISABLE_BUTTON;
41
42 string16 link =
43 l10n_util::GetStringUTF16(IDS_OFFERS_CONSENT_INFOBAR_LABEL_LEARN_MORE);
44
45 std::vector<size_t> offsets;
46 string16 text = l10n_util::GetStringFUTF16(IDS_ECHO_CONSENT_DIALOG_TEXT,
47 service_name,
48 link,
49 &offsets);
50
51 // TODO(tbarzic): Set style for service_name substring.
52
53 label_ = new views::StyledLabel(text, this);
54 label_->AddLink(ui::Range(offsets[1], offsets[1] + link.length()));
55
56 SetLabelBorderAndBounds();
57
58 AddChildView(label_);
59 }
60
61 void EchoDialogView::InitForDisabledEcho() {
62 ok_button_label_id_ = 0;
63 cancel_button_label_id_ = IDS_ECHO_CONSENT_DISMISS_BUTTON;
64
65 string16 link =
66 l10n_util::GetStringUTF16(IDS_OFFERS_CONSENT_INFOBAR_LABEL_LEARN_MORE);
67
68 size_t offset;
69 string16 text = l10n_util::GetStringFUTF16(
70 IDS_ECHO_DISABLED_CONSENT_DIALOG_TEXT, link, &offset);
71
72 label_ = new views::StyledLabel(text, this);
73 label_->AddLink(ui::Range(offset, offset + link.length()));
74
75 SetLabelBorderAndBounds();
76
77 AddChildView(label_);
78 }
79
80 void EchoDialogView::Show(gfx::NativeWindow parent) {
81 DCHECK(cancel_button_label_id_);
82
83 views::DialogDelegateView::CreateDialogWidget(this, parent, parent);
84 GetWidget()->SetSize(GetWidget()->GetRootView()->GetPreferredSize());
85 GetWidget()->Show();
86 }
87
88 int EchoDialogView::GetDefaultDialogButton() const {
89 return ui::DIALOG_BUTTON_NONE;
90 }
91
92 int EchoDialogView::GetDialogButtons() const {
93 int buttons = ui::DIALOG_BUTTON_NONE;
94 if (ok_button_label_id_)
95 buttons |= ui::DIALOG_BUTTON_OK;
96 if (cancel_button_label_id_)
97 buttons |= ui::DIALOG_BUTTON_CANCEL;
98 return buttons;
99 }
100
101 bool EchoDialogView::Accept() {
102 if (listener_) {
103 listener_->OnAccept();
104 listener_ = NULL;
105 }
106 return true;
107 }
108
109 bool EchoDialogView::Cancel() {
110 if (listener_) {
111 listener_->OnCancel();
112 listener_ = NULL;
113 }
114 return true;
115 }
116
117 string16 EchoDialogView::GetDialogButtonLabel(ui::DialogButton button) const {
118 if (button == ui::DIALOG_BUTTON_OK && ok_button_label_id_)
119 return l10n_util::GetStringUTF16(ok_button_label_id_);
120 if (button == ui::DIALOG_BUTTON_CANCEL && cancel_button_label_id_)
121 return l10n_util::GetStringUTF16(cancel_button_label_id_);
122 return string16();
123 }
124
125 ui::ModalType EchoDialogView::GetModalType() const {
126 return ui::MODAL_TYPE_WINDOW;
127 }
128
129 bool EchoDialogView::ShouldShowWindowTitle() const {
130 return false;
131 }
132
133 bool EchoDialogView::ShouldShowWindowIcon() const {
134 return false;
135 }
136
137 void EchoDialogView::StyledLabelLinkClicked(const ui::Range& range,
138 int event_flags) {
139 if (!listener_)
140 return;
141 listener_->OnMoreInfoLinkClicked();
142 }
143
144 gfx::Size EchoDialogView::GetPreferredSize() {
145 gfx::Size size =
146 gfx::Size(kDialogLabelPreferredWidth,
147 label_->GetHeightForWidth(kDialogLabelPreferredWidth));
148 gfx::Insets insets = GetInsets();
149 size.Enlarge(insets.width(), insets.height());
150 return size;
151 }
152
153 void EchoDialogView::SetLabelBorderAndBounds() {
154 label_->set_border(views::Border::CreateEmptyBorder(
155 kDialogLabelTopInset,
156 kDialogLabelLeftInset,
157 kDialogLabelBottomInset,
158 kDialogLabelRightInset));
159
160 label_->SetBounds(label_->x(),
161 label_->y(),
162 kDialogLabelPreferredWidth,
163 label_->GetHeightForWidth(kDialogLabelPreferredWidth));
164 }
165
166 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/ui/echo_dialog_view.h ('k') | chrome/chrome_browser_chromeos.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698