| 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 "ash/system/tray/tray_views.h" | 5 #include "ash/system/tray/tray_views.h" |
| 6 | 6 |
| 7 #include "ash/ash_constants.h" | 7 #include "ash/ash_constants.h" |
| 8 #include "ash/system/tray/tray_constants.h" | 8 #include "ash/system/tray/tray_constants.h" |
| 9 #include "ash/system/tray/tray_item_view.h" | 9 #include "ash/system/tray/tray_item_view.h" |
| 10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| 11 #include "grit/ash_resources.h" | 11 #include "grit/ash_resources.h" |
| 12 #include "grit/ash_strings.h" | 12 #include "grit/ash_strings.h" |
| 13 #include "grit/ui_resources.h" | 13 #include "grit/ui_resources.h" |
| 14 #include "ui/base/accessibility/accessible_view_state.h" | 14 #include "ui/base/accessibility/accessible_view_state.h" |
| 15 #include "ui/base/events/event.h" | 15 #include "ui/base/events/event.h" |
| 16 #include "ui/base/resource/resource_bundle.h" | 16 #include "ui/base/resource/resource_bundle.h" |
| 17 #include "ui/compositor/layer.h" |
| 18 #include "ui/compositor/scoped_layer_animation_settings.h" |
| 17 #include "ui/gfx/canvas.h" | 19 #include "ui/gfx/canvas.h" |
| 18 #include "ui/gfx/image/image.h" | 20 #include "ui/gfx/image/image.h" |
| 19 #include "ui/gfx/image/image_skia.h" | 21 #include "ui/gfx/image/image_skia.h" |
| 20 #include "ui/gfx/rect.h" | 22 #include "ui/gfx/rect.h" |
| 21 #include "ui/gfx/text_constants.h" | 23 #include "ui/gfx/text_constants.h" |
| 22 #include "ui/gfx/vector2d.h" | 24 #include "ui/gfx/vector2d.h" |
| 23 #include "ui/native_theme/native_theme.h" | 25 #include "ui/native_theme/native_theme.h" |
| 24 #include "ui/views/border.h" | 26 #include "ui/views/border.h" |
| 25 #include "ui/views/controls/button/image_button.h" | 27 #include "ui/views/controls/button/image_button.h" |
| 26 #include "ui/views/controls/label.h" | 28 #include "ui/views/controls/label.h" |
| 27 #include "ui/views/layout/box_layout.h" | 29 #include "ui/views/layout/box_layout.h" |
| 28 #include "ui/views/layout/fill_layout.h" | 30 #include "ui/views/layout/fill_layout.h" |
| 29 #include "ui/views/layout/grid_layout.h" | 31 #include "ui/views/layout/grid_layout.h" |
| 30 #include "ui/views/painter.h" | 32 #include "ui/views/painter.h" |
| 31 | 33 |
| 32 namespace ash { | 34 namespace ash { |
| 33 namespace internal { | 35 namespace internal { |
| 34 | 36 |
| 35 namespace { | 37 namespace { |
| 36 const int kIconPaddingLeft = 5; | 38 const int kIconPaddingLeft = 5; |
| 37 const int kPopupDetailLabelExtraLeftMargin = 8; | 39 const int kPopupDetailLabelExtraLeftMargin = 8; |
| 38 const int kCheckLabelPadding = 4; | 40 const int kCheckLabelPadding = 4; |
| 39 const int kSpecialPopupRowHeight = 55; | 41 const int kSpecialPopupRowHeight = 55; |
| 40 const int kTrayPopupLabelButtonPaddingHorizontal = 16; | 42 const int kTrayPopupLabelButtonPaddingHorizontal = 16; |
| 41 const int kTrayPopupLabelButtonPaddingVertical = 8; | 43 const int kTrayPopupLabelButtonPaddingVertical = 8; |
| 42 | 44 |
| 45 // Time in ms per throbber frame. |
| 46 const int kThrobberFrameMs = 50; |
| 47 |
| 48 // Duration for showing/hiding animation in milliseconds. |
| 49 const int kThrobberAnimationDurationMs = 200; |
| 50 |
| 43 const int kBarImagesActive[] = { | 51 const int kBarImagesActive[] = { |
| 44 IDR_SLIDER_ACTIVE_LEFT, | 52 IDR_SLIDER_ACTIVE_LEFT, |
| 45 IDR_SLIDER_ACTIVE_CENTER, | 53 IDR_SLIDER_ACTIVE_CENTER, |
| 46 IDR_SLIDER_ACTIVE_RIGHT, | 54 IDR_SLIDER_ACTIVE_RIGHT, |
| 47 }; | 55 }; |
| 48 | 56 |
| 49 const int kBarImagesDisabled[] = { | 57 const int kBarImagesDisabled[] = { |
| 50 IDR_SLIDER_DISABLED_LEFT, | 58 IDR_SLIDER_DISABLED_LEFT, |
| 51 IDR_SLIDER_DISABLED_CENTER, | 59 IDR_SLIDER_DISABLED_CENTER, |
| 52 IDR_SLIDER_DISABLED_RIGHT, | 60 IDR_SLIDER_DISABLED_RIGHT, |
| (...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 bar_image_y + image_height_ - 3, | 612 bar_image_y + image_height_ - 3, |
| 605 rect.width(), | 613 rect.width(), |
| 606 title_size.height()); | 614 title_size.height()); |
| 607 } | 615 } |
| 608 } | 616 } |
| 609 | 617 |
| 610 void TrayBarButtonWithTitle::UpdateButton(bool control_on) { | 618 void TrayBarButtonWithTitle::UpdateButton(bool control_on) { |
| 611 image_->Update(control_on); | 619 image_->Update(control_on); |
| 612 } | 620 } |
| 613 | 621 |
| 622 SystemTrayThrobber::SystemTrayThrobber(int frame_delay_ms) |
| 623 : views::SmoothedThrobber(frame_delay_ms) { |
| 624 } |
| 625 |
| 626 SystemTrayThrobber::~SystemTrayThrobber() { |
| 627 } |
| 628 |
| 629 void SystemTrayThrobber::SetTooltipText(const string16& tooltip_text) { |
| 630 tooltip_text_ = tooltip_text; |
| 631 } |
| 632 |
| 633 bool SystemTrayThrobber::GetTooltipText(const gfx::Point& p, |
| 634 string16* tooltip) const { |
| 635 if (tooltip_text_.empty()) |
| 636 return false; |
| 637 |
| 638 *tooltip = tooltip_text_; |
| 639 return true; |
| 640 } |
| 641 |
| 642 ThrobberView::ThrobberView() { |
| 643 throbber_ = new SystemTrayThrobber(kThrobberFrameMs); |
| 644 throbber_->set_stop_delay_ms(kThrobberAnimationDurationMs); |
| 645 AddChildView(throbber_); |
| 646 |
| 647 SetPaintToLayer(true); |
| 648 layer()->SetFillsBoundsOpaquely(false); |
| 649 layer()->SetOpacity(0.0); |
| 650 } |
| 651 |
| 652 ThrobberView::~ThrobberView() { |
| 653 } |
| 654 |
| 655 gfx::Size ThrobberView::GetPreferredSize() { |
| 656 return gfx::Size(ash::kTrayPopupItemHeight, ash::kTrayPopupItemHeight); |
| 657 } |
| 658 |
| 659 void ThrobberView::Layout() { |
| 660 View* child = child_at(0); |
| 661 gfx::Size ps = child->GetPreferredSize(); |
| 662 child->SetBounds((width() - ps.width()) / 2, |
| 663 (height() - ps.height()) / 2, |
| 664 ps.width(), ps.height()); |
| 665 SizeToPreferredSize(); |
| 666 } |
| 667 |
| 668 bool ThrobberView::GetTooltipText(const gfx::Point& p, |
| 669 string16* tooltip) const { |
| 670 if (tooltip_text_.empty()) |
| 671 return false; |
| 672 |
| 673 *tooltip = tooltip_text_; |
| 674 return true; |
| 675 } |
| 676 |
| 677 void ThrobberView::Start() { |
| 678 ScheduleAnimation(true); |
| 679 throbber_->Start(); |
| 680 } |
| 681 |
| 682 void ThrobberView::Stop() { |
| 683 ScheduleAnimation(false); |
| 684 throbber_->Stop(); |
| 685 } |
| 686 |
| 687 void ThrobberView::SetTooltipText(const string16& tooltip_text) { |
| 688 tooltip_text_ = tooltip_text; |
| 689 throbber_->SetTooltipText(tooltip_text); |
| 690 } |
| 691 |
| 692 void ThrobberView::ScheduleAnimation(bool start_throbber) { |
| 693 // Stop any previous animation. |
| 694 layer()->GetAnimator()->StopAnimating(); |
| 695 |
| 696 ui::ScopedLayerAnimationSettings animation(layer()->GetAnimator()); |
| 697 animation.SetTransitionDuration( |
| 698 base::TimeDelta::FromMilliseconds(kThrobberAnimationDurationMs)); |
| 699 |
| 700 layer()->SetOpacity(start_throbber ? 1.0 : 0.0); |
| 701 } |
| 702 |
| 614 //////////////////////////////////////////////////////////////////////////////// | 703 //////////////////////////////////////////////////////////////////////////////// |
| 615 // SpecialPopupRow | 704 // SpecialPopupRow |
| 616 | 705 |
| 617 SpecialPopupRow::SpecialPopupRow() | 706 SpecialPopupRow::SpecialPopupRow() |
| 618 : content_(NULL), | 707 : content_(NULL), |
| 619 button_container_(NULL) { | 708 button_container_(NULL) { |
| 620 views::Background* background = views::Background::CreateBackgroundPainter( | 709 views::Background* background = views::Background::CreateBackgroundPainter( |
| 621 true, views::Painter::CreateVerticalGradient(kHeaderBackgroundColorLight, | 710 true, views::Painter::CreateVerticalGradient(kHeaderBackgroundColorLight, |
| 622 kHeaderBackgroundColorDark)); | 711 kHeaderBackgroundColorDark)); |
| 623 background->SetNativeControlColor(kHeaderBackgroundColorDark); | 712 background->SetNativeControlColor(kHeaderBackgroundColorDark); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 | 751 |
| 663 void SpecialPopupRow::AddButton(TrayPopupHeaderButton* button) { | 752 void SpecialPopupRow::AddButton(TrayPopupHeaderButton* button) { |
| 664 if (!button_container_) { | 753 if (!button_container_) { |
| 665 button_container_ = CreatePopupHeaderButtonsContainer(); | 754 button_container_ = CreatePopupHeaderButtonsContainer(); |
| 666 AddChildView(button_container_); | 755 AddChildView(button_container_); |
| 667 } | 756 } |
| 668 | 757 |
| 669 button_container_->AddChildView(button); | 758 button_container_->AddChildView(button); |
| 670 } | 759 } |
| 671 | 760 |
| 761 void SpecialPopupRow::AddThrobber(ThrobberView* throbber) { |
| 762 if (!button_container_) { |
| 763 button_container_ = CreatePopupHeaderButtonsContainer(); |
| 764 AddChildView(button_container_); |
| 765 } |
| 766 |
| 767 button_container_->AddChildView(throbber); |
| 768 } |
| 769 |
| 672 gfx::Size SpecialPopupRow::GetPreferredSize() { | 770 gfx::Size SpecialPopupRow::GetPreferredSize() { |
| 673 gfx::Size size = views::View::GetPreferredSize(); | 771 gfx::Size size = views::View::GetPreferredSize(); |
| 674 size.set_height(kSpecialPopupRowHeight); | 772 size.set_height(kSpecialPopupRowHeight); |
| 675 return size; | 773 return size; |
| 676 } | 774 } |
| 677 | 775 |
| 678 void SpecialPopupRow::Layout() { | 776 void SpecialPopupRow::Layout() { |
| 679 views::View::Layout(); | 777 views::View::Layout(); |
| 680 gfx::Rect content_bounds = GetContentsBounds(); | 778 gfx::Rect content_bounds = GetContentsBounds(); |
| 681 if (content_bounds.IsEmpty()) | 779 if (content_bounds.IsEmpty()) |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 740 tray_view->set_border(views::Border::CreateEmptyBorder( | 838 tray_view->set_border(views::Border::CreateEmptyBorder( |
| 741 kTrayLabelItemVerticalPaddingVeriticalAlignment, | 839 kTrayLabelItemVerticalPaddingVeriticalAlignment, |
| 742 horizontal_padding, | 840 horizontal_padding, |
| 743 kTrayLabelItemVerticalPaddingVeriticalAlignment, | 841 kTrayLabelItemVerticalPaddingVeriticalAlignment, |
| 744 horizontal_padding)); | 842 horizontal_padding)); |
| 745 } | 843 } |
| 746 } | 844 } |
| 747 | 845 |
| 748 } // namespace internal | 846 } // namespace internal |
| 749 } // namespace ash | 847 } // namespace ash |
| OLD | NEW |