wlanutilities/wlanwizard/src/wlanwizardpagekeyquery.cpp
author hgs
Fri, 06 Aug 2010 18:38:57 +0300
changeset 49 fb81b597edf1
parent 43 72ebcbb64834
child 60 822a45792fdd
permissions -rw-r--r--
201031
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: Key query page for WEP and WPA (2).
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 <HbMainWindow>
hgs
parents:
diff changeset
    22
#include <HbWidget>
hgs
parents:
diff changeset
    23
#include <HbLabel>
hgs
parents:
diff changeset
    24
#include <HbLineEdit>
hgs
parents:
diff changeset
    25
#include <HbEditorInterface>
39
hgs
parents: 31
diff changeset
    26
#include <HbParameterLengthLimiter>
31
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// User includes
hgs
parents:
diff changeset
    29
#include "wlanwizard.h"
hgs
parents:
diff changeset
    30
#include "wlanwizard_p.h"
hgs
parents:
diff changeset
    31
#include "wlanwizardpagekeyquery.h"
hgs
parents:
diff changeset
    32
#include "wlanwizardutils.h"
43
hgs
parents: 39
diff changeset
    33
#include "OstTraceDefinitions.h"
hgs
parents: 39
diff changeset
    34
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents: 39
diff changeset
    35
#include "wlanwizardpagekeyqueryTraces.h"
hgs
parents: 39
diff changeset
    36
#endif
hgs
parents: 39
diff changeset
    37
31
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
/*!
hgs
parents:
diff changeset
    40
   \class WlanWizardPageKeyQuery
hgs
parents:
diff changeset
    41
   \brief Implements Key Query page for WEP and WPA. 
hgs
parents:
diff changeset
    42
 */
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
// External function prototypes
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
// Local constants
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
// ======== LOCAL FUNCTIONS ========
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
/*!
hgs
parents:
diff changeset
    54
   Constructor.
hgs
parents:
diff changeset
    55
   
hgs
parents:
diff changeset
    56
   @param [in] parent pointer to private implementation of wizard.
hgs
parents:
diff changeset
    57
 */
hgs
parents:
diff changeset
    58
WlanWizardPageKeyQuery::WlanWizardPageKeyQuery(WlanWizardPrivate* parent) :
hgs
parents:
diff changeset
    59
    WlanWizardPageInternal(parent), 
hgs
parents:
diff changeset
    60
    mWidget(NULL), 
hgs
parents:
diff changeset
    61
    mLabelTitle(NULL),
hgs
parents:
diff changeset
    62
    mLineEdit(NULL), 
hgs
parents:
diff changeset
    63
    mLabelError(NULL), 
hgs
parents:
diff changeset
    64
    mDocLoader(NULL)
hgs
parents:
diff changeset
    65
{
43
hgs
parents: 39
diff changeset
    66
    OstTraceFunctionEntry0( WLANWIZARDPAGEKEYQUERY_WLANWIZARDPAGEKEYQUERY_ENTRY );
hgs
parents: 39
diff changeset
    67
    OstTraceFunctionExit0( WLANWIZARDPAGEKEYQUERY_WLANWIZARDPAGEKEYQUERY_EXIT );
31
hgs
parents:
diff changeset
    68
}
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
/*!
hgs
parents:
diff changeset
    71
   Destructor.
hgs
parents:
diff changeset
    72
 */
hgs
parents:
diff changeset
    73
WlanWizardPageKeyQuery::~WlanWizardPageKeyQuery()
hgs
parents:
diff changeset
    74
{
43
hgs
parents: 39
diff changeset
    75
    OstTraceFunctionEntry0( DUP1_WLANWIZARDPAGEKEYQUERY_WLANWIZARDPAGEKEYQUERY_ENTRY );
31
hgs
parents:
diff changeset
    76
    delete mDocLoader;
hgs
parents:
diff changeset
    77
    
hgs
parents:
diff changeset
    78
    // Wizard framework deletes the visualization (owns mWidget).
43
hgs
parents: 39
diff changeset
    79
    OstTraceFunctionExit0( DUP1_WLANWIZARDPAGEKEYQUERY_WLANWIZARDPAGEKEYQUERY_EXIT );
31
hgs
parents:
diff changeset
    80
}
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
/*!
hgs
parents:
diff changeset
    83
   See WlanWizardPage::initializePage()
hgs
parents:
diff changeset
    84
   
hgs
parents:
diff changeset
    85
   Initializes the key query page and initializes objects based on the security
hgs
parents:
diff changeset
    86
   mode.
hgs
parents:
diff changeset
    87
 */
