wlanutilities/wlanwizard/src/wlanwizardpagesecuritymode.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 Page: Security mode Selection.
hgs
parents:
diff changeset
    16
 *
hgs
parents:
diff changeset
    17
 */
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
// System includes
hgs
parents:
diff changeset
    20
#include <HbDocumentLoader>
hgs
parents:
diff changeset
    21
#include <HbWidget>
hgs
parents:
diff changeset
    22
#include <HbRadioButtonList>
hgs
parents:
diff changeset
    23
#include <HbMainWindow>
hgs
parents:
diff changeset
    24
#include <HbLabel>
hgs
parents:
diff changeset
    25
#include <cmmanagerdefines_shim.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// User includes
hgs
parents:
diff changeset
    28
#include "wlanwizard_p.h"
hgs
parents:
diff changeset
    29
#include "wlanwizard.h"
hgs
parents:
diff changeset
    30
#include "wlanwizardpagesecuritymode.h"
hgs
parents:
diff changeset
    31
#include "OstTraceDefinitions.h"
hgs
parents:
diff changeset
    32
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents:
diff changeset
    33
#include "wlanwizardpagesecuritymodeTraces.h"
hgs
parents:
diff changeset
    34
#endif
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
/*!
hgs
parents:
diff changeset
    37
 * Constructor. Member initialization.
hgs
parents:
diff changeset
    38
 */
hgs
parents:
diff changeset
    39
WlanWizardPageSecurityMode::WlanWizardPageSecurityMode(
hgs
parents:
diff changeset
    40
    WlanWizardPrivate* parent) :
hgs
parents:
diff changeset
    41
    WlanWizardPageInternal(parent), 
hgs
parents:
diff changeset
    42
    mWidget(NULL),
hgs
parents:
diff changeset
    43
    mList(NULL),
hgs
parents:
diff changeset
    44
    mLabel(NULL),
hgs
parents:
diff changeset
    45
    mLoader(NULL),
hgs
parents:
diff changeset
    46
    mValid(false)
hgs
parents:
diff changeset
    47
{
hgs
parents:
diff changeset
    48
}
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
/*!
hgs
parents:
diff changeset
    51
 * Destructor. Loader widget is deleted.
hgs
parents:
diff changeset
    52
 * All document widgets are deleted by wlanwizard_p destructor.
hgs
parents:
diff changeset
    53
 */
hgs
parents:
diff changeset
    54
WlanWizardPageSecurityMode::~WlanWizardPageSecurityMode()
hgs
parents:
diff changeset
    55
{
hgs
parents:
diff changeset
    56
    delete mLoader;
hgs
parents:
diff changeset
    57
}
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
/*!
hgs
parents:
diff changeset
    60
 * Page initialization. If view is already loaded, does nothing.
hgs
parents:
diff changeset
    61
 */
hgs
parents:
diff changeset
    62
HbWidget* WlanWizardPageSecurityMode::initializePage()
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
    OstTrace0( TRACE_NORMAL, WLANWIZARDPAGESECURITYMODE_INITIALIZEPAGE,
hgs
parents:
diff changeset
    65
        "WlanWizardPageSecurityMode::initializePage" );
hgs
parents:
diff changeset
    66
    
hgs
parents:
diff changeset
    67
    if (mWidget==NULL) {
hgs
parents:
diff changeset
    68
        
hgs
parents:
diff changeset
    69
        mLoader = new HbDocumentLoader(mWizard->mainWindow());
hgs
parents:
diff changeset
    70
        
hgs
parents:
diff changeset
    71
        bool ok;
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
        mLoader->load( ":/docml/occ_add_wlan_02_03.docml", &ok );
hgs
parents:
diff changeset
    74
        Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "Invalid docml file");
hgs
parents:
diff changeset
    75
              
hgs
parents:
diff changeset
    76
        // Initialize orientation
hgs
parents:
diff changeset
    77
        loadDocml( mWizard->mainWindow()->orientation() );
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
        // Load widgets
hgs
parents:
diff changeset
    80
        mWidget = qobject_cast<HbWidget*> (mLoader->findWidget("occ_add_wlan_02"));
hgs
parents:
diff changeset
    81
        Q_ASSERT_X(mWidget != NULL, "WlanWizardPageSecurityMode", "View not found");
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
        mList = qobject_cast<HbRadioButtonList*> (mLoader->findWidget("list"));
hgs
parents:
diff changeset
    84
        Q_ASSERT_X(mList != NULL, "WlanWizardPageSecurityMode", "List not found");
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
        mLabel = qobject_cast<HbLabel*> (mLoader->findWidget("dialog_6"));
hgs
parents:
diff changeset
    87
        Q_ASSERT_X(mLabel != NULL, "WlanWizardPageSecurityMode", "Label not found");
