// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_DEFAULT_IMAGES_VIEW_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_DEFAULT_IMAGES_VIEW_H_
#pragma once
#include "views/controls/button/button.h"
#include "views/view.h"
#include <vector>
class SkBitmap;
namespace chromeos {
class UserImageButton;
// View used for selecting user image on OOBE screen.
class DefaultImagesView : public views::View,
public views::ButtonListener {
public:
class Delegate {
public:
virtual ~Delegate() {}
// Called when user clicks on capture button.
virtual void OnCaptureButtonClicked() = 0;
// Called when user selects an image.
virtual void OnImageSelected(int image_index) = 0;
};
explicit DefaultImagesView(Delegate* delegate);
// Initializes this view, its children and layout.
void Init();
// Returns the index of the selected default image or -1 if there's no
// selected image.
int GetDefaultImageIndex() const;
// Allows to specify the selected image index specifically.
void SetDefaultImageIndex(int index);
// Unselects the selected image if there's one.
void ClearSelection();
// Overridden from views::View:
virtual gfx::Size GetPreferredSize();
// Overridden from views::ButtonListener.
virtual void ButtonPressed(views::Button* sender, const views::Event& event);
private:
// Resizes and sets image with specified resource id for the button.
void InitButton(int resource_id, UserImageButton* button) const;
// Initializes layout manager for this view.
void InitLayout();
// Vector of image buttons corresponding to default images and take photo
// button.
std::vector<UserImageButton*> default_images_;
// Index of the currently selected image or -1.
int selected_image_index_;
Delegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(DefaultImagesView);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_DEFAULT_IMAGES_VIEW_H_