hgs
parents:
diff changeset
    88
HbWidget* WlanWizardPageKeyQuery::initializePage()
hgs
parents:
diff changeset
    89
{
43
hgs
parents: 39
diff changeset
    90
    OstTraceFunctionEntry0( WLANWIZARDPAGEKEYQUERY_INITIALIZEPAGE_ENTRY );
31
hgs
parents:
diff changeset
    91
    if (!mWidget) {
hgs
parents:
diff changeset
    92
        bool ok;
hgs
parents:
diff changeset
    93
        
hgs
parents:
diff changeset
    94
        mDocLoader = new HbDocumentLoader(mWizard->mainWindow());
hgs
parents:
diff changeset
    95
        
hgs
parents:
diff changeset
    96
        // Load document common part
hgs
parents:
diff changeset
    97
        mDocLoader->load(":/docml/occ_add_wlan_01_04.docml", &ok);
hgs
parents:
diff changeset
    98
        Q_ASSERT(ok);
hgs
parents:
diff changeset
    99
              
hgs
parents:
diff changeset
   100
        // Initialize orientation
hgs
parents:
diff changeset
   101
        loadDocmlSection(mWizard->mainWindow()->orientation());
hgs
parents:
diff changeset
   102
        
hgs
parents:
diff changeset
   103
        // Load widgets
hgs
parents:
diff changeset
   104
        mWidget = 
hgs
parents:
diff changeset
   105
            qobject_cast<HbWidget*> (mDocLoader->findWidget("occ_add_wlan_01"));
hgs
parents:
diff changeset
   106
        Q_ASSERT(mWidget != NULL);
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
        mLabelTitle = qobject_cast<HbLabel*> (mDocLoader->findWidget("dialog"));
hgs
parents:
diff changeset
   109
        Q_ASSERT(mLabelTitle != NULL);
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
        mLineEdit = qobject_cast<HbLineEdit*> (mDocLoader->findWidget("lineEditKey"));
hgs
parents:
diff changeset
   112
        Q_ASSERT(mLineEdit != NULL);
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
        mLabelError = 
hgs
parents:
diff changeset
   115
            qobject_cast<HbLabel*> (mDocLoader->findWidget("labelErrorNote"));
hgs
parents:
diff changeset
   116
        Q_ASSERT(mLabelError != NULL);
hgs
parents:
diff changeset
   117
        
hgs
parents:
diff changeset
   118
        ok = connect(
hgs
parents:
diff changeset
   119
            mWizard->mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
hgs
parents:
diff changeset
   120
            this, SLOT(loadDocmlSection(Qt::Orientation)));
hgs
parents:
diff changeset
   121
        Q_ASSERT(ok);
hgs
parents:
diff changeset
   122
        
hgs
parents:
diff changeset
   123
        HbEditorInterface editInterface(mLineEdit);
hgs
parents:
diff changeset
   124
        editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
hgs
parents:
diff changeset
   125
        editInterface.setSmileyTheme(HbSmileyTheme());
hgs
parents:
diff changeset
   126
        mLineEdit->setInputMethodHints(
hgs
parents:
diff changeset
   127
            Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase);
hgs
parents:
diff changeset
   128
        mLineEdit->installEventFilter(this);
hgs
parents:
diff changeset
   129
    }
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
    if (mWizard->configuration(WlanWizardHelper::ConfSecurityMode) ==
hgs
parents:
diff changeset
   132
        CMManagerShim::WlanSecModeWep) {
hgs
parents:
diff changeset
   133
        mLineEdit->setMaxLength(WlanWizardUtils::WepHex128BitMaxLength);    
hgs
parents:
diff changeset
   134
    } else {
hgs
parents:
diff changeset
   135
        mLineEdit->setMaxLength(WlanWizardUtils::WpaMaxLength);
hgs
parents:
diff changeset
   136
    }
hgs
parents:
diff changeset
   137
    
hgs
parents:
diff changeset
   138
    mLabelTitle->setPlainText(
49
hgs
parents: 43
diff changeset
   139
        HbParameterLengthLimiter("txt_occ_dialog_enter_key_for_1").arg(
hgs
parents: 43
diff changeset
   140
            mWizard->configuration(WlanWizardPrivate::ConfSsid).toString()));
31
hgs
parents:
diff changeset
   141
    
43
hgs
parents: 39
diff changeset
   142
    OstTraceFunctionExit0( WLANWIZARDPAGEKEYQUERY_INITIALIZEPAGE_EXIT );
31
hgs
parents:
diff changeset
   143
    return mWidget;
hgs
parents:
diff changeset
   144
}
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
/*!
hgs
parents:
diff changeset
   147
   Loads docml at initialization phase and when HbMainWindow sends orientation()
hgs
parents:
diff changeset
   148
   signal.
hgs
parents:
diff changeset
   149
   
hgs
parents:
diff changeset
   150
   @param [in] orientation to be loaded.
hgs
parents:
diff changeset
   151
 */
