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_WIZARD_SCREEN_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_SCREEN_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/canvas.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WizardScreen;
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos {
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ScreenObserver;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace chromeos
153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merricknamespace gfx {
163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass Size;
173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}  // namespace gfx
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace views {
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass View;
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace views
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Interface that login wizard exposes to its screens.
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WizardScreenDelegate {
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns top level view of the wizard.
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual views::View* GetWizardView() = 0;
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns observer screen should notify.
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual chromeos::ScreenObserver* GetObserver(WizardScreen* screen) = 0;
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Forces the current screen to be shown immediately.
3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual void ShowCurrentScreen() = 0;
3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~WizardScreenDelegate() {}
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Interface that defines login wizard screens.
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Also holds a reference to a delegate.
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WizardScreen {
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Makes wizard screen visible.
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void Show() = 0;
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Makes wizard screen invisible.
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void Hide() = 0;
463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // Returns the size the screen.
473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual gfx::Size GetScreenSize() const = 0;
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit WizardScreen(WizardScreenDelegate* delegate): delegate_(delegate) {}
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~WizardScreen() {}
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WizardScreenDelegate* delegate() { return delegate_; }
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Refreshes screen state. Should be called after view is made visible.
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void Refresh() = 0;
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WizardScreenDelegate* delegate_;
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_SCREEN_H_
63