1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USER_VIEW_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_LOGIN_USER_VIEW_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/controls/button/button.h" 123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "views/controls/link.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "views/view.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SkBitmap; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace views { 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ImageView; 193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass TextButton; 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Throbber; 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace views 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SignoutView; 26201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochclass PodImageView; 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass UserView : public views::View, 293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick public views::LinkController, 303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick public views::ButtonListener { 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch class Delegate { 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~Delegate() {} 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Notifies that user pressed signout button on screen locker. 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnSignout() {} 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Notifies that user would like to remove this user from login screen. 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnRemoveUser() {} 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Returns true if current user is selected. 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual bool IsUserSelected() const = 0; 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Notifies about locale change. 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void OnLocaleChanged() {} 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Creates UserView for login screen (|is_login| == true) or screen locker. 50201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch // On login screen this will have remove button. 513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // On screen locker it will have sign out button. |need_background| is needed 523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // to show image with transparent areas. 533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserView(Delegate* delegate, bool is_login, bool need_background); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // view::View overrides. 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual gfx::Size GetPreferredSize(); 573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void OnLocaleChanged(); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Sets the user's image. If image's size is less than 6072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // 75% of window size, image size is preserved to avoid blur. Otherwise, 6172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // the image is resized to fit window size precisely. Image view repaints 6272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // itself. 63201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch void SetImage(const SkBitmap& image, const SkBitmap& image_hot); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets tooltip over the image. 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetTooltipText(const std::wstring& text); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Show/Hide remove button. 693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick void SetRemoveButtonVisible(bool flag); 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Enable/Disable sign-out button. 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetSignoutEnabled(bool enabled); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Implements LinkController. 753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Called when a signout link is clicked. 763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void LinkActivated(views::Link* source, int event_flags); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Overridden from views::ButtonListener. 793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void ButtonPressed(views::Button* sender, const views::Event& event); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick void Init(bool need_background); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Delegate* delegate_; 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SignoutView* signout_view_; 87201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch PodImageView* image_view_; 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick views::TextButton* remove_button_; 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(UserView); 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // chromeos 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_CHROMEOS_LOGIN_USER_VIEW_H_ 97