hgs
parents:
diff changeset
   152
void WlanWizardPageKeyQuery::loadDocmlSection(Qt::Orientation orientation)
hgs
parents:
diff changeset
   153
{
43
hgs
parents: 39
diff changeset
   154
    OstTraceFunctionEntry0( WLANWIZARDPAGEKEYQUERY_LOADDOCMLSECTION_ENTRY );
39
hgs
parents: 31
diff changeset
   155
    WlanWizardPageInternal::loadDocmlSection(
hgs
parents: 31
diff changeset
   156
        mDocLoader,
hgs
parents: 31
diff changeset
   157
        orientation,
hgs
parents: 31
diff changeset
   158
        ":/docml/occ_add_wlan_01_04.docml", 
hgs
parents: 31
diff changeset
   159
        "portrait_section",
hgs
parents: 31
diff changeset
   160
        "landscape_section");
43
hgs
parents: 39
diff changeset
   161
    OstTraceFunctionExit0( WLANWIZARDPAGEKEYQUERY_LOADDOCMLSECTION_EXIT );
31
hgs
parents:
diff changeset
   162
}
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
/*!
hgs
parents:
diff changeset
   165
   See WlanWizardPage::nextId()
hgs
parents:
diff changeset
   166
   
hgs
parents:
diff changeset
   167
   @param [in,out] removeFromStack return value is always false
hgs
parents:
diff changeset
   168
   
hgs
parents:
diff changeset
   169
   @return In case user has entered incorrect key an appropriate error text is
hgs
parents:
diff changeset
   170
   displayed and WlanWizardPage::PageNone is returned.
hgs
parents:
diff changeset
   171
   
hgs
parents:
diff changeset
   172
   In case user has entered a valid WEP or WPA key, the key is stored into
hgs
parents:
diff changeset
   173
   internal configuration and WlanWizardPage::PageProcessSettings is returned.
hgs
parents:
diff changeset
   174
   
hgs
parents:
diff changeset
   175
 */
hgs
parents:
diff changeset
   176
