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

Side by Side Diff: chrome/browser/ui/views/payments/payment_sheet_view_controller.cc

Issue 2910153002: Remove views::Label::SetDisabledColor(). Replace with typography colors. (Closed)
Patch Set: Use STYLE_HINT more. Fix SadTab Created 3 years, 6 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/payments/payment_sheet_view_controller.h" 5 #include "chrome/browser/ui/views/payments/payment_sheet_view_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/i18n/message_formatter.h" 13 #include "base/i18n/message_formatter.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
16 #include "base/strings/string_number_conversions.h" 16 #include "base/strings/string_number_conversions.h"
17 #include "base/strings/string_util.h" 17 #include "base/strings/string_util.h"
18 #include "base/strings/stringprintf.h" 18 #include "base/strings/stringprintf.h"
19 #include "base/strings/utf_string_conversions.h" 19 #include "base/strings/utf_string_conversions.h"
20 #include "chrome/browser/browser_process.h" 20 #include "chrome/browser/browser_process.h"
21 #include "chrome/browser/profiles/profile.h" 21 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/browser/ui/chrome_pages.h" 22 #include "chrome/browser/ui/chrome_pages.h"
23 #include "chrome/browser/ui/views/harmony/chrome_typography.h"
23 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" 24 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h"
24 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" 25 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h"
25 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" 26 #include "chrome/browser/ui/views/payments/payment_request_row_view.h"
26 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" 27 #include "chrome/browser/ui/views/payments/payment_request_views_util.h"
27 #include "chrome/grit/generated_resources.h" 28 #include "chrome/grit/generated_resources.h"
28 #include "components/autofill/core/browser/field_types.h" 29 #include "components/autofill/core/browser/field_types.h"
29 #include "components/autofill/core/browser/personal_data_manager.h" 30 #include "components/autofill/core/browser/personal_data_manager.h"
30 #include "components/payments/content/payment_request_spec.h" 31 #include "components/payments/content/payment_request_spec.h"
31 #include "components/payments/content/payment_request_state.h" 32 #include "components/payments/content/payment_request_state.h"
32 #include "components/payments/core/currency_formatter.h" 33 #include "components/payments/core/currency_formatter.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 // A class that ensures proper elision of labels in the form 79 // A class that ensures proper elision of labels in the form
79 // "[preview] and N more" where preview might be elided to allow "and N more" to 80 // "[preview] and N more" where preview might be elided to allow "and N more" to
80 // be always visible. 81 // be always visible.
81 class PreviewEliderLabel : public views::Label { 82 class PreviewEliderLabel : public views::Label {
82 public: 83 public:
83 // Creates a PreviewEliderLabel where |preview_text| might be elided, 84 // Creates a PreviewEliderLabel where |preview_text| might be elided,
84 // |format_string| is the string with format argument numbers in ICU syntax 85 // |format_string| is the string with format argument numbers in ICU syntax
85 // and |n| is the "N more" item count. 86 // and |n| is the "N more" item count.
86 PreviewEliderLabel(const base::string16& preview_text, 87 PreviewEliderLabel(const base::string16& preview_text,
87 const base::string16& format_string, 88 const base::string16& format_string,
88 int n) 89 int n,
89 : views::Label(base::string16()), 90 int text_style)
91 : views::Label(base::string16(), views::style::CONTEXT_LABEL, text_style),
90 preview_text_(preview_text), 92 preview_text_(preview_text),
91 format_string_(format_string), 93 format_string_(format_string),
92 n_(n) {} 94 n_(n) {}
93 95
94 private: 96 private:
95 // Formats |preview_text_|, |format_string_|, and |n_| into a string that fits 97 // Formats |preview_text_|, |format_string_|, and |n_| into a string that fits
96 // inside of |pixel_width|, eliding |preview_text_| as required. 98 // inside of |pixel_width|, eliding |preview_text_| as required.
97 base::string16 CreateElidedString(int pixel_width) { 99 base::string16 CreateElidedString(int pixel_width) {
98 for (int preview_length = preview_text_.size(); preview_length > 0; 100 for (int preview_length = preview_text_.size(); preview_length > 0;
99 --preview_length) { 101 --preview_length) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 } 189 }
188 190
189 layout->AddView(trailing_button.release()); 191 layout->AddView(trailing_button.release());
190 192
191 return std::move(row); 193 return std::move(row);
192 } 194 }
193 195
194 std::unique_ptr<views::View> CreateInlineCurrencyAmountItem( 196 std::unique_ptr<views::View> CreateInlineCurrencyAmountItem(
195 const base::string16& currency, 197 const base::string16& currency,
196 const base::string16& amount, 198 const base::string16& amount,
197 bool disabled_color, 199 bool hint_color,
198 bool bold) { 200 bool bold) {
199 std::unique_ptr<views::View> item_amount_line = 201 std::unique_ptr<views::View> item_amount_line =
200 base::MakeUnique<views::View>(); 202 base::MakeUnique<views::View>();
201 std::unique_ptr<views::GridLayout> item_amount_layout = 203 std::unique_ptr<views::GridLayout> item_amount_layout =
202 base::MakeUnique<views::GridLayout>(item_amount_line.get()); 204 base::MakeUnique<views::GridLayout>(item_amount_line.get());
203 views::ColumnSet* item_amount_columns = item_amount_layout->AddColumnSet(0); 205 views::ColumnSet* item_amount_columns = item_amount_layout->AddColumnSet(0);
204 item_amount_columns->AddColumn(views::GridLayout::LEADING, 206 item_amount_columns->AddColumn(views::GridLayout::LEADING,
205 views::GridLayout::LEADING, 0, 207 views::GridLayout::LEADING, 0,
206 views::GridLayout::USE_PREF, 0, 0); 208 views::GridLayout::USE_PREF, 0, 0);
207 item_amount_columns->AddColumn(views::GridLayout::TRAILING, 209 item_amount_columns->AddColumn(views::GridLayout::TRAILING,
208 views::GridLayout::LEADING, 1, 210 views::GridLayout::LEADING, 1,
209 views::GridLayout::USE_PREF, 0, 0); 211 views::GridLayout::USE_PREF, 0, 0);
210 212
213 DCHECK(!bold || !hint_color);
211 std::unique_ptr<views::Label> currency_label = 214 std::unique_ptr<views::Label> currency_label =
212 bold ? CreateBoldLabel(currency) 215 bold ? CreateBoldLabel(currency)
213 : base::MakeUnique<views::Label>(currency); 216 : (hint_color ? CreateHintLabel(currency)
214 if (disabled_color) { 217 : base::MakeUnique<views::Label>(currency));
Peter Kasting 2017/06/01 04:55:58 Nit: Nesting ?:s makes me unhappy.
tapted 2017/06/01 11:22:18 Done.
215 currency_label->SetDisabledColor(
216 currency_label->GetNativeTheme()->GetSystemColor(
217 ui::NativeTheme::kColorId_LabelDisabledColor));
218 currency_label->SetEnabled(false);
219 }
220 std::unique_ptr<views::Label> amount_label = 218 std::unique_ptr<views::Label> amount_label =
221 bold ? CreateBoldLabel(amount) : base::MakeUnique<views::Label>(amount); 219 bold ? CreateBoldLabel(amount) : base::MakeUnique<views::Label>(amount);
222 amount_label->SetMultiLine(true); 220 amount_label->SetMultiLine(true);
223 amount_label->SetAllowCharacterBreak(true); 221 amount_label->SetAllowCharacterBreak(true);
224 222
225 item_amount_layout->StartRow(0, 0); 223 item_amount_layout->StartRow(0, 0);
226 item_amount_layout->AddView(currency_label.release()); 224 item_amount_layout->AddView(currency_label.release());
227 item_amount_layout->AddView(amount_label.release()); 225 item_amount_layout->AddView(amount_label.release());
228 226
229 item_amount_line->SetLayoutManager(item_amount_layout.release()); 227 item_amount_line->SetLayoutManager(item_amount_layout.release());
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 279
282 // Creates a row with a button in place of the chevron and |truncated_content| 280 // Creates a row with a button in place of the chevron and |truncated_content|
283 // between |section_name| and the button. 281 // between |section_name| and the button.
284 // +------------------------------------------+ 282 // +------------------------------------------+
285 // | Name | truncated_content | button_string | 283 // | Name | truncated_content | button_string |
286 // +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ 284 // +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
287 std::unique_ptr<views::Button> CreateWithButton( 285 std::unique_ptr<views::Button> CreateWithButton(
288 const base::string16& truncated_content, 286 const base::string16& truncated_content,
289 const base::string16& button_string, 287 const base::string16& button_string,
290 bool button_enabled) { 288 bool button_enabled) {
291 std::unique_ptr<views::Label> content_view = 289 return CreateWithButton(CreateHintLabel(truncated_content, gfx::ALIGN_LEFT),
292 base::MakeUnique<views::Label>(truncated_content); 290 button_string, button_enabled);
293 content_view->SetHorizontalAlignment(gfx::ALIGN_LEFT);
294 content_view->SetDisabledColor(
295 content_view->GetNativeTheme()->GetSystemColor(
296 ui::NativeTheme::kColorId_LabelDisabledColor));
297 content_view->SetEnabled(false);
298 return CreateWithButton(std::move(content_view), button_string,
299 button_enabled);
300 } 291 }
301 292
302 // Creates a row with a button in place of the chevron with the string between 293 // Creates a row with a button in place of the chevron with the string between
303 // |section_name| and the button built as "|preview|... and |n| more". 294 // |section_name| and the button built as "|preview|... and |n| more".
304 // |format_string| is used to assemble the truncated preview and the rest of 295 // |format_string| is used to assemble the truncated preview and the rest of
305 // the content string. 296 // the content string.
306 // +----------------------------------------------+ 297 // +----------------------------------------------+
307 // | Name | preview... and N more | button_string | 298 // | Name | preview... and N more | button_string |
308 // +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ 299 // +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
309 std::unique_ptr<views::Button> CreateWithButton( 300 std::unique_ptr<views::Button> CreateWithButton(
310 const base::string16& preview_text, 301 const base::string16& preview_text,
311 const base::string16& format_string, 302 const base::string16& format_string,
312 int n, 303 int n,
313 const base::string16& button_string, 304 const base::string16& button_string,
314 bool button_enabled) { 305 bool button_enabled) {
315 std::unique_ptr<PreviewEliderLabel> content_view = 306 std::unique_ptr<PreviewEliderLabel> content_view =
316 base::MakeUnique<PreviewEliderLabel>(preview_text, format_string, n); 307 base::MakeUnique<PreviewEliderLabel>(preview_text, format_string, n,
308 STYLE_HINT);
317 content_view->SetHorizontalAlignment(gfx::ALIGN_LEFT); 309 content_view->SetHorizontalAlignment(gfx::ALIGN_LEFT);
318 content_view->SetDisabledColor(
319 content_view->GetNativeTheme()->GetSystemColor(
320 ui::NativeTheme::kColorId_LabelDisabledColor));
321 content_view->SetEnabled(false);
322 return CreateWithButton(std::move(content_view), button_string, 310 return CreateWithButton(std::move(content_view), button_string,
323 button_enabled); 311 button_enabled);
324 } 312 }
325 313
326 private: 314 private:
327 // Creates a row with a button in place of the chevron. 315 // Creates a row with a button in place of the chevron.
328 // +------------------------------------------+ 316 // +------------------------------------------+
329 // | Name | content_view | button_string | 317 // | Name | content_view | button_string |
330 // +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ 318 // +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
331 std::unique_ptr<views::Button> CreateWithButton( 319 std::unique_ptr<views::Button> CreateWithButton(
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 bool is_mixed_currency = spec()->IsMixedCurrency(); 536 bool is_mixed_currency = spec()->IsMixedCurrency();
549 // The inline items section contains the first 2 display items of the 537 // The inline items section contains the first 2 display items of the
550 // request's details, followed by a label indicating "N more items..." if 538 // request's details, followed by a label indicating "N more items..." if
551 // there are more than 2 items in the details. The total label and amount 539 // there are more than 2 items in the details. The total label and amount
552 // always follow. 540 // always follow.
553 constexpr int kMaxNumberOfItemsShown = 2; 541 constexpr int kMaxNumberOfItemsShown = 2;
554 int hidden_item_count = items.size() - kMaxNumberOfItemsShown; 542 int hidden_item_count = items.size() - kMaxNumberOfItemsShown;
555 if (hidden_item_count > 0) { 543 if (hidden_item_count > 0) {
556 layout->StartRow(0, 0); 544 layout->StartRow(0, 0);
557 std::unique_ptr<views::Label> label = 545 std::unique_ptr<views::Label> label =
558 base::MakeUnique<views::Label>(l10n_util::GetPluralStringFUTF16( 546 CreateHintLabel(l10n_util::GetPluralStringFUTF16(
559 IDS_PAYMENT_REQUEST_ORDER_SUMMARY_MORE_ITEMS, hidden_item_count)); 547 IDS_PAYMENT_REQUEST_ORDER_SUMMARY_MORE_ITEMS, hidden_item_count));
560 label->SetDisabledColor(label->GetNativeTheme()->GetSystemColor(
561 ui::NativeTheme::kColorId_LabelDisabledColor));
562 label->SetEnabled(false);
563 layout->AddView(label.release()); 548 layout->AddView(label.release());
564 if (is_mixed_currency) { 549 if (is_mixed_currency) {
565 std::unique_ptr<views::Label> multiple_currency_label = 550 std::unique_ptr<views::Label> multiple_currency_label =
566 base::MakeUnique<views::Label>(l10n_util::GetStringUTF16( 551 CreateHintLabel(l10n_util::GetStringUTF16(
567 IDS_PAYMENT_REQUEST_ORDER_SUMMARY_MULTIPLE_CURRENCY_INDICATOR)); 552 IDS_PAYMENT_REQUEST_ORDER_SUMMARY_MULTIPLE_CURRENCY_INDICATOR));
568 multiple_currency_label->SetDisabledColor(
569 multiple_currency_label->GetNativeTheme()->GetSystemColor(
570 ui::NativeTheme::kColorId_LabelDisabledColor));
571 multiple_currency_label->SetEnabled(false);
572 layout->AddView(multiple_currency_label.release()); 553 layout->AddView(multiple_currency_label.release());
573 } 554 }
574 } 555 }
575 556
576 for (size_t i = 0; i < items.size() && i < kMaxNumberOfItemsShown; ++i) { 557 for (size_t i = 0; i < items.size() && i < kMaxNumberOfItemsShown; ++i) {
577 layout->StartRow(0, 0); 558 layout->StartRow(0, 0);
578 std::unique_ptr<views::Label> summary = 559 std::unique_ptr<views::Label> summary =
579 base::MakeUnique<views::Label>(base::UTF8ToUTF16(items[i]->label)); 560 base::MakeUnique<views::Label>(base::UTF8ToUTF16(items[i]->label));
580 summary->SetHorizontalAlignment(gfx::ALIGN_LEFT); 561 summary->SetHorizontalAlignment(gfx::ALIGN_LEFT);
581 layout->AddView(summary.release()); 562 layout->AddView(summary.release());
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 data_source_label->SetDefaultStyle(default_style); 908 data_source_label->SetDefaultStyle(default_style);
928 data_source_label->AddStyleRange( 909 data_source_label->AddStyleRange(
929 gfx::Range(link_begin, link_begin + link_length), 910 gfx::Range(link_begin, link_begin + link_length),
930 views::StyledLabel::RangeStyleInfo::CreateForLink()); 911 views::StyledLabel::RangeStyleInfo::CreateForLink());
931 data_source_label->SizeToFit(0); 912 data_source_label->SizeToFit(0);
932 content_view->AddChildView(data_source_label.release()); 913 content_view->AddChildView(data_source_label.release());
933 return content_view; 914 return content_view;
934 } 915 }
935 916
936 } // namespace payments 917 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698