1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_DEFAULT_IMAGES_VIEW_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_CHROMEOS_LOGIN_DEFAULT_IMAGES_VIEW_H_ 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "views/controls/button/button.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "views/view.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <vector> 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass SkBitmap; 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace chromeos { 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass UserImageButton; 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// View used for selecting user image on OOBE screen. 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass DefaultImagesView : public views::View, 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public views::ButtonListener { 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen class Delegate { 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~Delegate() {} 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Called when user clicks on capture button. 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnCaptureButtonClicked() = 0; 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Called when user selects an image. 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void OnImageSelected(int image_index) = 0; 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen }; 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen explicit DefaultImagesView(Delegate* delegate); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Initializes this view, its children and layout. 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void Init(); 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Returns the index of the selected default image or -1 if there's no 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // selected image. 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int GetDefaultImageIndex() const; 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Allows to specify the selected image index specifically. 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void SetDefaultImageIndex(int index); 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Unselects the selected image if there's one. 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void ClearSelection(); 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Overridden from views::View: 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual gfx::Size GetPreferredSize(); 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Overridden from views::ButtonListener. 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ButtonPressed(views::Button* sender, const views::Event& event); 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Resizes and sets image with specified resource id for the button. 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void InitButton(int resource_id, UserImageButton* button) const; 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Initializes layout manager for this view. 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void InitLayout(); 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Vector of image buttons corresponding to default images and take photo 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // button. 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<UserImageButton*> default_images_; 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Index of the currently selected image or -1. 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int selected_image_index_; 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Delegate* delegate_; 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DISALLOW_COPY_AND_ASSIGN(DefaultImagesView); 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace chromeos 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_CHROMEOS_LOGIN_DEFAULT_IMAGES_VIEW_H_ 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 80