int WlanWizardPageKeyQuery::nextId(bool &removeFromStack) const
hgs
parents:
diff changeset
   177
{
43
hgs
parents: 39
diff changeset
   178
    OstTraceFunctionEntry0( WLANWIZARDPAGEKEYQUERY_NEXTID_ENTRY );
31
hgs
parents:
diff changeset
   179
    WlanWizardUtils::KeyStatus status(WlanWizardUtils::KeyStatusOk);
39
hgs
parents: 31
diff changeset
   180
    int pageId = WlanWizardPage::nextId(removeFromStack);
31
hgs
parents:
diff changeset
   181
    int secMode = mWizard->configuration(
hgs
parents:
diff changeset
   182
        WlanWizardPrivate::ConfSecurityMode).toInt();
hgs
parents:
diff changeset
   183
    
hgs
parents:
diff changeset
   184
    if (secMode == CMManagerShim::WlanSecModeWep) {
hgs
parents:
diff changeset
   185
        status = WlanWizardUtils::validateWepKey(mLineEdit->text());   
hgs
parents:
diff changeset
   186
    }
hgs
parents:
diff changeset
   187
    else {
hgs
parents:
diff changeset
   188
        Q_ASSERT(
hgs
parents:
diff changeset
   189
            secMode == CMManagerShim::WlanSecModeWpa ||
hgs
parents:
diff changeset
   190
            secMode == CMManagerShim::WlanSecModeWpa2);
hgs
parents:
diff changeset
   191
        
hgs
parents:
diff changeset
   192
        status = WlanWizardUtils::validateWpaKey(mLineEdit->text());
hgs
parents:
diff changeset
   193
    }
hgs
parents:
diff changeset
   194
    QString errorString = keyStatusToErrorString(status);
hgs
parents:
diff changeset
   195
        
hgs
parents:
diff changeset
   196
    if (errorString.length() == 0 ) {
hgs
parents:
diff changeset
   197
        if (secMode == CMManagerShim::WlanSecModeWep) {
hgs
parents:
diff changeset
   198
            mWizard->setConfiguration(WlanWizardPrivate::ConfKeyWep1, mLineEdit->text());
hgs
parents:
diff changeset
   199
            mWizard->setConfiguration(WlanWizardPrivate::ConfKeyWep2, mLineEdit->text());
hgs
parents:
diff changeset
   200
            mWizard->setConfiguration(WlanWizardPrivate::ConfKeyWep3, mLineEdit->text());
hgs
parents:
diff changeset
   201
            mWizard->setConfiguration(WlanWizardPrivate::ConfKeyWep4, mLineEdit->text());
hgs
parents:
diff changeset
   202
            mWizard->setConfiguration(WlanWizardPrivate::ConfKeyWepDefault, 
hgs
parents:
diff changeset
   203
                CMManagerShim::WepKeyIndex1);
hgs
parents:
diff changeset
   204
        } else {
hgs
parents:
diff changeset
   205
            mWizard->setConfiguration(WlanWizardPrivate::ConfKeyWpa, mLineEdit->text());   
hgs
parents:
diff changeset
   206
        }
hgs
parents:
diff changeset
   207
        pageId = WlanWizardPage::PageProcessSettings;
hgs
parents:
diff changeset
   208
    }
hgs
parents:
diff changeset
   209
    else {
hgs
parents:
diff changeset
   210
        mLabelError->setPlainText(errorString);
hgs
parents:
diff changeset
   211
    }
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
    removeFromStack = false;
43
hgs
parents: 39
diff changeset
   214
    OstTraceFunctionExit0( WLANWIZARDPAGEKEYQUERY_NEXTID_EXIT );
31
hgs
parents:
diff changeset
   215
    return pageId;
hgs
parents:
diff changeset
   216
}
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
/*!
hgs
parents:
diff changeset
   219
   See WlanWizardPage::showPage()
hgs
parents:
diff changeset
   220
 */
hgs
parents:
diff changeset
   221
bool WlanWizardPageKeyQuery::showPage()
hgs
parents:
diff changeset
   222
{
43
hgs
parents: 39
diff changeset
   223
    OstTraceFunctionEntry0( WLANWIZARDPAGEKEYQUERY_SHOWPAGE_ENTRY );
31
hgs
parents:
diff changeset
   224
    // Open virtual keyboard by setting focus to line edit
hgs
parents:
diff changeset
   225
    mLineEdit->setFocus();
hgs
parents:
diff changeset
   226
    
43
hgs
parents: 39
diff changeset
   227
    OstTraceFunctionExit0( WLANWIZARDPAGEKEYQUERY_SHOWPAGE_EXIT );
31
hgs
parents:
diff changeset
   228
    return true;
hgs
parents:
diff changeset
   229
}
hgs
parents:
diff changeset
   230
