• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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 CHROME_BROWSER_CHROMEOS_LOGIN_USER_VIEW_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USER_VIEW_H_
7 #pragma once
8 
9 #include <string>
10 
11 #include "views/controls/button/button.h"
12 #include "views/controls/link.h"
13 #include "views/view.h"
14 
15 class SkBitmap;
16 
17 namespace views {
18 class ImageView;
19 class TextButton;
20 class Throbber;
21 }  // namespace views
22 
23 namespace chromeos {
24 
25 class SignoutView;
26 class PodImageView;
27 
28 class UserView : public views::View,
29                  public views::LinkController,
30                  public views::ButtonListener {
31  public:
32   class Delegate {
33    public:
~Delegate()34     virtual ~Delegate() {}
35 
36     // Notifies that user pressed signout button on screen locker.
OnSignout()37     virtual void OnSignout() {}
38 
39     // Notifies that user would like to remove this user from login screen.
OnRemoveUser()40     virtual void OnRemoveUser() {}
41 
42     // Returns true if current user is selected.
43     virtual bool IsUserSelected() const = 0;
44 
45     // Notifies about locale change.
OnLocaleChanged()46     virtual void OnLocaleChanged() {}
47   };
48 
49   // Creates UserView for login screen (|is_login| == true) or screen locker.
50   // On login screen this will have remove button.
51   // On screen locker it will have sign out button. |need_background| is needed
52   // to show image with transparent areas.
53   UserView(Delegate* delegate, bool is_login, bool need_background);
54 
55   // view::View overrides.
56   virtual gfx::Size GetPreferredSize();
57   virtual void OnLocaleChanged();
58 
59   // Sets the user's image. If image's size is less than
60   // 75% of window size, image size is preserved to avoid blur. Otherwise,
61   // the image is resized to fit window size precisely. Image view repaints
62   // itself.
63   void SetImage(const SkBitmap& image, const SkBitmap& image_hot);
64 
65   // Sets tooltip over the image.
66   void SetTooltipText(const std::wstring& text);
67 
68   // Show/Hide remove button.
69   void SetRemoveButtonVisible(bool flag);
70 
71   // Enable/Disable sign-out button.
72   void SetSignoutEnabled(bool enabled);
73 
74   // Implements LinkController.
75   // Called when a signout link is clicked.
76   virtual void LinkActivated(views::Link* source, int event_flags);
77 
78   // Overridden from views::ButtonListener.
79   virtual void ButtonPressed(views::Button* sender, const views::Event& event);
80 
81  private:
82   void Init(bool need_background);
83 
84   Delegate* delegate_;
85 
86   SignoutView* signout_view_;
87   PodImageView* image_view_;
88 
89   views::TextButton* remove_button_;
90 
91   DISALLOW_COPY_AND_ASSIGN(UserView);
92 };
93 
94 }  // chromeos
95 
96 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_USER_VIEW_H_
97