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

Side by Side Diff: ui/app_list/views/search_box_view.cc

Issue 12789010: [win] Change app launcher profile indicator to be a menu. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clang fail 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 | « ui/app_list/views/search_box_view.h ('k') | ui/base/strings/ui_strings.grd » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ui/app_list/views/search_box_view.h" 5 #include "ui/app_list/views/search_box_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "grit/ui_resources.h"
9 #include "ui/app_list/search_box_model.h" 10 #include "ui/app_list/search_box_model.h"
10 #include "ui/app_list/search_box_view_delegate.h" 11 #include "ui/app_list/search_box_view_delegate.h"
11 #include "ui/base/events/event.h" 12 #include "ui/base/events/event.h"
12 #include "ui/base/resource/resource_bundle.h" 13 #include "ui/base/resource/resource_bundle.h"
14 #include "ui/views/controls/button/menu_button.h"
13 #include "ui/views/controls/image_view.h" 15 #include "ui/views/controls/image_view.h"
14 #include "ui/views/controls/textfield/textfield.h" 16 #include "ui/views/controls/textfield/textfield.h"
15 17
16 namespace app_list { 18 namespace app_list {
17 19
18 namespace { 20 namespace {
19 21
20 const int kPadding = 14; 22 const int kPadding = 14;
21 const int kIconDimension = 32; 23 const int kIconDimension = 32;
22 const int kPreferredWidth = 360; 24 const int kPreferredWidth = 360;
23 const int kPreferredHeight = 48; 25 const int kPreferredHeight = 48;
24 const int kEditHeight = 19; 26 const int kEditHeight = 19;
27 const int kMenuButtonDimension = 29;
25 28
26 const SkColor kHintTextColor = SkColorSetRGB(0xA0, 0xA0, 0xA0); 29 const SkColor kHintTextColor = SkColorSetRGB(0xA0, 0xA0, 0xA0);
27 30
28 } // namespace 31 } // namespace
29 32
30 SearchBoxView::SearchBoxView(SearchBoxViewDelegate* delegate) 33 SearchBoxView::SearchBoxView(SearchBoxViewDelegate* delegate,
34 AppListViewDelegate* view_delegate)
31 : delegate_(delegate), 35 : delegate_(delegate),
32 model_(NULL), 36 model_(NULL),
37 menu_(view_delegate),
33 icon_view_(new views::ImageView), 38 icon_view_(new views::ImageView),
34 user_icon_view_(new views::ImageView),
35 search_box_(new views::Textfield), 39 search_box_(new views::Textfield),
36 contents_view_(NULL) { 40 contents_view_(NULL) {
37 AddChildView(icon_view_); 41 AddChildView(icon_view_);
38 AddChildView(user_icon_view_); 42
43 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
44
45 #if !defined(OS_CHROMEOS)
46 menu_button_ = new views::MenuButton(NULL, string16(), this, false);
47 menu_button_->set_border(NULL);
48 menu_button_->SetIcon(*rb.GetImageSkiaNamed(IDR_APP_LIST_TOOLS_NORMAL));
49 menu_button_->SetHoverIcon(*rb.GetImageSkiaNamed(IDR_APP_LIST_TOOLS_HOVER));
50 menu_button_->SetPushedIcon(*rb.GetImageSkiaNamed(
51 IDR_APP_LIST_TOOLS_PRESSED));
52 AddChildView(menu_button_);
53 #endif
39 54
40 search_box_->RemoveBorder(); 55 search_box_->RemoveBorder();
41 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
42 search_box_->SetFont(rb.GetFont(ui::ResourceBundle::MediumFont)); 56 search_box_->SetFont(rb.GetFont(ui::ResourceBundle::MediumFont));
43 search_box_->set_placeholder_text_color(kHintTextColor); 57 search_box_->set_placeholder_text_color(kHintTextColor);
44 search_box_->SetController(this); 58 search_box_->SetController(this);
45 AddChildView(search_box_); 59 AddChildView(search_box_);
46 } 60 }
47 61
48 SearchBoxView::~SearchBoxView() { 62 SearchBoxView::~SearchBoxView() {
49 if (model_) 63 if (model_)
50 model_->RemoveObserver(this); 64 model_->RemoveObserver(this);
51 } 65 }
52 66
53 void SearchBoxView::SetModel(SearchBoxModel* model) { 67 void SearchBoxView::SetModel(SearchBoxModel* model) {
54 if (model_ == model) 68 if (model_ == model)
55 return; 69 return;
56 70
57 if (model_) 71 if (model_)
58 model_->RemoveObserver(this); 72 model_->RemoveObserver(this);
59 73
60 model_ = model; 74 model_ = model;
61 if (model_) { 75 if (model_) {
62 model_->AddObserver(this); 76 model_->AddObserver(this);
63 IconChanged(); 77 IconChanged();
64 UserIconChanged();
65 HintTextChanged(); 78 HintTextChanged();
66 UserIconTooltipChanged();
67 } 79 }
68 } 80 }
69 81
70 gfx::Size SearchBoxView::GetPreferredSize() { 82 gfx::Size SearchBoxView::GetPreferredSize() {
71 return gfx::Size(kPreferredWidth, kPreferredHeight); 83 return gfx::Size(kPreferredWidth, kPreferredHeight);
72 } 84 }
73 85
74 void SearchBoxView::Layout() { 86 void SearchBoxView::Layout() {
75 gfx::Rect rect(GetContentsBounds()); 87 gfx::Rect rect(GetContentsBounds());
76 if (rect.IsEmpty()) 88 if (rect.IsEmpty())
77 return; 89 return;
78 90
79 gfx::Size icon_size(kIconDimension, kIconDimension);
80 gfx::Rect icon_frame(rect); 91 gfx::Rect icon_frame(rect);
81 icon_frame.set_width(icon_size.width() + 2 * kPadding); 92 icon_frame.set_width(kIconDimension + 2 * kPadding);
82 icon_view_->SetBoundsRect(icon_frame); 93 icon_view_->SetBoundsRect(icon_frame);
83 94
84 gfx::Rect user_icon_frame(rect); 95 gfx::Rect menu_button_frame(rect);
85 user_icon_frame.set_width(icon_size.width() + 2 * kPadding); 96 #if !defined(OS_CHROMEOS)
86 user_icon_frame.set_x(rect.right() - user_icon_frame.width()); 97 menu_button_frame.set_width(kMenuButtonDimension);
87 if (!model_->user_icon_enabled()) { 98 menu_button_frame.set_x(rect.right() - menu_button_frame.width() - kPadding);
88 user_icon_frame.set_width(0); 99 menu_button_frame.ClampToCenteredSize(gfx::Size(menu_button_frame.width(),
89 } 100 kMenuButtonDimension));
90 user_icon_view_->SetVisible(model_->user_icon_enabled()); 101 menu_button_->SetBoundsRect(menu_button_frame);
91 user_icon_view_->SetBoundsRect(user_icon_frame); 102 #else
103 menu_button_frame.set_width(0);
104 #endif
92 105
93 gfx::Rect edit_frame(rect); 106 gfx::Rect edit_frame(rect);
94 edit_frame.set_x(icon_frame.right()); 107 edit_frame.set_x(icon_frame.right());
95 edit_frame.set_width( 108 edit_frame.set_width(
96 rect.width() - icon_frame.width() - kPadding - user_icon_frame.width()); 109 rect.width() - icon_frame.width() - kPadding - menu_button_frame.width());
97 edit_frame.ClampToCenteredSize(gfx::Size(edit_frame.width(), kEditHeight)); 110 edit_frame.ClampToCenteredSize(gfx::Size(edit_frame.width(), kEditHeight));
98 search_box_->SetBoundsRect(edit_frame); 111 search_box_->SetBoundsRect(edit_frame);
99 } 112 }
100 113
101 bool SearchBoxView::OnMouseWheel(const ui::MouseWheelEvent& event) { 114 bool SearchBoxView::OnMouseWheel(const ui::MouseWheelEvent& event) {
102 if (contents_view_) 115 if (contents_view_)
103 return contents_view_->OnMouseWheel(event); 116 return contents_view_->OnMouseWheel(event);
104 117
105 return false; 118 return false;
106 } 119 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 return true; 151 return true;
139 } 152 }
140 153
141 bool handled = false; 154 bool handled = false;
142 if (contents_view_ && contents_view_->visible()) 155 if (contents_view_ && contents_view_->visible())
143 handled = contents_view_->OnKeyPressed(key_event); 156 handled = contents_view_->OnKeyPressed(key_event);
144 157
145 return handled; 158 return handled;
146 } 159 }
147 160
161 void SearchBoxView::OnMenuButtonClicked(View* source, const gfx::Point& point) {
162 menu_.RunMenuAt(menu_button_,
163 menu_button_->GetBoundsInScreen().bottom_right());
164 }
165
148 void SearchBoxView::IconChanged() { 166 void SearchBoxView::IconChanged() {
149 icon_view_->SetImage(model_->icon()); 167 icon_view_->SetImage(model_->icon());
150 } 168 }
151 169
152 void SearchBoxView::HintTextChanged() { 170 void SearchBoxView::HintTextChanged() {
153 search_box_->set_placeholder_text(model_->hint_text()); 171 search_box_->set_placeholder_text(model_->hint_text());
154 } 172 }
155 173
156 void SearchBoxView::SelectionModelChanged() { 174 void SearchBoxView::SelectionModelChanged() {
157 search_box_->SelectSelectionModel(model_->selection_model()); 175 search_box_->SelectSelectionModel(model_->selection_model());
158 } 176 }
159 177
160 void SearchBoxView::TextChanged() { 178 void SearchBoxView::TextChanged() {
161 search_box_->SetText(model_->text()); 179 search_box_->SetText(model_->text());
162 } 180 }
163 181
164 void SearchBoxView::UserIconChanged() {
165 user_icon_view_->SetImage(model_->user_icon());
166 }
167
168 void SearchBoxView::UserIconTooltipChanged() {
169 user_icon_view_->SetTooltipText(model_->user_icon_tooltip());
170 }
171
172 void SearchBoxView::UserIconEnabledChanged() {
173 InvalidateLayout();
174 }
175
176 } // namespace app_list 182 } // namespace app_list
OLDNEW
« no previous file with comments | « ui/app_list/views/search_box_view.h ('k') | ui/base/strings/ui_strings.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698