OLD | NEW |
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/message_center/views/notification_view.h" | 5 #include "ui/message_center/views/notification_view.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "grit/ui_resources.h" | 9 #include "grit/ui_resources.h" |
10 #include "ui/base/accessibility/accessible_view_state.h" | 10 #include "ui/base/accessibility/accessible_view_state.h" |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 public: | 217 public: |
218 NotificationButton(views::ButtonListener* listener); | 218 NotificationButton(views::ButtonListener* listener); |
219 virtual ~NotificationButton(); | 219 virtual ~NotificationButton(); |
220 | 220 |
221 void SetIcon(const gfx::ImageSkia& icon); | 221 void SetIcon(const gfx::ImageSkia& icon); |
222 void SetTitle(const string16& title); | 222 void SetTitle(const string16& title); |
223 | 223 |
224 // Overridden from views::View: | 224 // Overridden from views::View: |
225 virtual gfx::Size GetPreferredSize() OVERRIDE; | 225 virtual gfx::Size GetPreferredSize() OVERRIDE; |
226 virtual int GetHeightForWidth(int width) OVERRIDE; | 226 virtual int GetHeightForWidth(int width) OVERRIDE; |
| 227 virtual void OnFocus() OVERRIDE; |
227 | 228 |
228 // Overridden from views::CustomButton: | 229 // Overridden from views::CustomButton: |
229 virtual void StateChanged() OVERRIDE; | 230 virtual void StateChanged() OVERRIDE; |
230 | 231 |
231 private: | 232 private: |
232 views::ImageView* icon_; | 233 views::ImageView* icon_; |
233 views::Label* title_; | 234 views::Label* title_; |
234 }; | 235 }; |
235 | 236 |
236 NotificationButton::NotificationButton(views::ButtonListener* listener) | 237 NotificationButton::NotificationButton(views::ButtonListener* listener) |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 } | 282 } |
282 | 283 |
283 gfx::Size NotificationButton::GetPreferredSize() { | 284 gfx::Size NotificationButton::GetPreferredSize() { |
284 return gfx::Size(message_center::kNotificationWidth, kButtonHeight); | 285 return gfx::Size(message_center::kNotificationWidth, kButtonHeight); |
285 } | 286 } |
286 | 287 |
287 int NotificationButton::GetHeightForWidth(int width) { | 288 int NotificationButton::GetHeightForWidth(int width) { |
288 return kButtonHeight; | 289 return kButtonHeight; |
289 } | 290 } |
290 | 291 |
| 292 void NotificationButton::OnFocus() { |
| 293 ScrollRectToVisible(GetLocalBounds()); |
| 294 } |
| 295 |
291 void NotificationButton::StateChanged() { | 296 void NotificationButton::StateChanged() { |
292 if (state() == STATE_HOVERED || state() == STATE_PRESSED) | 297 if (state() == STATE_HOVERED || state() == STATE_PRESSED) |
293 set_background(MakeBackground(kHoveredButtonBackgroundColor)); | 298 set_background(MakeBackground(kHoveredButtonBackgroundColor)); |
294 else | 299 else |
295 set_background(NULL); | 300 set_background(NULL); |
296 } | 301 } |
297 | 302 |
298 } // namespace | 303 } // namespace |
299 | 304 |
300 namespace message_center { | 305 namespace message_center { |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 if (!IsExpansionNeeded()) { | 496 if (!IsExpansionNeeded()) { |
492 expand_button()->SetVisible(false); | 497 expand_button()->SetVisible(false); |
493 } else { | 498 } else { |
494 gfx::Size expand_size(expand_button()->GetPreferredSize()); | 499 gfx::Size expand_size(expand_button()->GetPreferredSize()); |
495 int expand_y = bottom_y - expand_size.height(); | 500 int expand_y = bottom_y - expand_size.height(); |
496 expand_button()->SetBounds(content_right - expand_size.width(), expand_y, | 501 expand_button()->SetBounds(content_right - expand_size.width(), expand_y, |
497 expand_size.width(), expand_size.height()); | 502 expand_size.width(), expand_size.height()); |
498 } | 503 } |
499 } | 504 } |
500 | 505 |
| 506 void NotificationView::ScrollRectToVisible(const gfx::Rect& rect) { |
| 507 // Notification want to show the whole notification when a part of it (like |
| 508 // a button) gets focused. |
| 509 views::View::ScrollRectToVisible(GetLocalBounds()); |
| 510 } |
| 511 |
501 void NotificationView::ButtonPressed(views::Button* sender, | 512 void NotificationView::ButtonPressed(views::Button* sender, |
502 const ui::Event& event) { | 513 const ui::Event& event) { |
503 // See if the button pressed was an action button. | 514 // See if the button pressed was an action button. |
504 for (size_t i = 0; i < action_buttons_.size(); ++i) { | 515 for (size_t i = 0; i < action_buttons_.size(); ++i) { |
505 if (sender == action_buttons_[i]) { | 516 if (sender == action_buttons_[i]) { |
506 observer()->OnButtonClicked(notification_id(), i); | 517 observer()->OnButtonClicked(notification_id(), i); |
507 return; | 518 return; |
508 } | 519 } |
509 } | 520 } |
510 | 521 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 | 556 |
546 // If there's a title ensure title + message lines <= collapsed line limit. | 557 // If there's a title ensure title + message lines <= collapsed line limit. |
547 if (title_view_) | 558 if (title_view_) |
548 return kMessageCollapsedLineLimit - title_view_->GetLinesForWidth(width()); | 559 return kMessageCollapsedLineLimit - title_view_->GetLinesForWidth(width()); |
549 | 560 |
550 // If there's no title we get an extra line because message lines are shorter. | 561 // If there's no title we get an extra line because message lines are shorter. |
551 return kMessageCollapsedLineLimit + 1; | 562 return kMessageCollapsedLineLimit + 1; |
552 } | 563 } |
553 | 564 |
554 } // namespace message_center | 565 } // namespace message_center |
OLD | NEW |