06c81a532a8ace0bb7d16e8120f263cb323d8237
[platform/framework/web/crosswalk.git] / src / ash / system / ime / tray_ime.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_IME_TRAY_IME_H_
6 #define ASH_SYSTEM_IME_TRAY_IME_H_
7
8 #include "ash/system/ime/ime_observer.h"
9 #include "ash/system/tray/system_tray_item.h"
10
11 namespace views {
12 class Label;
13 }
14
15 namespace ash {
16
17 struct IMEInfo;
18
19 namespace internal {
20
21 namespace tray {
22 class IMEDefaultView;
23 class IMEDetailedView;
24 class IMENotificationView;
25 }
26
27 class TrayItemView;
28
29 class TrayIME : public SystemTrayItem,
30                 public IMEObserver {
31  public:
32   explicit TrayIME(SystemTray* system_tray);
33   virtual ~TrayIME();
34
35  private:
36   void UpdateTrayLabel(const IMEInfo& info, size_t count);
37
38   // Overridden from SystemTrayItem.
39   virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE;
40   virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
41   virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE;
42   virtual void DestroyTrayView() OVERRIDE;
43   virtual void DestroyDefaultView() OVERRIDE;
44   virtual void DestroyDetailedView() OVERRIDE;
45   virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
46   virtual void UpdateAfterShelfAlignmentChange(
47       ShelfAlignment alignment) OVERRIDE;
48
49   // Overridden from IMEObserver.
50   virtual void OnIMERefresh() OVERRIDE;
51
52   TrayItemView* tray_label_;
53   tray::IMEDefaultView* default_;
54   tray::IMEDetailedView* detailed_;
55
56   DISALLOW_COPY_AND_ASSIGN(TrayIME);
57 };
58
59 }  // namespace internal
60 }  // namespace ash
61
62 #endif  // ASH_SYSTEM_IME_TRAY_IME_H_