Home | History | Annotate | Download | only in first_run
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_
      6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_
      7 
      8 #include <string>
      9 
     10 #include "base/memory/scoped_ptr.h"
     11 
     12 namespace base {
     13 class DictionaryValue;
     14 }
     15 
     16 namespace chromeos {
     17 
     18 class FirstRunActor {
     19  public:
     20   class Delegate {
     21    public:
     22     virtual ~Delegate() {}
     23 
     24     // Called after actor was initialized.
     25     virtual void OnActorInitialized() = 0;
     26 
     27     // Called when user clicked "Next" button in step with name |step_name|.
     28     virtual void OnNextButtonClicked(const std::string& step_name) = 0;
     29 
     30     // Called when user clicked "Keep exploring" button.
     31     virtual void OnHelpButtonClicked() = 0;
     32 
     33     // Called after step with |step_name| has been shown.
     34     virtual void OnStepShown(const std::string& step_name) = 0;
     35 
     36     // Called after step with |step_name| has been shown.
     37     virtual void OnStepHidden(const std::string& step_name) = 0;
     38 
     39     // Called in answer to Finalize() call.
     40     virtual void OnActorFinalized() = 0;
     41 
     42     // Notifies about about actor destruction.
     43     virtual void OnActorDestroyed() = 0;
     44   };
     45 
     46   class StepPosition {
     47    public:
     48     // Initializes fields in "non-set" state.
     49     StepPosition();
     50 
     51     // Setters for properties. Return |*this|.
     52     StepPosition& SetTop(int top);
     53     StepPosition& SetRight(int right);
     54     StepPosition& SetBottom(int bottom);
     55     StepPosition& SetLeft(int left);
     56 
     57     // Returns DictionaryValue containing set properties.
     58     scoped_ptr<base::DictionaryValue> AsValue() const;
     59 
     60    private:
     61     int top_;
     62     int right_;
     63     int bottom_;
     64     int left_;
     65   };
     66 
     67   FirstRunActor();
     68   virtual ~FirstRunActor();
     69 
     70   // Returns |true| if actor is initialized. Other public methods can be called
     71   // only if |IsInitialized| returns |true|.
     72   virtual bool IsInitialized() = 0;
     73 
     74   // Changes background visibility.
     75   virtual void SetBackgroundVisible(bool visible) = 0;
     76 
     77   // Adds rectangular hole to background with given position and dimensions.
     78   virtual void AddRectangularHole(int x, int y, int width, int height) = 0;
     79 
     80   // Adds round hole to background with given position and dimensions.
     81   virtual void AddRoundHole(int x, int y, float radius) = 0;
     82 
     83   // Removes all holes from background.
     84   virtual void RemoveBackgroundHoles() = 0;
     85 
     86   // Shows step with given name and position.
     87   virtual void ShowStepPositioned(const std::string& name,
     88                                   const StepPosition& position) = 0;
     89 
     90   // Shows step with given name that points to given point.
     91   virtual void ShowStepPointingTo(const std::string& name,
     92                                   int x,
     93                                   int y,
     94                                   int offset) = 0;
     95 
     96   // Hides currently shown step.
     97   virtual void HideCurrentStep() = 0;
     98 
     99   // Hides all the UI.
    100   virtual void Finalize() = 0;
    101 
    102   // Whether actor is finalizing now.
    103   virtual bool IsFinalizing() = 0;
    104 
    105   void set_delegate(Delegate* delegate) { delegate_ = delegate; }
    106   Delegate* delegate() const { return delegate_; }
    107 
    108  private:
    109   Delegate* delegate_;
    110 };
    111 
    112 }  // namespace chromeos
    113 
    114 #endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_FIRST_RUN_FIRST_RUN_ACTOR_H_
    115 
    116