- add sources.
[platform/framework/web/crosswalk.git] / src / ash / system / tray_caps_lock.h
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_