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

Side by Side Diff: chrome/browser/ui/views/location_bar/keyword_hint_view.cc

Issue 2893573004: Simplify some code in c/b/u/views. (Closed)
Patch Set: Created 3 years, 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/location_bar/keyword_hint_view.h" 5 #include "chrome/browser/ui/views/location_bar/keyword_hint_view.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/search_engines/template_url_service_factory.h" 13 #include "chrome/browser/search_engines/template_url_service_factory.h"
14 #include "chrome/browser/ui/views/location_bar/background_with_1_px_border.h" 14 #include "chrome/browser/ui/views/location_bar/background_with_1_px_border.h"
15 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" 15 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
16 #include "chrome/grit/generated_resources.h" 16 #include "chrome/grit/generated_resources.h"
17 #include "components/search_engines/template_url_service.h" 17 #include "components/search_engines/template_url_service.h"
18 #include "ui/base/l10n/l10n_util.h" 18 #include "ui/base/l10n/l10n_util.h"
19 #include "ui/gfx/color_utils.h" 19 #include "ui/gfx/color_utils.h"
20 #include "ui/strings/grit/ui_strings.h" 20 #include "ui/strings/grit/ui_strings.h"
21 #include "ui/views/border.h" 21 #include "ui/views/border.h"
22 #include "ui/views/controls/label.h" 22 #include "ui/views/controls/label.h"
23 #include "ui/views/layout/fill_layout.h"
23 24
24 #if defined(USE_AURA) 25 #if defined(USE_AURA)
25 #include "ui/keyboard/keyboard_util.h" 26 #include "ui/keyboard/keyboard_util.h"
26 #endif 27 #endif
27 28
28 namespace { 29 namespace {
29 30
30 // This view looks somewhat like a keyboard key.
31 class KeyboardKeyView : public views::Label {
32 public:
33 explicit KeyboardKeyView(const gfx::FontList& font_list);
34 ~KeyboardKeyView() override;
35
36 private:
37 // views::Label:
38 gfx::Size GetPreferredSize() const override;
39
40 DISALLOW_COPY_AND_ASSIGN(KeyboardKeyView);
41 };
42
43 bool IsVirtualKeyboardVisible() { 31 bool IsVirtualKeyboardVisible() {
44 #if defined(USE_AURA) 32 #if defined(USE_AURA)
45 return keyboard::IsKeyboardVisible(); 33 return keyboard::IsKeyboardVisible();
46 #else 34 #else
47 return false; 35 return false;
48 #endif 36 #endif
49 } 37 }
50 38
51 KeyboardKeyView::KeyboardKeyView(const gfx::FontList& font_list)
52 : views::Label(base::string16(), {font_list}) {
53 SetBorder(views::CreateEmptyBorder(
54 gfx::Insets(LocationBarView::kBubbleVerticalPadding, 0)));
55 }
56
57 KeyboardKeyView::~KeyboardKeyView() {}
58
59 gfx::Size KeyboardKeyView::GetPreferredSize() const {
60 gfx::Size size = views::Label::GetPreferredSize();
61 constexpr int kPaddingInsideBorder = 5;
62 // Even though the border is 1 px thick visibly, it takes 1 DIP logically.
63 size.Enlarge(2 * (kPaddingInsideBorder + 1), 0);
64 return size;
65 }
66
67 } // namespace 39 } // namespace
68 40
69 KeywordHintView::KeywordHintView(views::ButtonListener* listener, 41 KeywordHintView::KeywordHintView(views::ButtonListener* listener,
70 Profile* profile, 42 Profile* profile,
71 const gfx::FontList& font_list, 43 const gfx::FontList& font_list,
72 const gfx::FontList& bubble_font_list, 44 const gfx::FontList& bubble_font_list,
73 int chip_height,
74 SkColor text_color, 45 SkColor text_color,
75 SkColor background_color) 46 SkColor background_color)
76 : CustomButton(listener), 47 : CustomButton(listener),
77 profile_(profile), 48 profile_(profile),
78 leading_label_(nullptr), 49 leading_label_(nullptr),
79 chip_view_(new KeyboardKeyView(bubble_font_list)), 50 chip_container_(new views::View()),
80 trailing_label_(nullptr), 51 chip_label_(new views::Label(base::string16(), {bubble_font_list})),
81 chip_view_height_(chip_height) { 52 trailing_label_(nullptr) {
82 leading_label_ = 53 leading_label_ =
83 CreateLabel(font_list, text_color, background_color); 54 CreateLabel(font_list, text_color, background_color);
84 chip_view_->SetEnabledColor(text_color); 55
56 constexpr int kPaddingInsideBorder = 5;
57 // Even though the border is 1 px thick visibly, it takes 1 DIP logically.
58 chip_label_->SetBorder(
59 views::CreateEmptyBorder(gfx::Insets(0, kPaddingInsideBorder + 1)));
60 chip_label_->SetEnabledColor(text_color);
85 bool inverted = color_utils::IsDark(background_color); 61 bool inverted = color_utils::IsDark(background_color);
86 SkColor tab_bg_color = 62 SkColor tab_bg_color =
87 inverted ? SK_ColorWHITE : SkColorSetA(text_color, 0x13); 63 inverted ? SK_ColorWHITE : SkColorSetA(text_color, 0x13);
88 SkColor tab_border_color = inverted ? SK_ColorWHITE : text_color; 64 SkColor tab_border_color = inverted ? SK_ColorWHITE : text_color;
89 chip_view_->SetBackgroundColor(tab_bg_color); 65 chip_label_->SetBackgroundColor(tab_bg_color);
90 chip_view_->set_background( 66
67 chip_container_->SetBorder(views::CreateEmptyBorder(
68 gfx::Insets(LocationBarView::kBubbleVerticalPadding, 0)));
69 chip_container_->set_background(
91 new BackgroundWith1PxBorder(tab_bg_color, tab_border_color)); 70 new BackgroundWith1PxBorder(tab_bg_color, tab_border_color));
92 AddChildView(chip_view_); 71 chip_container_->AddChildView(chip_label_);
72 chip_container_->SetLayoutManager(new views::FillLayout());
73 AddChildView(chip_container_);
74
93 trailing_label_ = 75 trailing_label_ =
94 CreateLabel(font_list, text_color, background_color); 76 CreateLabel(font_list, text_color, background_color);
95 } 77 }
96 78
97 KeywordHintView::~KeywordHintView() {} 79 KeywordHintView::~KeywordHintView() {}
98 80
99 void KeywordHintView::SetKeyword(const base::string16& keyword) { 81 void KeywordHintView::SetKeyword(const base::string16& keyword) {
100 keyword_ = keyword; 82 keyword_ = keyword;
101 if (keyword_.empty()) 83 if (keyword_.empty())
102 return; 84 return;
103 DCHECK(profile_); 85 DCHECK(profile_);
104 TemplateURLService* url_service = 86 TemplateURLService* url_service =
105 TemplateURLServiceFactory::GetForProfile(profile_); 87 TemplateURLServiceFactory::GetForProfile(profile_);
106 if (!url_service) 88 if (!url_service)
107 return; 89 return;
108 90
109 bool is_extension_keyword; 91 bool is_extension_keyword;
110 base::string16 short_name( 92 base::string16 short_name(
111 url_service->GetKeywordShortName(keyword, &is_extension_keyword)); 93 url_service->GetKeywordShortName(keyword, &is_extension_keyword));
112 94
113 if (IsVirtualKeyboardVisible()) { 95 if (IsVirtualKeyboardVisible()) {
114 int message_id = is_extension_keyword 96 int message_id = is_extension_keyword
115 ? IDS_OMNIBOX_EXTENSION_KEYWORD_HINT_TOUCH 97 ? IDS_OMNIBOX_EXTENSION_KEYWORD_HINT_TOUCH
116 : IDS_OMNIBOX_KEYWORD_HINT_TOUCH; 98 : IDS_OMNIBOX_KEYWORD_HINT_TOUCH;
117 chip_view_->SetText(l10n_util::GetStringFUTF16(message_id, short_name)); 99 chip_label_->SetText(l10n_util::GetStringFUTF16(message_id, short_name));
118 100
119 leading_label_->SetText(base::string16()); 101 leading_label_->SetText(base::string16());
120 trailing_label_->SetText(base::string16()); 102 trailing_label_->SetText(base::string16());
121 } else { 103 } else {
122 chip_view_->SetText(l10n_util::GetStringUTF16(IDS_APP_TAB_KEY)); 104 chip_label_->SetText(l10n_util::GetStringUTF16(IDS_APP_TAB_KEY));
123 105
124 std::vector<size_t> content_param_offsets; 106 std::vector<size_t> content_param_offsets;
125 int message_id = is_extension_keyword ? IDS_OMNIBOX_EXTENSION_KEYWORD_HINT 107 int message_id = is_extension_keyword ? IDS_OMNIBOX_EXTENSION_KEYWORD_HINT
126 : IDS_OMNIBOX_KEYWORD_HINT; 108 : IDS_OMNIBOX_KEYWORD_HINT;
127 const base::string16 keyword_hint = l10n_util::GetStringFUTF16( 109 const base::string16 keyword_hint = l10n_util::GetStringFUTF16(
128 message_id, base::string16(), short_name, &content_param_offsets); 110 message_id, base::string16(), short_name, &content_param_offsets);
129 DCHECK_EQ(2U, content_param_offsets.size()); 111 DCHECK_EQ(2U, content_param_offsets.size());
130 leading_label_->SetText( 112 leading_label_->SetText(
131 keyword_hint.substr(0, content_param_offsets.front())); 113 keyword_hint.substr(0, content_param_offsets.front()));
132 trailing_label_->SetText( 114 trailing_label_->SetText(
133 keyword_hint.substr(content_param_offsets.front())); 115 keyword_hint.substr(content_param_offsets.front()));
134 } 116 }
135 } 117 }
136 118
137 gfx::Size KeywordHintView::GetPreferredSize() const { 119 gfx::Size KeywordHintView::GetPreferredSize() const {
138 // Height will be ignored by the LocationBarView. 120 // Height will be ignored by the LocationBarView.
139 return gfx::Size(leading_label_->GetPreferredSize().width() + 121 return gfx::Size(leading_label_->GetPreferredSize().width() +
140 chip_view_->GetPreferredSize().width() + 122 chip_container_->GetPreferredSize().width() +
141 trailing_label_->GetPreferredSize().width() + 123 trailing_label_->GetPreferredSize().width() +
142 LocationBarView::kIconInteriorPadding, 124 LocationBarView::kIconInteriorPadding,
143 0); 125 0);
144 } 126 }
145 127
146 gfx::Size KeywordHintView::GetMinimumSize() const { 128 gfx::Size KeywordHintView::GetMinimumSize() const {
147 // Height will be ignored by the LocationBarView. 129 // Height will be ignored by the LocationBarView.
148 return chip_view_->GetPreferredSize(); 130 return chip_container_->GetPreferredSize();
149 } 131 }
150 132
151 void KeywordHintView::Layout() { 133 void KeywordHintView::Layout() {
152 int chip_width = chip_view_->GetPreferredSize().width(); 134 int chip_width = chip_container_->GetPreferredSize().width();
153 bool show_labels = (width() != chip_width); 135 bool show_labels = (width() != chip_width);
154 gfx::Size leading_size(leading_label_->GetPreferredSize()); 136 gfx::Size leading_size(leading_label_->GetPreferredSize());
155 leading_label_->SetBounds(0, 0, show_labels ? leading_size.width() : 0, 137 leading_label_->SetBounds(0, 0, show_labels ? leading_size.width() : 0,
156 height()); 138 height());
157 chip_view_->SetBounds(leading_label_->bounds().right(), 139 chip_container_->SetBounds(leading_label_->bounds().right(), 0, chip_width,
158 (height() - chip_view_height_) / 2, chip_width, 140 height());
159 chip_view_height_);
160 gfx::Size trailing_size(trailing_label_->GetPreferredSize()); 141 gfx::Size trailing_size(trailing_label_->GetPreferredSize());
161 trailing_label_->SetBounds(chip_view_->bounds().right(), 0, 142 trailing_label_->SetBounds(chip_container_->bounds().right(), 0,
162 show_labels ? trailing_size.width() : 0, height()); 143 show_labels ? trailing_size.width() : 0, height());
163 } 144 }
164 145
165 const char* KeywordHintView::GetClassName() const { 146 const char* KeywordHintView::GetClassName() const {
166 return "KeywordHintView"; 147 return "KeywordHintView";
167 } 148 }
168 149
169 views::Label* KeywordHintView::CreateLabel(const gfx::FontList& font_list, 150 views::Label* KeywordHintView::CreateLabel(const gfx::FontList& font_list,
170 SkColor text_color, 151 SkColor text_color,
171 SkColor background_color) { 152 SkColor background_color) {
172 views::Label* label = new views::Label(base::string16(), {font_list}); 153 views::Label* label = new views::Label(base::string16(), {font_list});
173 label->SetEnabledColor(text_color); 154 label->SetEnabledColor(text_color);
174 label->SetBackgroundColor(background_color); 155 label->SetBackgroundColor(background_color);
175 AddChildView(label); 156 AddChildView(label);
176 return label; 157 return label;
177 } 158 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/location_bar/keyword_hint_view.h ('k') | chrome/browser/ui/views/location_bar/location_bar_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698