OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "ash/system/tray/hover_highlight_view.h" | 5 #include "ash/system/tray/hover_highlight_view.h" |
6 | 6 |
7 #include "ash/system/tray/fixed_sized_image_view.h" | 7 #include "ash/system/tray/fixed_sized_image_view.h" |
8 #include "ash/system/tray/tray_constants.h" | 8 #include "ash/system/tray/tray_constants.h" |
9 #include "ash/system/tray/view_click_listener.h" | 9 #include "ash/system/tray/view_click_listener.h" |
10 #include "ui/accessibility/ax_view_state.h" | 10 #include "ui/accessibility/ax_view_state.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 kTrayPopupPaddingBetweenItems)); | 66 kTrayPopupPaddingBetweenItems)); |
67 DoAddIconAndLabel(image, text, highlight); | 67 DoAddIconAndLabel(image, text, highlight); |
68 } | 68 } |
69 | 69 |
70 void HoverHighlightView::DoAddIconAndLabel(const gfx::ImageSkia& image, | 70 void HoverHighlightView::DoAddIconAndLabel(const gfx::ImageSkia& image, |
71 const base::string16& text, | 71 const base::string16& text, |
72 bool highlight) { | 72 bool highlight) { |
73 views::ImageView* image_view = | 73 views::ImageView* image_view = |
74 new FixedSizedImageView(kTrayPopupDetailsIconWidth, 0); | 74 new FixedSizedImageView(kTrayPopupDetailsIconWidth, 0); |
75 image_view->SetImage(image); | 75 image_view->SetImage(image); |
| 76 image_view->SetEnabled(enabled()); |
76 AddChildView(image_view); | 77 AddChildView(image_view); |
77 | 78 |
78 text_label_ = new views::Label(text); | 79 text_label_ = new views::Label(text); |
79 text_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 80 text_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
80 text_label_->SetFontList(GetFontList(highlight)); | 81 text_label_->SetFontList(GetFontList(highlight)); |
81 if (text_default_color_) | 82 if (text_default_color_) |
82 text_label_->SetEnabledColor(text_default_color_); | 83 text_label_->SetEnabledColor(text_default_color_); |
| 84 text_label_->SetEnabled(enabled()); |
83 AddChildView(text_label_); | 85 AddChildView(text_label_); |
84 | 86 |
85 SetAccessibleName(text); | 87 SetAccessibleName(text); |
86 } | 88 } |
87 | 89 |
88 views::Label* HoverHighlightView::AddLabel(const base::string16& text, | 90 views::Label* HoverHighlightView::AddLabel(const base::string16& text, |
89 gfx::HorizontalAlignment alignment, | 91 gfx::HorizontalAlignment alignment, |
90 bool highlight) { | 92 bool highlight) { |
91 SetLayoutManager(new views::FillLayout()); | 93 SetLayoutManager(new views::FillLayout()); |
92 text_label_ = new views::Label(text); | 94 text_label_ = new views::Label(text); |
93 int left_margin = kTrayPopupPaddingHorizontal; | 95 int left_margin = kTrayPopupPaddingHorizontal; |
94 int right_margin = kTrayPopupPaddingHorizontal; | 96 int right_margin = kTrayPopupPaddingHorizontal; |
95 if (alignment != gfx::ALIGN_CENTER) { | 97 if (alignment != gfx::ALIGN_CENTER) { |
96 if (base::i18n::IsRTL()) | 98 if (base::i18n::IsRTL()) |
97 right_margin += kTrayPopupDetailsLabelExtraLeftMargin; | 99 right_margin += kTrayPopupDetailsLabelExtraLeftMargin; |
98 else | 100 else |
99 left_margin += kTrayPopupDetailsLabelExtraLeftMargin; | 101 left_margin += kTrayPopupDetailsLabelExtraLeftMargin; |
100 } | 102 } |
101 text_label_->SetBorder( | 103 text_label_->SetBorder( |
102 views::Border::CreateEmptyBorder(5, left_margin, 5, right_margin)); | 104 views::Border::CreateEmptyBorder(5, left_margin, 5, right_margin)); |
103 text_label_->SetHorizontalAlignment(alignment); | 105 text_label_->SetHorizontalAlignment(alignment); |
104 text_label_->SetFontList(GetFontList(highlight)); | 106 text_label_->SetFontList(GetFontList(highlight)); |
105 // Do not set alpha value in disable color. It will have issue with elide | 107 // Do not set alpha value in disable color. It will have issue with elide |
106 // blending filter in disabled state for rendering label text color. | 108 // blending filter in disabled state for rendering label text color. |
107 text_label_->SetDisabledColor(SkColorSetARGB(255, 127, 127, 127)); | 109 text_label_->SetDisabledColor(SkColorSetARGB(255, 127, 127, 127)); |
108 if (text_default_color_) | 110 if (text_default_color_) |
109 text_label_->SetEnabledColor(text_default_color_); | 111 text_label_->SetEnabledColor(text_default_color_); |
| 112 text_label_->SetEnabled(enabled()); |
110 AddChildView(text_label_); | 113 AddChildView(text_label_); |
111 | 114 |
112 SetAccessibleName(text); | 115 SetAccessibleName(text); |
113 return text_label_; | 116 return text_label_; |
114 } | 117 } |
115 | 118 |
116 views::Label* HoverHighlightView::AddCheckableLabel(const base::string16& text, | 119 views::Label* HoverHighlightView::AddCheckableLabel(const base::string16& text, |
117 bool highlight, | 120 bool highlight, |
118 bool checked) { | 121 bool checked) { |
119 checkable_ = true; | 122 checkable_ = true; |
120 checked_ = checked; | 123 checked_ = checked; |
121 if (checked) { | 124 if (checked) { |
122 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 125 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
123 const gfx::ImageSkia* check = | 126 const gfx::ImageSkia* check = |
124 rb.GetImageNamed(IDR_MENU_CHECK).ToImageSkia(); | 127 rb.GetImageNamed(IDR_MENU_CHECK).ToImageSkia(); |
125 int margin = kTrayPopupPaddingHorizontal + | 128 int margin = kTrayPopupPaddingHorizontal + |
126 kTrayPopupDetailsLabelExtraLeftMargin - kCheckLabelPadding; | 129 kTrayPopupDetailsLabelExtraLeftMargin - kCheckLabelPadding; |
127 SetLayoutManager(new views::BoxLayout( | 130 SetLayoutManager(new views::BoxLayout( |
128 views::BoxLayout::kHorizontal, 0, 3, kCheckLabelPadding)); | 131 views::BoxLayout::kHorizontal, 0, 3, kCheckLabelPadding)); |
129 views::ImageView* image_view = new FixedSizedImageView(margin, 0); | 132 views::ImageView* image_view = new FixedSizedImageView(margin, 0); |
130 image_view->SetImage(check); | 133 image_view->SetImage(check); |
131 image_view->SetHorizontalAlignment(views::ImageView::TRAILING); | 134 image_view->SetHorizontalAlignment(views::ImageView::TRAILING); |
| 135 image_view->SetEnabled(enabled()); |
132 AddChildView(image_view); | 136 AddChildView(image_view); |
133 | 137 |
134 text_label_ = new views::Label(text); | 138 text_label_ = new views::Label(text); |
135 text_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 139 text_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
136 text_label_->SetFontList(GetFontList(highlight)); | 140 text_label_->SetFontList(GetFontList(highlight)); |
137 text_label_->SetDisabledColor(SkColorSetARGB(127, 0, 0, 0)); | 141 text_label_->SetDisabledColor(SkColorSetARGB(127, 0, 0, 0)); |
138 if (text_default_color_) | 142 if (text_default_color_) |
139 text_label_->SetEnabledColor(text_default_color_); | 143 text_label_->SetEnabledColor(text_default_color_); |
| 144 text_label_->SetEnabled(enabled()); |
140 AddChildView(text_label_); | 145 AddChildView(text_label_); |
141 | 146 |
142 SetAccessibleName(text); | 147 SetAccessibleName(text); |
143 return text_label_; | 148 return text_label_; |
144 } | 149 } |
145 return AddLabel(text, gfx::ALIGN_LEFT, highlight); | 150 return AddLabel(text, gfx::ALIGN_LEFT, highlight); |
146 } | 151 } |
147 | 152 |
148 void HoverHighlightView::SetExpandable(bool expandable) { | 153 void HoverHighlightView::SetExpandable(bool expandable) { |
149 if (expandable != expandable_) { | 154 if (expandable != expandable_) { |
150 expandable_ = expandable; | 155 expandable_ = expandable; |
151 InvalidateLayout(); | 156 InvalidateLayout(); |
152 } | 157 } |
153 } | 158 } |
154 | 159 |
155 void HoverHighlightView::SetHoverHighlight(bool hover) { | 160 void HoverHighlightView::SetHoverHighlight(bool hover) { |
| 161 if (!enabled() && hover) |
| 162 return; |
156 if (hover_ == hover) | 163 if (hover_ == hover) |
157 return; | 164 return; |
158 hover_ = hover; | 165 hover_ = hover; |
159 if (!text_label_) | 166 if (!text_label_) |
160 return; | 167 return; |
161 if (hover_ && text_highlight_color_) | 168 if (hover_ && text_highlight_color_) |
162 text_label_->SetEnabledColor(text_highlight_color_); | 169 text_label_->SetEnabledColor(text_highlight_color_); |
163 if (!hover_ && text_default_color_) | 170 if (!hover_ && text_default_color_) |
164 text_label_->SetEnabledColor(text_default_color_); | 171 text_label_->SetEnabledColor(text_default_color_); |
165 SchedulePaint(); | 172 SchedulePaint(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 } | 218 } |
212 } | 219 } |
213 ActionableView::OnGestureEvent(event); | 220 ActionableView::OnGestureEvent(event); |
214 } | 221 } |
215 | 222 |
216 void HoverHighlightView::OnBoundsChanged(const gfx::Rect& previous_bounds) { | 223 void HoverHighlightView::OnBoundsChanged(const gfx::Rect& previous_bounds) { |
217 SetHoverHighlight(IsMouseHovered()); | 224 SetHoverHighlight(IsMouseHovered()); |
218 } | 225 } |
219 | 226 |
220 void HoverHighlightView::OnEnabledChanged() { | 227 void HoverHighlightView::OnEnabledChanged() { |
| 228 if (!enabled()) |
| 229 SetHoverHighlight(false); |
221 for (int i = 0; i < child_count(); ++i) | 230 for (int i = 0; i < child_count(); ++i) |
222 child_at(i)->SetEnabled(enabled()); | 231 child_at(i)->SetEnabled(enabled()); |
223 } | 232 } |
224 | 233 |
225 void HoverHighlightView::OnPaintBackground(gfx::Canvas* canvas) { | 234 void HoverHighlightView::OnPaintBackground(gfx::Canvas* canvas) { |
226 canvas->DrawColor(hover_ ? highlight_color_ : default_color_); | 235 canvas->DrawColor(hover_ ? highlight_color_ : default_color_); |
227 } | 236 } |
228 | 237 |
229 void HoverHighlightView::OnFocus() { | 238 void HoverHighlightView::OnFocus() { |
230 ScrollRectToVisible(gfx::Rect(gfx::Point(), size())); | 239 ScrollRectToVisible(gfx::Rect(gfx::Point(), size())); |
231 ActionableView::OnFocus(); | 240 ActionableView::OnFocus(); |
232 } | 241 } |
233 | 242 |
234 } // namespace ash | 243 } // namespace ash |
OLD | NEW |