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