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

Side by Side Diff: ash/system/tray/system_tray.cc

Issue 9969068: ash: Animate changes in the uber tray. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 8 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 | « ash/system/network/tray_network.cc ('k') | ash/system/tray/system_tray_item.h » ('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 "ash/system/tray/system_tray.h" 5 #include "ash/system/tray/system_tray.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/shell/panel_window.h" 8 #include "ash/shell/panel_window.h"
9 #include "ash/shell_window_ids.h" 9 #include "ash/shell_window_ids.h"
10 #include "ash/system/tray/tray_constants.h" 10 #include "ash/system/tray/tray_constants.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 const int kArrowHeight = 10; 51 const int kArrowHeight = 10;
52 const int kArrowWidth = 20; 52 const int kArrowWidth = 20;
53 const int kArrowPaddingFromRight = 20; 53 const int kArrowPaddingFromRight = 20;
54 54
55 const int kShadowOffset = 3; 55 const int kShadowOffset = 3;
56 const int kShadowHeight = 3; 56 const int kShadowHeight = 3;
57 57
58 const int kLeftPadding = 4; 58 const int kLeftPadding = 4;
59 const int kBottomLineHeight = 1; 59 const int kBottomLineHeight = 1;
60 60
61 const int kTrayIconHeight = 29;
62
63 const SkColor kShadowColor = SkColorSetARGB(25, 0, 0, 0); 61 const SkColor kShadowColor = SkColorSetARGB(25, 0, 0, 0);
64 62
65 const SkColor kTrayBackgroundAlpha = 100; 63 const SkColor kTrayBackgroundAlpha = 100;
66 const SkColor kTrayBackgroundHoverAlpha = 150; 64 const SkColor kTrayBackgroundHoverAlpha = 150;
67 65
68 // Container for items in the tray. It makes sure the widget is updated
69 // correctly when the visibility/size of the tray item changes.
70 // TODO: setup animation.
71 class TrayItemContainer : public views::View {
72 public:
73 explicit TrayItemContainer(views::View* view) : child_(view) {
74 AddChildView(child_);
75 SetVisible(child_->visible());
76 }
77
78 virtual ~TrayItemContainer() {}
79
80 private:
81 // Makes sure the widget relayouts after the size/visibility of the view
82 // changes.
83 void ApplyChange() {
84 // Forcing the widget to the new size is sufficient. The positing is taken
85 // care of by the layout manager (ShelfLayoutManager).
86 GetWidget()->SetSize(GetWidget()->GetContentsView()->GetPreferredSize());
87 }
88
89 // Overridden from views::View.
90 virtual void Layout() {
91 child_->SetBoundsRect(gfx::Rect(size()));
92 }
93
94 virtual gfx::Size GetPreferredSize() OVERRIDE {
95 gfx::Size size = child_->GetPreferredSize();
96 size.set_height(kTrayIconHeight);
97 return size;
98 }
99
100 virtual void ChildPreferredSizeChanged(views::View* child) OVERRIDE {
101 ApplyChange();
102 }
103
104 virtual void ChildVisibilityChanged(views::View* child) OVERRIDE {
105 if (visible() == child_->visible())
106 return;
107 SetVisible(child_->visible());
108 ApplyChange();
109 }
110
111 views::View* child_;
112
113 DISALLOW_COPY_AND_ASSIGN(TrayItemContainer);
114 };
115
116 // A view with some special behaviour for tray items in the popup: 66 // A view with some special behaviour for tray items in the popup:
117 // - changes background color on hover. 67 // - changes background color on hover.
118 // - TODO: accessibility
119 class TrayPopupItemContainer : public views::View { 68 class TrayPopupItemContainer : public views::View {
120 public: 69 public:
121 explicit TrayPopupItemContainer(views::View* view) : hover_(false) { 70 explicit TrayPopupItemContainer(views::View* view) : hover_(false) {
122 set_notify_enter_exit_on_child(true); 71 set_notify_enter_exit_on_child(true);
123 set_border(view->border() ? views::Border::CreateEmptyBorder(0, 0, 0, 0) : 72 set_border(view->border() ? views::Border::CreateEmptyBorder(0, 0, 0, 0) :
124 NULL); 73 NULL);
125 SetLayoutManager(new views::FillLayout); 74 SetLayoutManager(new views::FillLayout);
126 AddChildView(view); 75 AddChildView(view);
127 } 76 }
128 77
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 if (popup_) 441 if (popup_)
493 popup_->CloseNow(); 442 popup_->CloseNow();
494 } 443 }
495 444
496 void SystemTray::AddTrayItem(SystemTrayItem* item) { 445 void SystemTray::AddTrayItem(SystemTrayItem* item) {
497 items_.push_back(item); 446 items_.push_back(item);
498 447
499 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate(); 448 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate();
500 views::View* tray_item = item->CreateTrayView(delegate->GetUserLoginStatus()); 449 views::View* tray_item = item->CreateTrayView(delegate->GetUserLoginStatus());
501 if (tray_item) { 450 if (tray_item) {
502 container_->AddChildViewAt(new TrayItemContainer(tray_item), 0); 451 container_->AddChildViewAt(tray_item, 0);
503 PreferredSizeChanged(); 452 PreferredSizeChanged();
504 } 453 }
505 } 454 }
506 455
507 void SystemTray::RemoveTrayItem(SystemTrayItem* item) { 456 void SystemTray::RemoveTrayItem(SystemTrayItem* item) {
508 NOTIMPLEMENTED(); 457 NOTIMPLEMENTED();
509 } 458 }
510 459
511 void SystemTray::ShowDefaultView() { 460 void SystemTray::ShowDefaultView() {
512 if (popup_) { 461 if (popup_) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 ++it) { 500 ++it) {
552 (*it)->DestroyTrayView(); 501 (*it)->DestroyTrayView();
553 } 502 }
554 container_->RemoveAllChildViews(true); 503 container_->RemoveAllChildViews(true);
555 504
556 for (std::vector<SystemTrayItem*>::iterator it = items_.begin(); 505 for (std::vector<SystemTrayItem*>::iterator it = items_.begin();
557 it != items_.end(); 506 it != items_.end();
558 ++it) { 507 ++it) {
559 views::View* view = (*it)->CreateTrayView(login_status); 508 views::View* view = (*it)->CreateTrayView(login_status);
560 if (view) 509 if (view)
561 container_->AddChildViewAt(new TrayItemContainer(view), 0); 510 container_->AddChildViewAt(view, 0);
562 } 511 }
563 SetVisible(true); 512 SetVisible(true);
564 PreferredSizeChanged(); 513 PreferredSizeChanged();
565 } 514 }
566 515
567 void SystemTray::SetPaintsBackground( 516 void SystemTray::SetPaintsBackground(
568 bool value, 517 bool value,
569 internal::BackgroundAnimator::ChangeType change_type) { 518 internal::BackgroundAnimator::ChangeType change_type) {
570 hide_background_animator_.SetPaintsBackground(value, change_type); 519 hide_background_animator_.SetPaintsBackground(value, change_type);
571 } 520 }
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 popup_->Hide(); 631 popup_->Hide();
683 } 632 }
684 } 633 }
685 return base::EVENT_CONTINUE; 634 return base::EVENT_CONTINUE;
686 } 635 }
687 636
688 void SystemTray::DidProcessEvent(const base::NativeEvent& event) { 637 void SystemTray::DidProcessEvent(const base::NativeEvent& event) {
689 } 638 }
690 639
691 } // namespace ash 640 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/network/tray_network.cc ('k') | ash/system/tray/system_tray_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698