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