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: 34 virtual ~Delegate() {} 35 36 // Notifies that user pressed signout button on screen locker. 37 virtual void OnSignout() {} 38 39 // Notifies that user would like to remove this user from login screen. 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. 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