1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file.
4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#ifndef ASH_SYSTEM_USER_ACCOUNTS_DETAILED_VIEW_H_
6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define ASH_SYSTEM_USER_ACCOUNTS_DETAILED_VIEW_H_
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include <map>
9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include <string>
10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/system/tray/tray_details_view.h"
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/system/tray/view_click_listener.h"
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/system/user/login_status.h"
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/system/user/user_accounts_delegate.h"
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ash/system/user/user_view.h"
16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "base/macros.h"
17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/views/controls/button/button.h"
18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/views/controls/label.h"
19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace ash {
21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass TrayUser;
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace tray {
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// This detailed view appears after a click on the primary user's card when the
27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// new account managment is enabled.
28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass AccountsDetailedView : public TrayDetailsView,
29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                             public ViewClickListener,
30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                             public views::ButtonListener,
31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                             public ash::tray::UserAccountsDelegate::Observer {
32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public:
33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  AccountsDetailedView(TrayUser* owner, user::LoginStatus login_status);
34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual ~AccountsDetailedView();
35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private:
37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Overridden from ViewClickListener.
38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void OnViewClicked(views::View* sender) OVERRIDE;
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Overridden from views::ButtonListener.
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void ButtonPressed(views::Button* sender,
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                             const ui::Event& event) OVERRIDE;
43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Overridden from ash::tray::UserAccountsDelegate::Observer.
45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void AccountListChanged() OVERRIDE;
46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  void AddHeader(user::LoginStatus login_status);
48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  void AddAccountList();
49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  void AddAddAccountButton();
50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  void AddFooter();
51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  void UpdateAccountList();
53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  views::View* CreateDeleteButton();
55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  ash::tray::UserAccountsDelegate* delegate_;
57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  views::View* account_list_;
58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  views::View* add_account_button_;
59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  views::View* add_user_button_;
60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  std::map<views::View*, std::string> delete_button_to_account_id_;
61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  DISALLOW_COPY_AND_ASSIGN(AccountsDetailedView);
63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch};
64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace tray
66a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace ash
67a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
68a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif  // ASH_SYSTEM_USER_ACCOUNTS_DETAILED_VIEW_H_
69