- add sources.
[platform/framework/web/crosswalk.git] / src / ash / system / chromeos / managed / tray_locally_managed_user.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_CHROMEOS_LOCALLY_MANAGED_TRAY_LOCALLY_MANAGED_USER_H
6 #define ASH_SYSTEM_CHROMEOS_LOCALLY_MANAGED_TRAY_LOCALLY_MANAGED_USER_H
7
8 #include "ash/ash_export.h"
9 #include "ash/system/tray/system_tray_item.h"
10 #include "ash/system/tray/view_click_listener.h"
11 #include "base/strings/string16.h"
12
13 namespace ash {
14 class SystemTray;
15
16 namespace internal {
17
18 class LabelTrayView;
19
20 class ASH_EXPORT TrayLocallyManagedUser : public SystemTrayItem,
21                                           public ViewClickListener {
22  public:
23   explicit TrayLocallyManagedUser(SystemTray* system_tray);
24   virtual ~TrayLocallyManagedUser();
25
26   // If message is not empty updates content of default view, otherwise hides
27   // tray items.
28   void UpdateMessage();
29
30   // Overridden from SystemTrayItem.
31   virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
32   virtual void DestroyDefaultView() OVERRIDE;
33   virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
34
35   // Overridden from ViewClickListener.
36   virtual void OnViewClicked(views::View* sender) OVERRIDE;
37
38  private:
39   friend class TrayLocallyManagedUserTest;
40
41   static const char kNotificationId[];
42
43   void CreateOrUpdateNotification(const base::string16& new_message);
44
45   LabelTrayView* tray_view_;
46   // Previous login status to avoid showing notification upon unlock.
47   user::LoginStatus status_;
48
49   DISALLOW_COPY_AND_ASSIGN(TrayLocallyManagedUser);
50 };
51
52 } // namespace internal
53 } // namespace ash
54
55 #endif  // ASH_SYSTEM_CHROMEOS_LOCALLY_MANAGED_TRAY_LOCALLY_MANAGED_USER_H