blob: 5de3464e26ed50e22ebfd78e6f82e0bf17b10747 [file] [log] [blame]
// Copyright 2013 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_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_
#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_
#include <string>
#include "base/memory/scoped_ptr.h"
namespace base {
class DictionaryValue;
}
namespace chromeos {
class FirstRunActor {
public:
class Delegate {
public:
virtual ~Delegate() {}
// Called after actor was initialized.
virtual void OnActorInitialized() = 0;
// Called when user clicked "Next" button in step with name |step_name|.
virtual void OnNextButtonClicked(const std::string& step_name) = 0;
// Called when user clicked "Keep exploring" button.
virtual void OnHelpButtonClicked() = 0;
// Called after setp with |step_name| has been hidden.
virtual void OnStepHidden(const std::string& step_name) = 0;
// Called in answer to Finalize() call.
virtual void OnActorFinalized() = 0;
// Notifies about about actor destruction.
virtual void OnActorDestroyed() = 0;
};
class StepPosition {
public:
// Initializes fields in "non-set" state.
StepPosition();
// Setters for properties. Return |*this|.
StepPosition& SetTop(int top);
StepPosition& SetRight(int right);
StepPosition& SetBottom(int bottom);
StepPosition& SetLeft(int left);
// Returns DictionaryValue containing set properties.
scoped_ptr<base::DictionaryValue> AsValue() const;
private:
int top_;
int right_;
int bottom_;
int left_;
};
FirstRunActor();
virtual ~FirstRunActor();
// Returns |true| if actor is initialized. Other public methods can be called
// only if |IsInitialized| returns |true|.
virtual bool IsInitialized() = 0;
// Changes background visibility.
virtual void SetBackgroundVisible(bool visible) = 0;
// Adds rectangular hole to background with given position and dimensions.
virtual void AddRectangularHole(int x, int y, int width, int height) = 0;
// Adds round hole to background with given position and dimensions.
virtual void AddRoundHole(int x, int y, float radius) = 0;
// Removes all holes from background.
virtual void RemoveBackgroundHoles() = 0;
// Shows step with given name and position.
virtual void ShowStepPositioned(const std::string& name,
const StepPosition& position) = 0;
// Shows step with given name that points to given point.
virtual void ShowStepPointingTo(const std::string& name,
int x,
int y,
int offset) = 0;
// Hides currently shown step.
virtual void HideCurrentStep() = 0;
// Hides all the UI.
virtual void Finalize() = 0;
// Whether actor is finalizing now.
virtual bool IsFinalizing() = 0;
void set_delegate(Delegate* delegate) { delegate_ = delegate; }
Delegate* delegate() const { return delegate_; }
private:
Delegate* delegate_;
};
} // namespace chromeos
#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_