wlanutilities/wlanwizard/src/wlanwizard_p.cpp
branchRCL_3
changeset 25 f28ada11abbf
parent 24 63be7eb3fc78
equal deleted inserted replaced
24:63be7eb3fc78 25:f28ada11abbf
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 * WLAN Wizard: Private implementation.
       
    16 */
       
    17 
       
    18 // System includes
       
    19 
       
    20 #include <QApplication>
       
    21 #include <QGraphicsWidget>
       
    22 #include <QTimer>
       
    23 #include <QDebug>
       
    24 
       
    25 #include <HbTranslator>
       
    26 #include <HbDocumentLoader>
       
    27 #include <HbMainWindow>
       
    28 #include <HbDialog>
       
    29 #include <HbStackedWidget>
       
    30 #include <HbLabel>
       
    31 #include <HbAction>
       
    32 #include <HbStyleLoader>
       
    33 
       
    34 // User includes
       
    35 
       
    36 #include "eapwizard.h"
       
    37 #include "wpswizard.h"
       
    38 #include "wlanqtutils.h"
       
    39 #include "wlanqtutilsap.h"
       
    40 #include "wlanwizardplugin.h"
       
    41 #include "wlanwizard.h"
       
    42 #include "wlanwizard_p.h"
       
    43 #include "wlanwizardutils.h"
       
    44 #include "wlanwizardpagekeyquery.h"
       
    45 #include "wlanwizardpagesummary.h"
       
    46 #include "wlanwizardpageprocessingsettings.h"
       
    47 #include "wlanwizardpagegenericerror.h"
       
    48 #include "wlanwizardpagessid.h"
       
    49 #include "wlanwizardpagenetworkmode.h"
       
    50 #include "wlanwizardpagescanning.h"
       
    51 #include "wlanwizardpagesecuritymode.h"
       
    52 
       
    53 #include "OstTraceDefinitions.h"
       
    54 #ifdef OST_TRACE_COMPILER_IN_USE
       
    55 #include "wlanwizard_pTraces.h"
       
    56 #endif
       
    57 
       
    58 /*!
       
    59    \class WlanWizardPrivate
       
    60    \brief Private implementation of WlanWizard. Implements the interface
       
    61    WlanWizardHelper to the wizard plugins. 
       
    62  */
       
    63 
       
    64 // External function prototypes
       
    65 
       
    66 // Local constants
       
    67 
       
    68 /*!
       
    69    \var PageTimeout Timeout for timer protected pages. 1.5sec
       
    70  */
       
    71 
       
    72 // ======== LOCAL FUNCTIONS ========
       
    73 
       
    74 // ======== MEMBER FUNCTIONS ========
       
    75 
       
    76 /*!
       
    77    Constructor of private implementation.
       
    78    
       
    79    @param [in] wizard Pointer to the API class.
       
    80    @param [in] mainWindow pointer to mainwindow.
       
    81  */
       
    82 WlanWizardPrivate::WlanWizardPrivate(
       
    83     WlanWizard* wizard, 
       
    84     HbMainWindow *mainWindow) :
       
    85     QObject(wizard),
       
    86     q_ptr(wizard), 
       
    87     mMainWindow(mainWindow), 
       
    88     mPageTimer(new QTimer(this)),
       
    89     mTitle(NULL),
       
    90     mActionNext(NULL),
       
    91     mActionPrevious(NULL),
       
    92     mActionFinish(NULL),
       
    93     mActionCancel(NULL),
       
    94     mStackedWidget(NULL),
       
    95     mDialog(NULL),
       
    96     mTranslator(new HbTranslator("wlanwizard")),
       
    97     mWlanQtUtils(new WlanQtUtils()),
       
    98     mDocLoader(new HbDocumentLoader(mainWindow)),
       
    99     mEapWizard(NULL), 
       
   100     mWpsWizard(NULL), 
       
   101     mFirstPageId(WlanWizardPageInternal::PageNone),
       
   102     mPageFinished(false),
       
   103     mClosed(false)
       
   104 {
       
   105     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_WLANWIZARDPRIVATE_ENTRY);
       
   106     
       
   107     OstTrace1(
       
   108         TRACE_BORDER,
       
   109         WLANWIZARDPRIVATE_WLANWIZARDPRIVATE,
       
   110         "WlanWizardPrivate::WlanWizardPrivate;this=%x", 
       
   111         this);
       
   112     
       
   113     // Set initial values for configurations
       
   114     setConfiguration(ConfIapId, WlanQtUtils::IapIdNone);
       
   115     setConfiguration(ConfConnected, false);
       
   116     setConfiguration(ConfWlanScanSSID, false);
       
   117     setConfiguration(ConfProcessSettings, false);
       
   118     setConfiguration(ConfIctStatus, false);
       
   119 
       
   120     // Initialize timer for timer protected pages
       
   121     mPageTimer->setSingleShot(true);
       
   122 
       
   123     // Load the wizard frame (title, content, actions) from docml 
       
   124     loadDocml();
       
   125 
       
   126     // Creates the control object of the wlan wizard pages. 
       
   127     createPages();
       
   128 
       
   129     // EAP Wizard will add wizard pages at construction phase using
       
   130     // WlanWizardHelper::addPage()
       
   131     mEapWizard.reset(new EapWizard(this) );
       
   132 
       
   133     // WPS Wizard will add wizard pages at construction phase using
       
   134     // WlanWizardHelper::addPage()
       
   135     mWpsWizard.reset(new WpsWizard(this));
       
   136 
       
   137     // First page is SSID query, unless client sets configurations via
       
   138     // setParameters(), which decides the first page..
       
   139     mFirstPageId = WlanWizardPageInternal::PageSsid;
       
   140 
       
   141     OstTraceExt2(
       
   142         TRACE_BORDER,
       
   143         WLANWIZARDPRIVATE_WLANWIZARDPRIVATE_DONE,
       
   144         "WlanWizardPrivate::WlanWizardPrivate - done;"
       
   145         "this=%x;mFirstPageId=%{PageIds}",
       
   146         (unsigned)this,
       
   147         mFirstPageId);
       
   148     
       
   149     OstTraceFunctionExit0(WLANWIZARDPRIVATE_WLANWIZARDPRIVATE_EXIT);
       
   150 }
       
   151 
       
   152 /*!
       
   153    Destructor.
       
   154  */
       
   155 WlanWizardPrivate::~WlanWizardPrivate()
       
   156 {
       
   157     OstTraceFunctionEntry0(DUP1_WLANWIZARDPRIVATE_WLANWIZARDPRIVATE_ENTRY);
       
   158     
       
   159     OstTrace1(
       
   160         TRACE_BORDER,
       
   161         WLANWIZARDPRIVATE_DWLANWIZARDPRIVATE,
       
   162         "WlanWizardPrivate::~WlanWizardPrivate;this=%x",
       
   163         this);
       
   164     
       
   165     // Remove wizard pages from stackedwidgets, since stackedwidget owns the
       
   166     // objects and all pages are deleted below. 
       
   167     while (mStackedWidget->count()) {
       
   168         mStackedWidget->removeAt(0);
       
   169     }
       
   170 
       
   171     // Delete UI instances (HbWidget) of pages
       
   172     QHashIterator<HbWidget*, WlanWizardPage*> i(mPageMapper);
       
   173     while (i.hasNext()) {
       
   174         i.next();
       
   175         delete i.key();
       
   176     }
       
   177     mPageMapper.clear();
       
   178 
       
   179     // WlanWizardPage objects are automatically deleted since this is the
       
   180     // parent of the objects.
       
   181     mPages.clear();
       
   182     
       
   183     // timer is cancelled/deleted automatically when the parent (this) is deleted 
       
   184     
       
   185     // TODO: See TSW Error: MTAA-854DK8 and loadDocml()
       
   186     HbStyleLoader::unregisterFilePath(":/css/custom.css");
       
   187     
       
   188     mDialog->setAttribute( Qt::WA_DeleteOnClose, true );
       
   189     mDialog->close();
       
   190     // Remove the pointer from QScopedPointer to prevent double deallocation
       
   191     mDialog.take();
       
   192     
       
   193     OstTrace1(
       
   194         TRACE_BORDER,
       
   195         WLANWIZARDPRIVATE_DWLANWIZARDPRIVATE_DONE,
       
   196         "WlanWizardPrivate::~WlanWizardPrivate-Done;this=%x",
       
   197         this);
       
   198     
       
   199     OstTraceFunctionExit0(DUP1_WLANWIZARDPRIVATE_WLANWIZARDPRIVATE_EXIT);
       
   200 }
       
   201 
       
   202 /*!
       
   203    See WlanWizard::setParameters().
       
   204  */
       
   205 void WlanWizardPrivate::setParameters(
       
   206     const QString &ssid,
       
   207     int networkMode,
       
   208     int securityMode, 
       
   209     bool usePsk,
       
   210     bool wps)
       
   211 {
       
   212     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_SETPARAMETERS_ENTRY);
       
   213     
       
   214     OstTrace1(
       
   215         TRACE_BORDER,
       
   216         WLANWIZARDPRIVATE_SETPARAMETERS, 
       
   217         "WlanWizardPrivate::setParameters;this=%x", 
       
   218         this);
       
   219     
       
   220     mFirstPageId = getNextPageId(
       
   221         ssid,
       
   222         networkMode,
       
   223         securityMode,
       
   224         usePsk,
       
   225         false,
       
   226         wps);
       
   227     
       
   228     OstTrace1(
       
   229         TRACE_BORDER,
       
   230         WLANWIZARDPRIVATE_SETPARAMETERS_DONE, 
       
   231         "WlanWizardPrivate::setParameters - Done;this=%x", 
       
   232         this);
       
   233     
       
   234     OstTraceFunctionExit0(WLANWIZARDPRIVATE_SETPARAMETERS_EXIT);
       
   235 }
       
   236 
       
   237 /*!
       
   238    See WlanWizard::show().
       
   239  */
       
   240 void WlanWizardPrivate::show()
       
   241 {
       
   242     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_SHOW_ENTRY);
       
   243     
       
   244     OstTraceExt2(
       
   245         TRACE_BORDER,
       
   246         WLANWIZARDPRIVATE_SHOW,
       
   247         "WlanWizardPrivate::show;this=%x;mFirstPageId=%{PageIds}", 
       
   248         (unsigned)this,
       
   249         mFirstPageId);
       
   250     
       
   251     Q_ASSERT(mClosed == false);
       
   252     showPage(mFirstPageId, false);
       
   253     mDialog->show();
       
   254     
       
   255     OstTrace1(
       
   256         TRACE_BORDER,
       
   257         WLANWIZARDPRIVATE_SHOW_DONE,
       
   258         "WlanWizardPrivate::show - Done;this=%x;",
       
   259         (unsigned)this);
       
   260     
       
   261     OstTraceFunctionExit0(WLANWIZARDPRIVATE_SHOW_EXIT);
       
   262 }
       
   263 
       
   264 /*!
       
   265    See WlanWizard::setParameters() for descriptions of parameters.
       
   266    
       
   267    Based on the provided parameters next page id is returned.
       
   268    
       
   269    @return next page id based on provided configurations.
       
   270  */
       
   271 int WlanWizardPrivate::getNextPageId(
       
   272     const QString &ssid, 
       
   273     int networkMode, 
       
   274     int securityMode, 
       
   275     bool usePsk,
       
   276     bool hidden, 
       
   277     bool wps)
       
   278 {
       
   279     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_GETNEXTPAGEID_ENTRY);
       
   280     
       
   281     setConfiguration(ConfProcessSettings, true);
       
   282     setConfiguration(ConfSsid, ssid);
       
   283     setConfiguration(ConfNetworkMode, networkMode);
       
   284     setConfiguration(ConfSecurityMode, securityMode);
       
   285     setConfiguration(ConfUsePsk, usePsk);
       
   286     setConfiguration(ConfWlanScanSSID, hidden);
       
   287 
       
   288     OstTrace1(
       
   289         TRACE_NORMAL,
       
   290         WLANWIZARDPRIVATE_GETNEXTPAGEID, 
       
   291         "WlanWizardPrivate::getNextPageId;wps=%u", 
       
   292         wps);
       
   293     
       
   294     OstTraceFunctionExit0(WLANWIZARDPRIVATE_GETNEXTPAGEID_EXIT);
       
   295     return nextPageId(wps);
       
   296 }
       
   297 
       
   298 /*!
       
   299    Utility method for WLAN Wizard pages to query the wlanqtutils class.
       
   300    
       
   301    @return a valid pointer to WlanQtUtils class.
       
   302  */
       
   303 WlanQtUtils* WlanWizardPrivate::wlanQtUtils() const
       
   304 {
       
   305     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_WLANQTUTILS_ENTRY);
       
   306     
       
   307     Q_ASSERT(mWlanQtUtils.data());
       
   308     
       
   309     OstTraceFunctionExit0(WLANWIZARDPRIVATE_WLANQTUTILS_EXIT);
       
   310     return mWlanQtUtils.data();
       
   311 }
       
   312 
       
   313 /*!
       
   314    Utility method for WLAN Wizard pages to query active wizard plugin object
       
   315    
       
   316    @return NULL in case plugin is not active.
       
   317  */ 
       
   318 WlanWizardPlugin* WlanWizardPrivate::wlanWizardPlugin() const
       
   319 {
       
   320     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_WLANWIZARDPLUGIN_ENTRY);
       
   321     
       
   322     WlanWizardPlugin* plugin = NULL;
       
   323 
       
   324     if (isEapEnabled()) {
       
   325         plugin = mEapWizard.data();
       
   326         Q_ASSERT(plugin);
       
   327     }
       
   328     
       
   329     OstTrace1(
       
   330         TRACE_NORMAL,
       
   331         WLANWIZARDPRIVATE_WLANWIZARDPLUGIN, 
       
   332         "WlanWizardPrivate::wlanWizardPlugin;plugin=%x", 
       
   333         plugin);
       
   334     
       
   335     OstTraceFunctionExit0(WLANWIZARDPRIVATE_WLANWIZARDPLUGIN_EXIT);
       
   336     return plugin;
       
   337 }
       
   338 
       
   339 /*!
       
   340    Utility method for WLAN Wizard pages to query if EAP mode is active at the
       
   341    moment
       
   342    
       
   343    @return true in case EAP is currently activated.
       
   344  */
       
   345 bool WlanWizardPrivate::isEapEnabled() const
       
   346 {
       
   347     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_ISEAPENABLED_ENTRY);
       
   348     
       
   349     bool ret = false;
       
   350     int secMode = configuration(ConfSecurityMode).toInt();
       
   351 
       
   352     if (((secMode == CMManagerShim::WlanSecModeWpa || 
       
   353           secMode == CMManagerShim::WlanSecModeWpa2) && 
       
   354           !configuration(ConfUsePsk).toBool()) || 
       
   355         secMode == CMManagerShim::WlanSecMode802_1x) {
       
   356         ret = true;
       
   357     }
       
   358 
       
   359     OstTrace1(
       
   360         TRACE_NORMAL,
       
   361         WLANWIZARDPRIVATE_ISEAPENABLED, 
       
   362         "WlanWizardPrivate::isEapEnabled;ret=%u", 
       
   363         ret);
       
   364     
       
   365     OstTraceFunctionExit0(WLANWIZARDPRIVATE_ISEAPENABLED_EXIT);
       
   366     return ret;
       
   367 }
       
   368 
       
   369 /*!
       
   370    Creates new iap or updates existing iap.
       
   371    
       
   372    @return false in case IAP creation/update failed.
       
   373  */
       
   374 bool WlanWizardPrivate::handleIap()
       
   375 {
       
   376     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_HANDLEIAP_ENTRY);
       
   377     
       
   378     OstTrace0(
       
   379         TRACE_FLOW,
       
   380         WLANWIZARDPRIVATE_HANDLEIAP,
       
   381         "WlanWizardPrivate::handleIap");
       
   382     
       
   383     bool ret = true;
       
   384     bool usePsk = true;
       
   385     int securityMode = configuration(ConfSecurityMode).toInt();
       
   386     WlanQtUtilsAp wlanAp;
       
   387    
       
   388     // Set default values
       
   389     wlanAp.setValue(WlanQtUtilsAp::ConfIdWpaPsk, QString());
       
   390     wlanAp.setValue(WlanQtUtilsAp::ConfIdWpaPskUse, true );
       
   391     wlanAp.setValue(WlanQtUtilsAp::ConfIdWepDefaultIndex, CMManagerShim::WepKeyIndex1 );
       
   392     wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey1, QString());
       
   393     wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey2, QString());
       
   394     wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey3, QString());
       
   395     wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey4, QString());
       
   396     
       
   397     // Set configuration
       
   398     wlanAp.setValue(WlanQtUtilsAp::ConfIdSsid, configuration(ConfSsid));
       
   399     wlanAp.setValue(
       
   400         WlanQtUtilsAp::ConfIdConnectionMode, 
       
   401         configuration(ConfNetworkMode));
       
   402     wlanAp.setValue(WlanQtUtilsAp::ConfIdSecurityMode, securityMode);
       
   403     wlanAp.setValue(WlanQtUtilsAp::ConfIdHidden, false);
       
   404     wlanAp.setValue(WlanQtUtilsAp::ConfIdWlanScanSSID, configuration(ConfWlanScanSSID));
       
   405 
       
   406     switch (securityMode) {
       
   407     case CMManagerShim::WlanSecModeWep:
       
   408         wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey1, configuration(ConfKeyWep1));
       
   409         wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey2, configuration(ConfKeyWep2));
       
   410         wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey3, configuration(ConfKeyWep3));
       
   411         wlanAp.setValue(WlanQtUtilsAp::ConfIdWepKey4, configuration(ConfKeyWep4));
       
   412         wlanAp.setValue(
       
   413             WlanQtUtilsAp::ConfIdWepDefaultIndex,
       
   414             configuration(ConfKeyWepDefault));
       
   415         break;
       
   416 
       
   417     case CMManagerShim::WlanSecModeWpa:
       
   418     case CMManagerShim::WlanSecModeWpa2:
       
   419         usePsk = configuration(ConfUsePsk).toBool();
       
   420         wlanAp.setValue(WlanQtUtilsAp::ConfIdWpaPskUse, usePsk);
       
   421         if (usePsk){
       
   422             wlanAp.setValue(WlanQtUtilsAp::ConfIdWpaPsk, configuration(ConfKeyWpa));
       
   423         }
       
   424         break;
       
   425     
       
   426     default:
       
   427         Q_ASSERT(securityMode == CMManagerShim::WlanSecModeOpen ||
       
   428             securityMode == CMManagerShim::WlanSecMode802_1x);
       
   429         // No WLAN Specific configuration
       
   430         break;
       
   431     }
       
   432     
       
   433     // Create IAP if does not exists or update the existing IAP
       
   434     int referenceId = configuration(ConfIapId).toInt();
       
   435     if (referenceId == WlanQtUtils::IapIdNone) {
       
   436         OstTrace0(
       
   437             TRACE_FLOW,
       
   438             WLANWIZARDPRIVATE_HANDLEIAP_CREATE, 
       
   439             "WlanWizardPrivate::handleIap: Create IAP");
       
   440         
       
   441         referenceId = mWlanQtUtils->createIap(&wlanAp);
       
   442         setConfiguration(ConfIapId, referenceId);
       
   443         
       
   444         if (referenceId == WlanQtUtils::IapIdNone) {
       
   445             ret = false;
       
   446         }
       
   447     } else {
       
   448         OstTrace0(
       
   449             TRACE_FLOW,
       
   450             WLANWIZARDPRIVATE_HANDLEIAP_UPDATE, 
       
   451             "WlanWizardPrivate::handleIap: Update IAP");
       
   452 
       
   453         ret = mWlanQtUtils->updateIap(referenceId, &wlanAp);
       
   454     }
       
   455    
       
   456     if (ret) {
       
   457         // Store Wizard plugin specific settings here.
       
   458         WlanWizardPlugin* plugin = wlanWizardPlugin();
       
   459         if (plugin) {
       
   460             OstTrace0(
       
   461                 TRACE_FLOW,
       
   462                 WLANWIZARDPRIVATE_HANDLEIAP_PLUGIN, 
       
   463                 "WlanWizardPrivate::handleIap: Plugin");
       
   464             // Plugin gets the IAP ID from configuration
       
   465             ret = plugin->storeSettings();
       
   466         }
       
   467     }
       
   468     
       
   469     OstTrace1(
       
   470         TRACE_FLOW,
       
   471         WLANWIZARDPRIVATE_HANDLEIAP_DONE,
       
   472         "WlanWizardPrivate::handleIap: Done;ret=%d",
       
   473         ret);
       
   474 
       
   475     OstTraceFunctionExit0(WLANWIZARDPRIVATE_HANDLEIAP_EXIT);
       
   476     return ret;
       
   477 }
       
   478 
       
   479 /*!
       
   480    See WlanWizardHelper::configuration().
       
   481  */
       
   482 QVariant WlanWizardPrivate::configuration(ConfigurationId confId) const
       
   483 {
       
   484     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_CONFIGURATION_ENTRY);
       
   485     
       
   486     Q_ASSERT(mConfigurations.contains(confId));
       
   487 
       
   488 #ifdef OST_TRACE_COMPILER_IN_USE
       
   489     QString tmp;
       
   490     QDebug tmpStream(&tmp);
       
   491     tmpStream << mConfigurations[confId];
       
   492     TPtrC16 string( tmp.utf16(), tmp.length() );
       
   493     
       
   494     OstTraceExt2(
       
   495         TRACE_NORMAL,
       
   496         WLANWIZARDPRIVATE_CONFIGURATIONS, 
       
   497         "WlanWizardPrivate::configuration;confId=%{ConfigurationId};string=%S", 
       
   498         (uint)confId,
       
   499         string);
       
   500 #endif
       
   501     
       
   502     OstTraceFunctionExit0(WLANWIZARDPRIVATE_CONFIGURATION_EXIT);
       
   503     return mConfigurations[confId];
       
   504 }
       
   505 
       
   506 /*!
       
   507    See WlanWizardHelper::setConfiguration().
       
   508  */
       
   509 void WlanWizardPrivate::setConfiguration(
       
   510     ConfigurationId confId, 
       
   511     const QVariant &value)
       
   512 {
       
   513     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_SETCONFIGURATION_ENTRY);
       
   514     
       
   515 #ifdef OST_TRACE_COMPILER_IN_USE
       
   516     QString tmp;
       
   517     QDebug tmpStream(&tmp);
       
   518     tmpStream << value;
       
   519     TPtrC16 string( tmp.utf16(), tmp.length() );
       
   520     
       
   521     OstTraceExt2(
       
   522         TRACE_NORMAL,
       
   523         WLANWIZARDPRIVATE_SETCONFIGURATION, 
       
   524         "WlanWizardPrivate::setConfiguration;"
       
   525         "confId=%{ConfigurationId};string=%S", 
       
   526         (uint)confId,
       
   527         string);
       
   528 #endif
       
   529 
       
   530     mConfigurations[confId] = value;
       
   531     
       
   532     OstTraceFunctionExit0(WLANWIZARDPRIVATE_SETCONFIGURATION_EXIT);
       
   533 }
       
   534 
       
   535 /*!
       
   536  * See WlanWizardHelper::clearConfiguration().
       
   537  */
       
   538 void WlanWizardPrivate::clearConfiguration(ConfigurationId confId)
       
   539 {
       
   540     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_CLEARCONFIGURATION_ENTRY);
       
   541     
       
   542     OstTrace1(
       
   543         TRACE_FLOW,
       
   544         WLANWIZARDPRIVATE_CLEARCONFIGURATION,
       
   545         "WlanWizardPrivate::clearConfiguration;confId=%{ConfigurationId}",
       
   546         (uint)confId);
       
   547     
       
   548     mConfigurations.remove(confId);
       
   549     
       
   550     OstTraceFunctionExit0(WLANWIZARDPRIVATE_CLEARCONFIGURATION_EXIT);
       
   551 }
       
   552 
       
   553 /*!
       
   554  * See WlanWizardHelper::configurationExists().
       
   555  */
       
   556 bool WlanWizardPrivate::configurationExists(ConfigurationId confId)
       
   557 {
       
   558     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_CONFIGURATIONEXISTS_ENTRY);
       
   559     
       
   560     OstTrace1(
       
   561         TRACE_DUMP,
       
   562         WLANWIZARDPRIVATE_CONFIGURATIONEXISTS,
       
   563         "WlanWizardPrivate::configurationExists;confId=%{ConfigurationId}",
       
   564         (uint)confId);
       
   565     
       
   566     OstTraceFunctionExit0(WLANWIZARDPRIVATE_CONFIGURATIONEXISTS_EXIT);
       
   567     return mConfigurations[confId].isValid();
       
   568 }
       
   569     
       
   570 /*!
       
   571    See WlanWizardHelper::enableNextButton().
       
   572  */
       
   573 void WlanWizardPrivate::enableNextButton(bool enable)
       
   574 {
       
   575     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_ENABLENEXTBUTTON_ENTRY);
       
   576     
       
   577     OstTraceExt2(
       
   578         TRACE_FLOW,
       
   579         WLANWIZARDPRIVATE_ENABLENEXTBUTTON,
       
   580         "WlanWizardPrivate::enableNextButton;this=%x;enable=%x",
       
   581         (unsigned)this,
       
   582         (uint)enable);
       
   583     mActionNext->setEnabled(enable);
       
   584     
       
   585     OstTraceFunctionExit0(WLANWIZARDPRIVATE_ENABLENEXTBUTTON_EXIT);
       
   586 }
       
   587 
       
   588 /*!
       
   589    See WlanWizardHelper::addPage().
       
   590  */
       
   591 void WlanWizardPrivate::addPage(int pageId, WlanWizardPage *page)
       
   592 {
       
   593     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_ADDPAGE_ENTRY);
       
   594     
       
   595     OstTraceExt3(
       
   596         TRACE_FLOW,
       
   597         WLANWIZARDPRIVATE_ADDPAGE, 
       
   598         "WlanWizardPrivate::addPage;this=%x;pageId=%{PageIds};page=%x",
       
   599         (unsigned)this,
       
   600         pageId,
       
   601         (uint)(page));
       
   602 
       
   603     Q_ASSERT(!mPages.contains(pageId));
       
   604     mPages[pageId] = page;
       
   605     
       
   606     OstTraceFunctionExit0(WLANWIZARDPRIVATE_ADDPAGE_EXIT);
       
   607 }
       
   608 
       
   609 /*!
       
   610    See WlanWizardHelper::nextPage().
       
   611  */
       
   612 void WlanWizardPrivate::nextPage()
       
   613 {
       
   614     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_NEXTPAGE_ENTRY);
       
   615     
       
   616     OstTrace1(
       
   617         TRACE_FLOW,
       
   618         WLANWIZARDPRIVATE_NEXTPAGE,
       
   619         "WlanWizardPrivate::nextPage;this=%x",
       
   620         this);
       
   621     
       
   622     mPageFinished = true;
       
   623     toNextPage();
       
   624     
       
   625     OstTraceFunctionExit0(WLANWIZARDPRIVATE_NEXTPAGE_EXIT);
       
   626 }
       
   627 
       
   628 /*!
       
   629    See WlanWizardHelper::mainWindow().
       
   630  */
       
   631 HbMainWindow* WlanWizardPrivate::mainWindow() const
       
   632 {
       
   633     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_MAINWINDOW_ENTRY);
       
   634     OstTraceFunctionExit0(WLANWIZARDPRIVATE_MAINWINDOW_EXIT);
       
   635     return mMainWindow;
       
   636 }
       
   637 
       
   638 /*!
       
   639    See WlanWizardHelper::isCurrentPage().
       
   640  */
       
   641 bool WlanWizardPrivate::isCurrentPage(const HbWidget *page) const
       
   642 {
       
   643     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_ISCURRENTPAGE_ENTRY);
       
   644     
       
   645     bool ret = false;
       
   646     if (mStackedWidget->currentWidget() == page) {
       
   647         ret = true;
       
   648     }
       
   649     
       
   650     OstTraceExt2(
       
   651         TRACE_FLOW,
       
   652         WLANWIZARDPRIVATE_ISCURRENTPAGE, 
       
   653         "WlanWizardPrivate::isCurrentPage;page=%x;ret=%d", 
       
   654         (uint)page,
       
   655         ret);
       
   656     
       
   657     OstTraceFunctionExit0(WLANWIZARDPRIVATE_ISCURRENTPAGE_EXIT);
       
   658     return ret;
       
   659 }
       
   660 
       
   661 /*!
       
   662    See WlanWizardHelper::nextPageId()
       
   663  */
       
   664 int WlanWizardPrivate::nextPageId(bool useWps)
       
   665 {
       
   666     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_NEXTPAGEID_ENTRY);
       
   667     
       
   668     int ret;
       
   669     if (useWps) {
       
   670         ret = WlanWizardPage::PageWpsStart;
       
   671     } else {
       
   672         int secMode = configuration(WlanWizardHelper::ConfSecurityMode).toInt();
       
   673         switch (secMode) {
       
   674         case CMManagerShim::WlanSecModeWep:
       
   675             ret = WlanWizardPageInternal::PageKeyQuery;
       
   676             break;
       
   677             
       
   678         case CMManagerShim::WlanSecModeWpa:
       
   679         case CMManagerShim::WlanSecModeWpa2:
       
   680             if (configuration(WlanWizardHelper::ConfUsePsk).toBool()) {
       
   681                 ret = WlanWizardPageInternal::PageKeyQuery;
       
   682             } else {
       
   683                 ret = WlanWizardPage::PageEapStart;
       
   684             }
       
   685             break;
       
   686             
       
   687         case CMManagerShim::WlanSecMode802_1x:
       
   688             ret = WlanWizardPage::PageEapStart;
       
   689             break;
       
   690             
       
   691         default:
       
   692             Q_ASSERT(
       
   693                 secMode == CMManagerShim::WlanSecModeOpen || 
       
   694                 secMode == CMManagerShim::WlanSecModeWapi);
       
   695             
       
   696             setConfiguration(ConfSecurityMode, CMManagerShim::WlanSecModeOpen);
       
   697             ret = WlanWizardPageInternal::PageProcessSettings;
       
   698             break;
       
   699         }
       
   700     }
       
   701 
       
   702     OstTraceExt3(
       
   703         TRACE_NORMAL,
       
   704         WLANWIZARDPRIVATE_NEXTPAGEID,
       
   705         "WlanWizardPrivate::nextPageId;this=%x;useWps=%x;ret=%{PageIds}",
       
   706         (unsigned)this,
       
   707         (TUint)(useWps),
       
   708         ret);
       
   709 
       
   710     OstTraceFunctionExit0(WLANWIZARDPRIVATE_NEXTPAGEID_EXIT);
       
   711     return ret;
       
   712 }
       
   713 
       
   714 /*!
       
   715    Called when Cancel toolbar button is pressed. In case IAP has been created
       
   716    it will be disconnected and the IAP settings are deleted and finally the
       
   717    wizard is closed. 
       
   718    
       
   719    Indicates also to the current wizard page that cancel has been pressed.
       
   720  */
       
   721 void WlanWizardPrivate::cancelTriggered()
       
   722 {
       
   723     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_CANCELTRIGGERED_ENTRY);
       
   724     
       
   725     OstTrace1(
       
   726         TRACE_BORDER,
       
   727         WLANWIZARDPRIVATE_CANCELTRIGGERED,
       
   728         "WlanWizardPrivate::cancelTriggered;this=%x",
       
   729         this);
       
   730     
       
   731     // Disconnect receiving more signals from any actions
       
   732     disconnectActions();
       
   733     
       
   734     mPageTimer->stop();
       
   735 
       
   736     HbWidget *widget = qobject_cast<HbWidget*>(mStackedWidget->currentWidget());
       
   737     Q_ASSERT(widget);
       
   738     mPageMapper[widget]->cancelTriggered();
       
   739 
       
   740     int referenceId = configuration(ConfIapId).toInt();
       
   741     if (referenceId != WlanQtUtils::IapIdNone) {
       
   742         // call disconnect even if
       
   743         // - connection is not open
       
   744         // - connection establishment is ongoing
       
   745         mWlanQtUtils->disconnectIap(referenceId);
       
   746         
       
   747         // if IAP deletion fails, there is nothing we can do with it
       
   748         mWlanQtUtils->deleteIap(referenceId);
       
   749         setConfiguration(ConfIapId, WlanQtUtils::IapIdNone);
       
   750     }
       
   751     closeViews();
       
   752     Q_ASSERT(q_ptr);
       
   753 
       
   754     OstTrace0(
       
   755         TRACE_BORDER,
       
   756         WLANWIZARDPRIVATE_CANCELTRIGGERED_EMIT,
       
   757         "WlanWizardPrivate::cancelTriggered - emit cancelled()");
       
   758     
       
   759     emit q_ptr->cancelled();
       
   760     
       
   761     OstTrace1(
       
   762         TRACE_BORDER,
       
   763         WLANWIZARDPRIVATE_CANCELTRIGGERED_DONE,
       
   764         "WlanWizardPrivate::cancelTriggered - Done;this=%x",
       
   765         this);
       
   766     
       
   767     OstTraceFunctionExit0(WLANWIZARDPRIVATE_CANCELTRIGGERED_EXIT);
       
   768 }
       
   769 
       
   770 /*!
       
   771    Called when Previous toolbar button is pressed. Shows the previous wizard 
       
   772    page in stacked widget and indicates wizard page that previous has been 
       
   773    pressed.
       
   774  */
       
   775 void WlanWizardPrivate::previousTriggered()
       
   776 {
       
   777     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_PREVIOUSTRIGGERED_ENTRY);
       
   778     
       
   779     OstTrace1(
       
   780         TRACE_BORDER,
       
   781         WLANWIZARDPRIVATE_PREVIOUSTRIGGERED,
       
   782         "WlanWizardPrivate::previousTriggered;this=%x",
       
   783         this);
       
   784     
       
   785     mPageTimer->stop();
       
   786 
       
   787     int index = mStackedWidget->currentIndex();
       
   788     HbWidget *widget = qobject_cast<HbWidget*>(mStackedWidget->currentWidget());
       
   789     Q_ASSERT(widget);
       
   790     int back = mPageMapper[widget]->previousTriggered();
       
   791 
       
   792     // check that at least one page is left in the stack
       
   793     Q_ASSERT( back < mStackedWidget->count());
       
   794 
       
   795     // When a widget which is last in the stack is removed the currentindex
       
   796     // is automatically updated.
       
   797     for (int i = 0; i < back; ++i) {
       
   798         mStackedWidget->removeAt(index - i);
       
   799     }
       
   800 
       
   801     widget = qobject_cast<HbWidget*> (mStackedWidget->currentWidget());
       
   802     Q_ASSERT(widget);
       
   803     WlanWizardPage* page = mPageMapper[widget];
       
   804     Q_ASSERT(page);
       
   805     // In error case if page (value) is not found default contructed key is 
       
   806     // returned, in this case default value for int is 0 which means PageNone.
       
   807     updateFrame(mPages.key(page));
       
   808     enableNextButton(page->showPage());
       
   809     
       
   810     OstTrace1(
       
   811         TRACE_BORDER,
       
   812         WLANWIZARDPRIVATE_PREVIOUSTRIGGERED_DONE,
       
   813         "WlanWizardPrivate::previousTriggered - Done;this=%x",
       
   814         this);
       
   815     
       
   816     OstTraceFunctionExit0(WLANWIZARDPRIVATE_PREVIOUSTRIGGERED_EXIT);
       
   817 }
       
   818 
       
   819 /*!
       
   820    Next toolbar button has been pressed. Wizard framework asks from the current
       
   821    page what should be the next page id and shows it.
       
   822  */
       
   823 void WlanWizardPrivate::nextTriggered()
       
   824 {
       
   825     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_NEXTTRIGGERED_ENTRY);
       
   826     
       
   827     OstTrace1(
       
   828         TRACE_BORDER,
       
   829         WLANWIZARDPRIVATE_NEXTTRIGGERED,
       
   830         "WlanWizardPrivate::nextTriggered;this=%x",
       
   831         this);
       
   832     
       
   833     mPageTimer->stop();
       
   834 
       
   835     HbWidget *widget = qobject_cast<HbWidget*>(mStackedWidget->currentWidget());
       
   836     Q_ASSERT(widget);
       
   837 
       
   838     bool removeFromStack;
       
   839     int pageId = mPageMapper[widget]->nextId(removeFromStack);
       
   840     showPage(pageId, removeFromStack);
       
   841     
       
   842     OstTrace1(
       
   843         TRACE_BORDER,
       
   844         WLANWIZARDPRIVATE_NEXTTRIGGERED_DONE,
       
   845         "WlanWizardPrivate::nextTriggered - Done;this=%x",
       
   846         this);
       
   847     
       
   848     OstTraceFunctionExit0(WLANWIZARDPRIVATE_NEXTTRIGGERED_EXIT);
       
   849 }
       
   850 
       
   851 /*!
       
   852    Finish button has been pressed. Closes the wizard and sends finished()
       
   853    signal to the client. 
       
   854  */
       
   855 void WlanWizardPrivate::finishTriggered()
       
   856 {
       
   857     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_FINISHTRIGGERED_ENTRY);
       
   858     
       
   859     OstTrace1(
       
   860         TRACE_BORDER,
       
   861         WLANWIZARDPRIVATE_FINISHTRIGGERED,
       
   862         "WlanWizardPrivate::finishTriggered;this=%x",
       
   863         this);
       
   864     
       
   865     // Disconnect receiving more signals from any actions
       
   866     disconnectActions();
       
   867     
       
   868     mPageTimer->stop();
       
   869     closeViews();
       
   870 
       
   871     Q_ASSERT(q_ptr);
       
   872     emit q_ptr->finished(
       
   873         configuration(ConfIapId).toInt(), 
       
   874         configuration(ConfConnected).toBool());
       
   875     
       
   876     OstTrace1(
       
   877         TRACE_BORDER,
       
   878         WLANWIZARDPRIVATE_FINISHTRIGGERED_DONE,
       
   879         "WlanWizardPrivate::finishTriggered - Done;this=%x",
       
   880         this);
       
   881     
       
   882     OstTraceFunctionExit0(WLANWIZARDPRIVATE_FINISHTRIGGERED_EXIT);
       
   883 }
       
   884 
       
   885 /*!
       
   886    In case wizard page is using timer protection for the page, this is the
       
   887    slot to handle the callback from the timer.
       
   888  */
       
   889 void WlanWizardPrivate::onTimeOut()
       
   890 {
       
   891     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_ONTIMEOUT_ENTRY);
       
   892     
       
   893     OstTrace1(
       
   894         TRACE_BORDER,
       
   895         WLANWIZARDPRIVATE_ONTIMEOUT,
       
   896         "WlanWizardPrivate::onTimeOut;this=%x",
       
   897         this);
       
   898     
       
   899     toNextPage();
       
   900     
       
   901     OstTrace1(
       
   902         TRACE_BORDER,
       
   903         WLANWIZARDPRIVATE_ONTIMEOUT_DONE,
       
   904         "WlanWizardPrivate::onTimeOut - Done;this=%x",
       
   905         this);
       
   906     
       
   907     OstTraceFunctionExit0(WLANWIZARDPRIVATE_ONTIMEOUT_EXIT);
       
   908 }
       
   909 
       
   910 /*!
       
   911    Slot to start wizard page operation asynchronous. Starts also the timer
       
   912    to protect the wizard page.
       
   913  */
       
   914 void WlanWizardPrivate::startPageOperation()
       
   915 {
       
   916     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_STARTPAGEOPERATION_ENTRY);
       
   917     
       
   918     // Process this if wizard has not been closed
       
   919     if (mClosed == false) {
       
   920         OstTrace1(
       
   921             TRACE_BORDER,
       
   922             WLANWIZARDPRIVATE_STARTPAGEOPERATION,
       
   923             "WlanWizardPrivate::startPageOperation;this=%x",
       
   924             this);
       
   925         
       
   926         HbWidget *widget = 
       
   927             qobject_cast<HbWidget*>(mStackedWidget->currentWidget());
       
   928         Q_ASSERT(widget);
       
   929         mPageFinished = false;
       
   930         mPageTimer->start(PageTimeout);
       
   931         mPageMapper[widget]->startOperation();
       
   932         
       
   933         OstTrace1(
       
   934             TRACE_BORDER,
       
   935             WLANWIZARDPRIVATE_STARTPAGEOPERATION_DONE,
       
   936             "WlanWizardPrivate::startPageOperation - DONE;this=%x",
       
   937             this);
       
   938     }
       
   939     
       
   940     OstTraceFunctionExit0(WLANWIZARDPRIVATE_STARTPAGEOPERATION_EXIT);
       
   941 }
       
   942 
       
   943 /*!
       
   944    In case the wizard page uses timer protection this method determines when
       
   945    the next page is shown.
       
   946  */
       
   947 void WlanWizardPrivate::toNextPage()
       
   948 {
       
   949     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_TONEXTPAGE_ENTRY);
       
   950     
       
   951     if (mPageFinished && !(mPageTimer->isActive())) {
       
   952         OstTrace1(
       
   953             TRACE_FLOW,
       
   954             WLANWIZARDPRIVATE_TONEXTPAGE,
       
   955             "WlanWizardPrivate::toNextPage;this=%x",
       
   956             this);
       
   957         
       
   958         // process this asynchronous. Main purpose is to release the current
       
   959         // call stack and process the page change using new call stack
       
   960         QMetaObject::invokeMethod(this, "nextTriggered", Qt::QueuedConnection);
       
   961     }
       
   962     
       
   963     OstTraceFunctionExit0(WLANWIZARDPRIVATE_TONEXTPAGE_EXIT);
       
   964 }
       
   965 
       
   966 /*!
       
   967    Show requested page and removes the current wizard page from the stack if
       
   968    required. This method updates the title and toolbar accordingly.
       
   969    
       
   970    See WlanWizardPage::nextId()
       
   971    
       
   972    @param [in] pageId Wizard Page ID to be shown
       
   973    @param [in] removeFromStack if true the current wizard page is removed from
       
   974                                the stackedwidget. 
       
   975  */
       
   976 void WlanWizardPrivate::showPage(int pageId, bool removeFromStack)
       
   977 {
       
   978     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_SHOWPAGE_ENTRY);
       
   979     
       
   980     OstTraceExt3(
       
   981         TRACE_FLOW,
       
   982         WLANWIZARDPRIVATE_SHOWPAGE,
       
   983         "WlanWizardPrivate::showPage;this=%x;"
       
   984         "pageId=%{PageIds};removeFromStack=%x",
       
   985         (unsigned)this,
       
   986         pageId,
       
   987         (TUint)(removeFromStack));
       
   988     
       
   989     // PageNone is returned by wizard pages when some validation of page content
       
   990     // has not passed and the page does not want to process wizard to next page
       
   991     if (pageId == WlanWizardPage::PageNone) {
       
   992         OstTraceFunctionExit0(WLANWIZARDPRIVATE_SHOWPAGE_EXIT);
       
   993         return;
       
   994     }
       
   995     
       
   996     //  PageProcessSettings is shown only when WLAN AP is found in scanning
       
   997     // 1/ when client calls setParameters()
       
   998     // 2/ scanning page has found match with given SSID
       
   999     if (pageId == WlanWizardPage::PageProcessSettings) {
       
  1000         if (configuration(ConfProcessSettings).toBool() == false) {
       
  1001             if (handleIap()){
       
  1002                 pageId = WlanWizardPageInternal::PageSummary;
       
  1003             } else {
       
  1004                 pageId = WlanWizardPage::PageGenericError;
       
  1005                 setConfiguration(
       
  1006                     ConfGenericErrorString, 
       
  1007                     hbTrId("txt_occ_dialog_unable_to_save_settings_please_ret"));
       
  1008                 
       
  1009                 setConfiguration(
       
  1010                     ConfGenericErrorPageStepsBackwards, 
       
  1011                     WlanWizardPage::OneStepBackwards);
       
  1012             }
       
  1013             OstTraceExt2(
       
  1014                 TRACE_FLOW,
       
  1015                 WLANWIZARDPRIVATE_SHOWPAGE_UPDATE,
       
  1016                 "WlanWizardPrivate::showPage - change page;this=%x;"
       
  1017                 "pageId=%{PageIds}",
       
  1018                 (unsigned)this,
       
  1019                 pageId);
       
  1020         }
       
  1021     }
       
  1022 
       
  1023     // Create visualization of next page and store it to mappers
       
  1024     WlanWizardPage* page = mPages[pageId];
       
  1025     Q_ASSERT(page);
       
  1026     HbWidget* widget = page->initializePage();
       
  1027     Q_ASSERT(widget);
       
  1028     mPageMapper[widget] = page;
       
  1029 
       
  1030     // index calculation has to be happened before adding new widget into
       
  1031     // the stacked widget. Since the internal implementation of stackedwidget
       
  1032     // sets the first widget in the stack to current widget..
       
  1033     // and when there are not any widgets in the stack the current index is
       
  1034     // -1. Valid index starts from 0.
       
  1035     int index = mStackedWidget->currentIndex();
       
  1036 
       
  1037     if (removeFromStack) {
       
  1038         // widget is removed from the stacked widget, not deleted
       
  1039         mStackedWidget->removeAt(index);
       
  1040     } else {
       
  1041         index++;
       
  1042     }
       
  1043     mStackedWidget->addWidget(widget);
       
  1044     mStackedWidget->setCurrentIndex(index);
       
  1045     updateFrame(pageId);
       
  1046     enableNextButton(page->showPage());    
       
  1047 
       
  1048     // If wizard page needs to start some control operation trigger it 
       
  1049     // asyncronously so that the UI gets more priority to get painted correctly
       
  1050     // before any operation takes place in wizard page. This is important for
       
  1051     // timer protected pages. Makes wizard to work smother from UI perspective
       
  1052     if (page->requiresStartOperation()) {
       
  1053         OstTrace0(
       
  1054             TRACE_FLOW,
       
  1055             WLANWIZARDPRIVATE_SHOWPAGE_INVOKE,
       
  1056             "WlanWizardPrivate::showPage - Invoke startOperation");
       
  1057         
       
  1058         QMetaObject::invokeMethod(this, "startPageOperation", Qt::QueuedConnection);
       
  1059     }
       
  1060     
       
  1061     OstTraceFunctionExit0(DUP1_WLANWIZARDPRIVATE_SHOWPAGE_EXIT);
       
  1062 }
       
  1063 
       
  1064 /*!
       
  1065    Creates all control objects of WLAN wizard pages which are inherited from
       
  1066    WlanWizardPage and adds those into a internal database. 
       
  1067  */
       
  1068 void WlanWizardPrivate::createPages()
       
  1069 {
       
  1070     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_CREATEPAGES_ENTRY);
       
  1071     
       
  1072     OstTrace0(
       
  1073         TRACE_NORMAL,
       
  1074         WLANWIZARDPRIVATE_CREATEPAGES,
       
  1075         "WlanWizardPrivate::createPages");
       
  1076     
       
  1077     addPage(
       
  1078         WlanWizardPageInternal::PageKeyQuery, 
       
  1079         new WlanWizardPageKeyQuery(this));
       
  1080     
       
  1081     addPage(
       
  1082         WlanWizardPageInternal::PageProcessSettings, 
       
  1083         new WlanWizardPageProcessingSettings(this));
       
  1084     
       
  1085     addPage(
       
  1086         WlanWizardPageInternal::PageSummary, 
       
  1087         new WlanWizardPageSummary(this));
       
  1088 
       
  1089     addPage(
       
  1090         WlanWizardPageInternal::PageGenericError, 
       
  1091         new WlanWizardPageGenericError(this));
       
  1092     
       
  1093     addPage(
       
  1094         WlanWizardPageInternal::PageSsid,
       
  1095         new WlanWizardPageSsid(this));
       
  1096     
       
  1097     addPage(
       
  1098         WlanWizardPageInternal::PageScanning, 
       
  1099         new WlanWizardPageScanning(this));
       
  1100     
       
  1101     addPage(
       
  1102         WlanWizardPageInternal::PageNetworkMode, 
       
  1103         new WlanWizardPageNetworkMode(this));
       
  1104     
       
  1105     addPage(
       
  1106         WlanWizardPageInternal::PageNetworkSecurity, 
       
  1107         new WlanWizardPageSecurityMode(this));
       
  1108     
       
  1109     OstTraceFunctionExit0(WLANWIZARDPRIVATE_CREATEPAGES_EXIT);
       
  1110 }
       
  1111 
       
  1112 /*!
       
  1113    Called when wizard is closed 
       
  1114    - cancelled by the user
       
  1115    - finished by the user
       
  1116  */
       
  1117 void WlanWizardPrivate::closeViews()
       
  1118 {
       
  1119     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_CLOSEVIEWS_ENTRY);
       
  1120     
       
  1121     mDialog->hide();
       
  1122     mClosed = true;
       
  1123     
       
  1124     OstTraceFunctionExit0(WLANWIZARDPRIVATE_CLOSEVIEWS_EXIT);
       
  1125 }
       
  1126 
       
  1127 /*!
       
  1128    This method takes care of the title of wizard and toolbutton. Correct items
       
  1129    are selected based on the \a pageId and the amount of objects in the stacked
       
  1130    widget.
       
  1131    
       
  1132    @param [in] pageId Wizard Page Id
       
  1133  */
       
  1134 void WlanWizardPrivate::updateFrame(int pageId)
       
  1135 {
       
  1136     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_UPDATEFRAME_ENTRY);
       
  1137     
       
  1138     int currentIndex = mStackedWidget->currentIndex();
       
  1139 
       
  1140     OstTraceExt3(
       
  1141         TRACE_FLOW,
       
  1142         WLANWIZARDPRIVATE_UPDATEFRAME, 
       
  1143         "WlanWizardPrivate::updateFrame;this=%x;pageId=%{PageIds};currentIndex=%d",
       
  1144         (unsigned)this,
       
  1145         pageId,
       
  1146         (uint)(currentIndex));
       
  1147     
       
  1148     // For last page (summary) show Finish instead of Next button
       
  1149     if (pageId == WlanWizardPageInternal::PageSummary) {
       
  1150         mTitle->setPlainText(hbTrId("txt_occ_title_wlan_setup_wizard_summary"));
       
  1151         mActionFinish->setVisible(true);
       
  1152         mActionNext->setVisible(false);
       
  1153         mActionPrevious->setVisible(false);
       
  1154     } else {
       
  1155         // Index starts from zero, wizard page numbering starts from one.
       
  1156         mTitle->setPlainText(
       
  1157             hbTrId("txt_occ_title_wlan_setup_wizard_step_l1").arg(
       
  1158                 currentIndex + 1));
       
  1159         mActionFinish->setVisible(false);
       
  1160         mActionNext->setVisible(true);
       
  1161 
       
  1162         // If first page is shown then Previous button is disabled
       
  1163         if (currentIndex < 1) {
       
  1164             mActionPrevious->setVisible(false);
       
  1165         } else {
       
  1166             mActionPrevious->setVisible(true);
       
  1167             if (pageId == WlanWizardPage::PageProcessSettings) {
       
  1168                 mActionPrevious->setEnabled(false);
       
  1169             } else {
       
  1170                 mActionPrevious->setEnabled(true);
       
  1171             }
       
  1172         }
       
  1173     }
       
  1174     
       
  1175     OstTraceFunctionExit0(WLANWIZARDPRIVATE_UPDATEFRAME_EXIT);
       
  1176 }
       
  1177 
       
  1178 /*!
       
  1179    Loads widgets and objects from the docml file. 
       
  1180  */
       
  1181 void WlanWizardPrivate::loadDocml()
       
  1182 {
       
  1183     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_LOADDOCML_ENTRY);
       
  1184     
       
  1185     bool ok = true;
       
  1186     
       
  1187     mDocLoader->load(":/docml/occ_wlan_wizard_main.docml", &ok);
       
  1188     Q_ASSERT(ok);
       
  1189 
       
  1190     mDialog.reset( qobject_cast<HbDialog*> (mDocLoader->findWidget("dialog")) );
       
  1191     Q_ASSERT(mDialog != NULL);
       
  1192 
       
  1193     mTitle = qobject_cast<HbLabel*> (mDocLoader->findWidget("title"));
       
  1194     Q_ASSERT(mTitle != NULL);
       
  1195 
       
  1196     mStackedWidget = 
       
  1197         qobject_cast<HbStackedWidget*> (mDocLoader->findWidget("stackedWidget"));
       
  1198     Q_ASSERT(mStackedWidget != NULL);
       
  1199 
       
  1200     mActionNext = qobject_cast<HbAction*> (mDocLoader->findObject("actionNext"));
       
  1201     Q_ASSERT(mActionNext != NULL);
       
  1202 
       
  1203     mActionPrevious = 
       
  1204         qobject_cast<HbAction*> (mDocLoader->findObject("actionPrevious"));
       
  1205     Q_ASSERT(mActionPrevious != NULL);
       
  1206 
       
  1207     mActionFinish = 
       
  1208         qobject_cast<HbAction*> (mDocLoader->findObject("actionFinish"));
       
  1209     Q_ASSERT(mActionFinish != NULL);
       
  1210 
       
  1211     mActionCancel = 
       
  1212         qobject_cast<HbAction*> (mDocLoader->findObject("actionCancel"));
       
  1213     Q_ASSERT(mActionCancel != NULL);
       
  1214     
       
  1215     // Actions are added from left to right to the toolbar of dialog
       
  1216     mDialog->addAction(mActionPrevious);
       
  1217     mDialog->addAction(mActionCancel);
       
  1218     mDialog->addAction(mActionNext);
       
  1219     mDialog->addAction(mActionFinish);
       
  1220     
       
  1221     // TODO: workaround to prevent action to close the dialog
       
  1222     disconnect(mActionPrevious, SIGNAL(triggered()), mDialog.data(), SLOT(close()));
       
  1223     disconnect(mActionCancel, SIGNAL(triggered()), mDialog.data(), SLOT(close()));
       
  1224     disconnect(mActionNext, SIGNAL(triggered()), mDialog.data(), SLOT(close()));
       
  1225     disconnect(mActionFinish, SIGNAL(triggered()), mDialog.data(), SLOT(close()));
       
  1226 
       
  1227     ok = true;
       
  1228     ok = connect(mPageTimer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
       
  1229     Q_ASSERT(ok);
       
  1230     
       
  1231     ok = connect(
       
  1232         mActionNext,
       
  1233         SIGNAL(triggered()), 
       
  1234         this,
       
  1235         SLOT(nextTriggered()));
       
  1236     Q_ASSERT(ok);
       
  1237     
       
  1238     ok = connect(
       
  1239         mActionPrevious,
       
  1240         SIGNAL(triggered()), 
       
  1241         this,
       
  1242         SLOT(previousTriggered()));
       
  1243     Q_ASSERT(ok);
       
  1244     
       
  1245     ok = connect(
       
  1246         mActionFinish,
       
  1247         SIGNAL(triggered()), 
       
  1248         this,
       
  1249         SLOT(finishTriggered()));
       
  1250     Q_ASSERT(ok);
       
  1251     
       
  1252     ok = connect(
       
  1253         mActionCancel,
       
  1254         SIGNAL(triggered()), 
       
  1255         this,
       
  1256         SLOT(cancelTriggered()));
       
  1257     Q_ASSERT(ok);
       
  1258 
       
  1259     // TODO: workaround for full screen dialog, with docml it is possible to
       
  1260     // define fullscreen dialog, mut resize is not done correctly when orientation
       
  1261     // is changed. See TSW Error: MTAA-854DK8
       
  1262     ok = HbStyleLoader::registerFilePath(":/css/custom.css");
       
  1263     Q_ASSERT(ok);
       
  1264     
       
  1265     OstTraceFunctionExit0(WLANWIZARDPRIVATE_LOADDOCML_EXIT);
       
  1266 }
       
  1267 
       
  1268 /*!
       
  1269    Disconnect receiving triggered() signal from any toolbar action.
       
  1270  */
       
  1271 void WlanWizardPrivate::disconnectActions()
       
  1272 {
       
  1273     OstTraceFunctionEntry0(WLANWIZARDPRIVATE_DISCONNECTACTIONS_ENTRY);
       
  1274     
       
  1275     disconnect(
       
  1276         mActionNext,
       
  1277         SIGNAL(triggered()), 
       
  1278         this,
       
  1279         SLOT(nextTriggered()));
       
  1280     
       
  1281     disconnect(
       
  1282         mActionPrevious,
       
  1283         SIGNAL(triggered()), 
       
  1284         this,
       
  1285         SLOT(previousTriggered()));
       
  1286     
       
  1287     disconnect(
       
  1288         mActionFinish,
       
  1289         SIGNAL(triggered()), 
       
  1290         this,
       
  1291         SLOT(finishTriggered()));
       
  1292 
       
  1293     disconnect(
       
  1294         mActionCancel,
       
  1295         SIGNAL(triggered()), 
       
  1296         this,
       
  1297         SLOT(cancelTriggered()));
       
  1298     
       
  1299     OstTraceFunctionExit0(WLANWIZARDPRIVATE_DISCONNECTACTIONS_EXIT);
       
  1300 }