hgs
parents:
diff changeset
    88
        
hgs
parents:
diff changeset
    89
        mLabel->setPlainText(hbTrId("txt_occ_dialog_select_network_security_mode"));
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
        // Create contents to the security mode radio button list.
hgs
parents:
diff changeset
    92
        populateSecModeList();
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
        // Connect orientation signal from the main window to orientation
hgs
parents:
diff changeset
    95
        // loader.
hgs
parents:
diff changeset
    96
        ok &= connect( mWizard->mainWindow(),
hgs
parents:
diff changeset
    97
                 SIGNAL(orientationChanged(Qt::Orientation)),
hgs
parents:
diff changeset
    98
                 this, SLOT(loadDocml(Qt::Orientation)));
hgs
parents:
diff changeset
    99
 
hgs
parents:
diff changeset
   100
        // Connect signal from the radio button list indicating that an item
hgs
parents:
diff changeset
   101
        // has been selected to validation handler.
hgs
parents:
diff changeset
   102
        ok &= connect( mList, SIGNAL(itemSelected(int)),
hgs
parents:
diff changeset
   103
                 this, SLOT(itemSelected(int)));
hgs
parents:
diff changeset
   104
        
hgs
parents:
diff changeset
   105
        Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "slot connection failed");
hgs
parents:
diff changeset
   106
        
hgs
parents:
diff changeset
   107
        
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
    }
hgs
parents:
diff changeset
   110
    return mWidget;
hgs
parents:
diff changeset
   111
}
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
/*!
hgs
parents:
diff changeset
   114
 * Indicates the validity of the security mode page.
hgs
parents:
diff changeset
   115
 * @see WlanWizardPage
hgs
parents:
diff changeset
   116
 */
hgs
parents:
diff changeset
   117
bool WlanWizardPageSecurityMode::showPage()
hgs
parents:
diff changeset
   118
{
hgs
parents:
diff changeset
   119
    return mValid;
hgs
parents:
diff changeset
   120
}
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
/*!
hgs
parents:
diff changeset
   123
 * Sets the page as valid, if any mode is selected.
hgs
parents:
diff changeset
   124
 * (Initially none is selected.) 
hgs
parents:
diff changeset
   125
 */
hgs
parents:
diff changeset
   126
void WlanWizardPageSecurityMode::itemSelected(int /* index */)
hgs
parents:
diff changeset
   127
{
hgs
parents:
diff changeset
   128
    OstTrace0( TRACE_BORDER, WLANWIZARDPAGESECURITYMODE_ITEMSELECTED,
hgs
parents:
diff changeset
   129
        "WlanWizardPageSecurityMode::itemSelected" );
hgs
parents:
diff changeset
   130
    
hgs
parents:
diff changeset
   131
    mValid = true;
hgs
parents:
diff changeset
   132
    mWizard->enableNextButton(mValid);
hgs
parents:
diff changeset
   133
}
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
/*!
hgs
parents:
diff changeset
   136
 * Evaluates and returns the next page id.
hgs
parents:
diff changeset
   137
 * @see initializePage()
hgs
parents:
diff changeset
   138
 */
hgs
parents:
diff changeset
   139
int WlanWizardPageSecurityMode::nextId(bool &removeFromStack) const
hgs
parents:
diff changeset
   140
{
hgs
parents:
diff changeset
   141
    removeFromStack = false;
hgs
parents:
diff changeset
   142
    
hgs
parents:
diff changeset
   143
    // The configuration is selected from the mSecModes list, which is ordered
hgs
parents:
diff changeset
   144
    // during the page initialization.
hgs
parents:
diff changeset
   145
    mWizard->setConfiguration( WlanWizardPrivate::ConfSecurityMode,
hgs
parents:
diff changeset
   146
        mSecModes.at( mList->selected() ) );
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    // The configuration is selected from the mUsePsk list, which is ordered
hgs
parents:
diff changeset
   149
    // during the page initialization.
hgs
parents:
diff changeset
   150
    mWizard->setConfiguration( WlanWizardPrivate::ConfUsePsk,
hgs
parents:
diff changeset
   151
        mUsePsk.at( mList->selected() ) );
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
    return mPageIds.at( mList->selected() );
hgs
parents:
diff changeset
   154
}
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
/*!
hgs
parents:
diff changeset
   157
 * Loads the document with given orientation.
hgs
parents:
diff changeset
   158
 */
hgs
parents:
diff changeset
   159
