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