// Copyright (c) 2010 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_WIZARD_SCREEN_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_SCREEN_H_ #pragma once #include "ui/gfx/canvas.h" class WizardScreen; namespace chromeos { class ScreenObserver; } // namespace chromeos namespace gfx { class Size; } // namespace gfx namespace views { class View; } // namespace views // Interface that login wizard exposes to its screens. class WizardScreenDelegate { public: // Returns top level view of the wizard. virtual views::View* GetWizardView() = 0; // Returns observer screen should notify. virtual chromeos::ScreenObserver* GetObserver(WizardScreen* screen) = 0; // Forces the current screen to be shown immediately. virtual void ShowCurrentScreen() = 0; protected: virtual ~WizardScreenDelegate() {} }; // Interface that defines login wizard screens. // Also holds a reference to a delegate. class WizardScreen { public: // Makes wizard screen visible. virtual void Show() = 0; // Makes wizard screen invisible. virtual void Hide() = 0; // Returns the size the screen. virtual gfx::Size GetScreenSize() const = 0; protected: explicit WizardScreen(WizardScreenDelegate* delegate): delegate_(delegate) {} virtual ~WizardScreen() {} WizardScreenDelegate* delegate() { return delegate_; } // Refreshes screen state. Should be called after view is made visible. virtual void Refresh() = 0; private: WizardScreenDelegate* delegate_; }; #endif // CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_SCREEN_H_