• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
~CapsLockObserver()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