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

Side by Side Diff: ash/system/tray/tray_item_view.h

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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef ASH_SYSTEM_TRAY_TRAY_ITEM_VIEW_H_
6 #define ASH_SYSTEM_TRAY_TRAY_ITEM_VIEW_H_
7 #pragma once
8
9 #include "ui/base/animation/animation_delegate.h"
10 #include "ui/views/view.h"
11
12 namespace ui {
13 class SlideAnimation;
14 }
15
16 namespace views {
17 class ImageView;
18 class Label;
19 }
20
21 namespace ash {
22 namespace internal {
23
24 // Base-class for items in the tray. It makes sure the widget is updated
25 // correctly when the visibility/size of the tray item changes. It also adds
26 // animation when showing/hiding the item in the tray.
27 class TrayItemView : public views::View,
28 public ui::AnimationDelegate {
29 public:
30 TrayItemView();
31 virtual ~TrayItemView();
32
33 // Conveniece function for creating a child Label or ImageView.
34 void CreateLabel();
35 void CreateImageView();
36
37 views::Label* label() { return label_; }
38 views::ImageView* image_view() { return image_view_; }
39
40 // Overridden from views::View.
41 virtual void SetVisible(bool visible) OVERRIDE;
42
43 protected:
44 // Makes sure the widget relayouts after the size/visibility of the view
45 // changes.
46 void ApplyChange();
47
48 // This should return the desired size of the view. For most views, this
49 // returns GetPreferredSize. But since this class overrides GetPreferredSize
50 // for animation purposes, we allow a different way to get this size, and do
51 // not allow GetPreferredSize to be overridden.
52 virtual gfx::Size DesiredSize();
53
54 // The default animation duration is 200ms. But each view can customize this.
55 virtual int GetAnimationDurationMS();
56
57 // Overridden from views::View.
58 virtual void PreferredSizeChanged() OVERRIDE;
59
60 // Overridden from ui::AnimationDelegate.
Ben Goodger (Google) 2012/04/23 15:33:42 Can these be private? If so, flow them after GetPr
sadrul 2012/04/23 16:07:58 Done.
61 virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE;
62 virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE;
63 virtual void AnimationCanceled(const ui::Animation* animation) OVERRIDE;
64
65 private:
66 // Overridden from views::View.
67 virtual gfx::Size GetPreferredSize() OVERRIDE;
68
69 scoped_ptr<ui::SlideAnimation> animation_;
70 views::Label* label_;
71 views::ImageView* image_view_;
72
73 DISALLOW_COPY_AND_ASSIGN(TrayItemView);
74 };
75
76 } // namespace internal
77 } // namespace ash
78
79 #endif // ASH_SYSTEM_TRAY_TRAY_ITEM_VIEW_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698