hgs
parents:
diff changeset
   231
/*!
hgs
parents:
diff changeset
   232
   When focus moves into the Key editor and there is visible error text, it
hgs
parents:
diff changeset
   233
   is cleared.
hgs
parents:
diff changeset
   234
   
hgs
parents:
diff changeset
   235
   @param [in] obj Pointer to the object the event was sent to
hgs
parents:
diff changeset
   236
   @param [in] event Pointer to the sent event.
hgs
parents:
diff changeset
   237
   
hgs
parents:
diff changeset
   238
   @return false. do not eat the event.
hgs
parents:
diff changeset
   239
 */
hgs
parents:
diff changeset
   240
bool WlanWizardPageKeyQuery::eventFilter(QObject *obj, QEvent *event)
hgs
parents:
diff changeset
   241
{
43
hgs
parents: 39
diff changeset
   242
    OstTraceFunctionEntry0( WLANWIZARDPAGEKEYQUERY_EVENTFILTER_ENTRY );
31
hgs
parents:
diff changeset
   243
    if (obj == mLineEdit && event->type() == QEvent::FocusIn) {
hgs
parents:
diff changeset
   244
        mLabelError->setPlainText("");
hgs
parents:
diff changeset
   245
    }
43
hgs
parents: 39
diff changeset
   246
    OstTraceFunctionExit0( WLANWIZARDPAGEKEYQUERY_EVENTFILTER_EXIT );
31
hgs
parents:
diff changeset
   247
    return false;
hgs
parents:
diff changeset
   248
}
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
/*!
hgs
parents:
diff changeset
   251
   Maps provided error code to error text.
hgs
parents:
diff changeset
   252
   
hgs
parents:
diff changeset
   253
   @param [in] status status of key validation
hgs
parents:
diff changeset
   254
   
hgs
parents:
diff changeset
   255
   @return An error text in case of error, empty string is returned on 
hgs
parents:
diff changeset
   256
   successful case.
hgs
parents:
diff changeset
   257
 */
hgs
parents:
diff changeset
   258
QString WlanWizardPageKeyQuery::keyStatusToErrorString(
hgs
parents:
diff changeset
   259
    WlanWizardUtils::KeyStatus status) const
hgs
parents:
diff changeset
   260
{
43
hgs
parents: 39
diff changeset
   261
    OstTraceFunctionEntry0( WLANWIZARDPAGEKEYQUERY_KEYSTATUSTOERRORSTRING_ENTRY );
31
hgs
parents:
diff changeset
   262
    QString errorString;
hgs
parents:
diff changeset
   263
    switch (status) {
hgs
parents:
diff changeset
   264
    case WlanWizardUtils::KeyStatusIllegalCharacters:
hgs
parents:
diff changeset
   265
        errorString = hbTrId("txt_occ_dialog_illegal_characters_in_key_please_c");
hgs
parents:
diff changeset
   266
        break;
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
    case WlanWizardUtils::KeyStatusWpaTooShort:
hgs
parents:
diff changeset
   269
        errorString = hbTrId("txt_occ_dialog_preshared_key_too_short_at_least");
hgs
parents:
diff changeset
   270
        break;
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
    case WlanWizardUtils::KeyStatusWepInvalidLength:
hgs
parents:
diff changeset
   273
        errorString = hbTrId("txt_occ_dialog_key_is_of_incorrect_length_please");
hgs
parents:
diff changeset
   274
        break;
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
    default:
hgs
parents:
diff changeset
   277
        Q_ASSERT(WlanWizardUtils::KeyStatusOk == status);
hgs
parents:
diff changeset
   278
        // nothing to do here.
hgs
parents:
diff changeset
   279
        break;
hgs
parents:
diff changeset
   280
    }
43
hgs
parents: 39
diff changeset
   281
    OstTraceFunctionExit0( WLANWIZARDPAGEKEYQUERY_KEYSTATUSTOERRORSTRING_EXIT );
31
hgs
parents:
diff changeset
   282
    return errorString;
hgs
parents:
diff changeset
   283
}