Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / ash / system / tray / tray_notification_view.h
blob28c2236ea13fad3534bda9afa597b5de112bf4b3
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.
5 #ifndef ASH_SYSTEM_TRAY_TRAY_NOTIFICATION_VIEW_H_
6 #define ASH_SYSTEM_TRAY_TRAY_NOTIFICATION_VIEW_H_
8 #include "base/timer/timer.h"
9 #include "ui/views/controls/button/image_button.h"
10 #include "ui/views/controls/slide_out_view.h"
12 namespace gfx {
13 class ImageSkia;
16 namespace views {
17 class ImageView;
20 namespace ash {
21 class SystemTrayItem;
23 // A view for closable notification views, laid out like:
24 // -------------------
25 // | icon contents x |
26 // ----------------v--
27 // The close button will call OnClose() when clicked.
28 class TrayNotificationView : public views::SlideOutView,
29 public views::ButtonListener {
30 public:
31 // If icon_id is 0, no icon image will be set. SetIconImage can be called
32 // to later set the icon image.
33 TrayNotificationView(SystemTrayItem* owner, int icon_id);
34 virtual ~TrayNotificationView();
36 // InitView must be called once with the contents to be displayed.
37 void InitView(views::View* contents);
39 // Sets/updates the icon image.
40 void SetIconImage(const gfx::ImageSkia& image);
42 // Gets the icons image.
43 const gfx::ImageSkia& GetIconImage() const;
45 // Replaces the contents view.
46 void UpdateView(views::View* new_contents);
48 // Replaces the contents view and updates the icon image.
49 void UpdateViewAndImage(views::View* new_contents,
50 const gfx::ImageSkia& image);
52 // Autoclose timer operations.
53 void StartAutoCloseTimer(int seconds);
54 void StopAutoCloseTimer();
55 void RestartAutoCloseTimer();
57 // Overridden from ButtonListener.
58 virtual void ButtonPressed(views::Button* sender,
59 const ui::Event& event) OVERRIDE;
61 // Overridden from views::View.
62 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
64 // Overridden from ui::EventHandler.
65 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
67 protected:
68 // Called when the close button is pressed. Does nothing by default.
69 virtual void OnClose();
70 // Called when the notification is clicked on. Does nothing by default.
71 virtual void OnClickAction();
73 // Overridden from views::SlideOutView.
74 virtual void OnSlideOut() OVERRIDE;
76 SystemTrayItem* owner() { return owner_; }
78 private:
79 void HandleClose();
80 void HandleClickAction();
82 SystemTrayItem* owner_;
83 int icon_id_;
84 views::ImageView* icon_;
86 int autoclose_delay_;
87 base::OneShotTimer<TrayNotificationView> autoclose_;
89 DISALLOW_COPY_AND_ASSIGN(TrayNotificationView);
92 } // namespace ash
94 #endif // ASH_SYSTEM_TRAY_TRAY_NOTIFICATION_VIEW_H_