wlanutilities/wlanwizard/inc/wlanwizardpage.h
author hgs
Mon, 24 May 2010 21:11:39 +0300
changeset 31 e8f4211554fb
child 39 7b3e49e4608a
permissions -rw-r--r--
201021

/*
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
 *
 * Description: 
 *   WLAN Wizard Plugin API: Interface for wizard pages.
 *
 */

#ifndef WLANWIZARDPAGE_H
#define WLANWIZARDPAGE_H

// System includes

// User includes

// Forward declarations
class HbWidget;

// External data types

// Constants

/*!
   @addtogroup group_wlan_wizard_api_internal
   @{
 */

/*!
   Interface for wizard pages.
   
   Princibles of the interface, see description of the method for detailed
   information.
   - initializePage() is called at first to create the UI visualizatio
   - showPage() is called to detect whether next button should be enabled. This 
     method is called every time before the current page is displayed.
   - requiresStartOperation() is called to check if page needs timer protection.
     This is mainly used for pages where are progress bar and some asyncronous 
     operation with network layer, which commands on success to progress to next
     wizard page.
   - startOperation() is called to start page operation, this is called if above 
     method returs true.
   - nextId() is called when user presses next toolbar button or when page has
     called WlanWizardHelper::nextPage() method, which is used with timer
     protected pages.
   - previousTriggered() is called when previous toolbar button is pressed.
   - cancelTriggered() is called when cancel toolbar button is pressed.
   
   Wizard Page must implement all pure virtual methods
   - initializePage()
   - nextId()
   
   For other methods there is default implementation, which can be overwritten.
 */
class WlanWizardPage
{
public:
    /*!
       Defines common page ids for wizard and page id pools for wizard plugins.
       
       Remember to update trace.properties file upon changes.
     */
    enum PageIds {
        //! No need to change the wizard page.
        PageNone = 0,
        //! Process settings. Start connection and runs ict
        PageProcessSettings,
        //! Generic Error note page
        PageGenericError,
        //! Starting value for WLAN wizard page ids. Defined by WLAN Wizard.
        PageWlanStart = 0x1000,
        //! Starting value for EAP wizard page ids. Defined by EAP Wizard.
        PageEapStart = 0x2000,
        //! Starting value for WPS wizard page ids. Defined by WPS Wizard.
        PageWpsStart = 0x3000,
    };

public:

    /*!
       Creates a visualization of the wizard page and returns ownership of the
       object to the caller. Wizard framework deletes the visualization at the
       desctructor of WlanWizardPrivate implementation. WizardPage control
       object can safely use the same pointer during the life time of the
       control object. This method is called every time when moving to a new
       page, not when user presses "previous" button. showPage() method is
       called in both cases. 
       
       @return pointer to a visualization of the page.
     */
    virtual HbWidget* initializePage() = 0;

    /*!
       This method is called, after a visualization is created with
       initializePage() method, to detect whether next button should be enabled
       or not. It is up to the policy of the page when next button should be
       enabled. This method is called everytime before the current 
       active page is displayed. In other words this method is "aboutToShow()"
       
       Default implementation: wizard page is valid and next button is enabled.
       
       @return validity.       
     */
    virtual bool showPage()
    {
        return true;
    };

    /*!
       If the wizard page requires timer protection and asyncronous time
       lasting operation, return true. This is used in pages e.g. where
       progressbar is shown. The whole point is to initialize the UI before
       starting the operation, so that the progress bar is painted before the
       operation takes place.
       
       In practise this means that if true is returned by this method.
       - WlanWizardPage::startOperation() is called to start the page operation.
       - 1.5sec timer is used to protect the page
       - wizardPage MUST call WlanWizardHelper::nextPage() to trigger entry to
         next wizard page.
       
       @return true if protection is needed.
     */

    virtual bool requiresStartOperation()
    {
        return false;
    };

    /*!
       In case the wizard page needs timer protection to the page use this
       method to start control operation of the page. This method will be called
       after requiresStartOperation() if true is returned with different call
       stack.
       
       See requiresStartOperation(), WlanWizardHelper::nextPage().
     */
    virtual void startOperation() {};

    /*!
       Returns id of next page. This method is called when end user has pressed
       "next" toolbar button or WlanWizardHelper::nextPage() is called.
       
       In case the wizard page does not want to make any movement forwards
       WlanWizardPage::PageNone MUST be returned.
       
       @param [out] removeFromStack return value to the caller, if this page
       needs to be removed from the stack, which means that this page cannot be
       accessible from the next page using "previous" toolbar button. 
       
       @return page identifier of next wizard page
     */
    virtual int nextId(bool &removeFromStack) const = 0;

    /*!
       This method is called when "previous" button has been pressed.
     
       Default implementation: one page backwards
       
       @return how many steps should be gone backwards. 
     */
    virtual int previousTriggered()
    {
        return OneStepBackwards;
    };

    /*!
       This method is called when "cancel" button has been pressed.
       
       Default implementation: No actions.
     */
    virtual void cancelTriggered() {};
    
signals:
    
public slots:
    
protected:
    //! default value for previousTriggered(), step one step.
    static const int OneStepBackwards = 1;
    
protected slots:

private:

private slots:

private: // data
};

/*! @} */

#endif // WLANWIZARDPAGE_H