void WlanWizardPageSecurityMode::loadDocml(Qt::Orientation orientation)
hgs
parents:
diff changeset
   160
{
hgs
parents:
diff changeset
   161
    OstTrace1( TRACE_NORMAL, WLANWIZARDPAGESECURITYMODE_LOADDOCML,
hgs
parents:
diff changeset
   162
        "WlanWizardPageSecurityMode::loadDocml - orientation;orientation=%x",
hgs
parents:
diff changeset
   163
        ( TUint )( orientation ) );
hgs
parents:
diff changeset
   164
    
hgs
parents:
diff changeset
   165
    bool ok;
hgs
parents:
diff changeset
   166
    if( orientation == Qt::Horizontal ) {
hgs
parents:
diff changeset
   167
        mLoader->load(":/docml/occ_add_wlan_02_03.docml", "landscape_section", &ok);
hgs
parents:
diff changeset
   168
        Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "Landscape section not found");
hgs
parents:
diff changeset
   169
    }
hgs
parents:
diff changeset
   170
    else {
hgs
parents:
diff changeset
   171
        mLoader->load(":/docml/occ_add_wlan_02_03.docml", "portrait_section", &ok);
hgs
parents:
diff changeset
   172
        Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "Portrait section not found");
hgs
parents:
diff changeset
   173
    }
hgs
parents:
diff changeset
   174
}
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
/*!
hgs
parents:
diff changeset
   177
 * Support function that creates the contents of the security mode list. 
hgs
parents:
diff changeset
   178
 */
hgs
parents:
diff changeset
   179
void WlanWizardPageSecurityMode::populateSecModeList()
hgs
parents:
diff changeset
   180
{
hgs
parents:
diff changeset
   181
    QStringList items;
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
    mSecModes.clear();
hgs
parents:
diff changeset
   184
    mPageIds.clear();
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
    // Create the radio button list to correspond to correct security mode
hgs
parents:
diff changeset
   187
    // identifiers and page identifiers.
hgs
parents:
diff changeset
   188
    // Populate the list according to network mode selection.
hgs
parents:
diff changeset
   189
    addToList(items, hbTrId("txt_occ_list_open"), 
hgs
parents:
diff changeset
   190
        CMManagerShim::WlanSecModeOpen,
hgs
parents:
diff changeset
   191
        WlanWizardPage::PageProcessSettings,
hgs
parents:
diff changeset
   192
        false);
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
    addToList(items, hbTrId("txt_occ_list_wep_1"),
hgs
parents:
diff changeset
   195
        CMManagerShim::WlanSecModeWep,
hgs
parents:
diff changeset
   196
        WlanWizardPageInternal::PageKeyQuery,
hgs
parents:
diff changeset
   197
        true);
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
    // In case of Ad-hoc network, exclude wpa, eap and 802.1X modes.
hgs
parents:
diff changeset
   200
    if(mWizard->configuration(WlanWizardPrivate::ConfNetworkMode).toInt()
hgs
parents:
diff changeset
   201
        != CMManagerShim::Adhoc) {
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
        addToList(items, hbTrId("txt_occ_list_wpa_with_password"),
hgs
parents:
diff changeset
   204
            CMManagerShim::WlanSecModeWpa,
hgs
parents:
diff changeset
   205
            WlanWizardPageInternal::PageKeyQuery,
hgs
parents:
diff changeset
   206
            true);
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
        // TODO: Fix these codes
hgs
parents:
diff changeset
   209
        addToList(items, hbTrId("txt_occ_list_wpa_with_eap"),
hgs
parents:
diff changeset
   210
            CMManagerShim::WlanSecModeWpa,
hgs
parents:
diff changeset
   211
            WlanWizardPage::PageEapStart,
hgs
parents:
diff changeset
   212
            false);
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
        addToList(items, hbTrId("txt_occ_list_8021x_1"),
hgs
parents:
diff changeset
   215
            CMManagerShim::WlanSecMode802_1x,
hgs
parents:
diff changeset
   216
            WlanWizardPage::PageEapStart,
hgs
parents:
diff changeset
   217
            false);
hgs
parents:
diff changeset
   218
    }
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
    mList->setItems(items);
hgs
parents:
diff changeset
   221
}
hgs
parents:
diff changeset
   222
hgs
parents:
diff changeset
   223
/*!
hgs
parents:
diff changeset
   224
 * Creates lists for security modes and page id:s so that they can be referred
hgs
parents:
diff changeset
   225
 * with radio button widget index.
hgs
parents:
diff changeset
   226
 */
hgs
parents:
diff changeset
   227
void WlanWizardPageSecurityMode::addToList(QStringList &list,
hgs
parents:
diff changeset
   228
    const QString &item, int mode, int page, bool psk)
hgs
parents:
diff changeset
   229
{
hgs
parents:
diff changeset
   230
    list << item;
hgs
parents:
diff changeset
   231
    mSecModes.append(mode);
hgs
parents:
diff changeset
   232
    mPageIds.append(page);
hgs
parents:
diff changeset
   233
    mUsePsk.append(psk);
hgs
parents:
diff changeset
   234
}
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236