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