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_MORE_H_ 6 #define ASH_SYSTEM_TRAY_TRAY_ITEM_MORE_H_ 7 8 #include "ash/system/tray/actionable_view.h" 9 #include "ui/views/view.h" 10 11 namespace views { 12 class ImageView; 13 class Label; 14 class View; 15 } 16 17 namespace ash { 18 class SystemTrayItem; 19 20 // A view with a chevron ('>') on the right edge. Clicking on the view brings up 21 // the detailed view of the tray-item that owns it. 22 class TrayItemMore : public ActionableView { 23 public: 24 TrayItemMore(SystemTrayItem* owner, bool show_more); 25 virtual ~TrayItemMore(); 26 owner()27 SystemTrayItem* owner() const { return owner_; } 28 29 void SetLabel(const base::string16& label); 30 void SetImage(const gfx::ImageSkia* image_skia); 31 void SetAccessibleName(const base::string16& name); 32 33 protected: 34 // Replaces the default icon (on the left of the label), and allows a custom 35 // view to be placed there. Once the default icon is replaced, |SetImage| 36 // should never be called. 37 void ReplaceIcon(views::View* view); 38 39 private: 40 // Overridden from ActionableView. 41 virtual bool PerformAction(const ui::Event& event) OVERRIDE; 42 43 // Overridden from views::View. 44 virtual void Layout() OVERRIDE; 45 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; 46 47 SystemTrayItem* owner_; 48 // True if |more_| should be shown. 49 bool show_more_; 50 views::ImageView* icon_; 51 views::Label* label_; 52 views::ImageView* more_; 53 base::string16 accessible_name_; 54 55 DISALLOW_COPY_AND_ASSIGN(TrayItemMore); 56 }; 57 58 } // namespace ash 59 60 #endif // ASH_SYSTEM_TRAY_TRAY_ITEM_MORE_H_ 61