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_CAPS_LOCK_H_ 6 #define ASH_SYSTEM_TRAY_CAPS_LOCK_H_ 7 8 #include "ash/system/tray/tray_image_item.h" 9 10 namespace views { 11 class ImageView; 12 class View; 13 } 14 15 namespace ash { 16 17 class ASH_EXPORT CapsLockObserver { 18 public: 19 virtual ~CapsLockObserver() {} 20 21 virtual void OnCapsLockChanged(bool enabled, 22 bool search_mapped_to_caps_lock) = 0; 23 }; 24 25 namespace internal { 26 27 class CapsLockDefaultView; 28 29 class TrayCapsLock : public TrayImageItem, 30 public CapsLockObserver { 31 public: 32 explicit TrayCapsLock(SystemTray* system_tray); 33 virtual ~TrayCapsLock(); 34 35 private: 36 // Overridden from TrayImageItem. 37 virtual bool GetInitialVisibility() OVERRIDE; 38 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 39 virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 40 virtual void DestroyDefaultView() OVERRIDE; 41 virtual void DestroyDetailedView() OVERRIDE; 42 43 // Overridden from CapsLockObserver. 44 virtual void OnCapsLockChanged(bool enabled, 45 bool search_mapped_to_caps_lock) OVERRIDE; 46 47 CapsLockDefaultView* default_; 48 views::View* detailed_; 49 50 bool search_mapped_to_caps_lock_; 51 bool caps_lock_enabled_; 52 bool message_shown_; 53 54 DISALLOW_COPY_AND_ASSIGN(TrayCapsLock); 55 }; 56 57 } // namespace internal 58 } // namespace ash 59 60 #endif // ASH_SYSTEM_TRAY_CAPS_LOCK_H_ 61