diff -r d9ec2b8c6bad -r 2fbd1d709fe7 wlanutilities/wlanwizard/src/wlanwizardpagesecuritymode.cpp --- a/wlanutilities/wlanwizard/src/wlanwizardpagesecuritymode.cpp Wed Jun 23 19:25:42 2010 +0300 +++ b/wlanutilities/wlanwizard/src/wlanwizardpagesecuritymode.cpp Tue Jul 06 15:29:22 2010 +0300 @@ -28,13 +28,15 @@ #include "wlanwizard_p.h" #include "wlanwizard.h" #include "wlanwizardpagesecuritymode.h" +#include "wlanwizardscanlist.h" #include "OstTraceDefinitions.h" #ifdef OST_TRACE_COMPILER_IN_USE #include "wlanwizardpagesecuritymodeTraces.h" #endif /*! - * Constructor. Member initialization. + * Constructor method for the Sequrity mode query view object. + * @param [in] parent pointer to parent object. */ WlanWizardPageSecurityMode::WlanWizardPageSecurityMode( WlanWizardPrivate* parent) : @@ -57,7 +59,8 @@ } /*! - * Page initialization. If view is already loaded, does nothing. + * Page initialization. If view widget is already loaded, does nothing. + * @return pointer to widget "occ_add_wlan_02". */ HbWidget* WlanWizardPageSecurityMode::initializePage() { @@ -71,70 +74,49 @@ bool ok; mLoader->load( ":/docml/occ_add_wlan_02_03.docml", &ok ); - Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "Invalid docml file"); + Q_ASSERT(ok); // Initialize orientation - loadDocml( mWizard->mainWindow()->orientation() ); + loadDocmlSection( mWizard->mainWindow()->orientation() ); // Load widgets mWidget = qobject_cast (mLoader->findWidget("occ_add_wlan_02")); - Q_ASSERT_X(mWidget != NULL, "WlanWizardPageSecurityMode", "View not found"); + Q_ASSERT(mWidget != NULL); mList = qobject_cast (mLoader->findWidget("list")); - Q_ASSERT_X(mList != NULL, "WlanWizardPageSecurityMode", "List not found"); + Q_ASSERT(mList != NULL); mLabel = qobject_cast (mLoader->findWidget("dialog_6")); - Q_ASSERT_X(mLabel != NULL, "WlanWizardPageSecurityMode", "Label not found"); + Q_ASSERT(mLabel != NULL); mLabel->setPlainText(hbTrId("txt_occ_dialog_select_network_security_mode")); - // Create contents to the security mode radio button list. - populateSecModeList(); - // Connect orientation signal from the main window to orientation // loader. ok &= connect( mWizard->mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)), - this, SLOT(loadDocml(Qt::Orientation))); + this, SLOT(loadDocmlSection(Qt::Orientation))); + Q_ASSERT(ok); // Connect signal from the radio button list indicating that an item // has been selected to validation handler. ok &= connect( mList, SIGNAL(itemSelected(int)), - this, SLOT(itemSelected(int))); - - Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "slot connection failed"); - - + this, SLOT(itemSelected())); + Q_ASSERT(ok); + } + + // Create contents to the security mode radio button list. + populateSecModeList(); - } return mWidget; } /*! - * Indicates the validity of the security mode page. - * @see WlanWizardPage - */ -bool WlanWizardPageSecurityMode::showPage() -{ - return mValid; -} - -/*! - * Sets the page as valid, if any mode is selected. - * (Initially none is selected.) - */ -void WlanWizardPageSecurityMode::itemSelected(int /* index */) -{ - OstTrace0( TRACE_BORDER, WLANWIZARDPAGESECURITYMODE_ITEMSELECTED, - "WlanWizardPageSecurityMode::itemSelected" ); - - mValid = true; - mWizard->enableNextButton(mValid); -} - -/*! - * Evaluates and returns the next page id. - * @see initializePage() + * Validates the Sequrity more selection and sets the configuration in + * the wlanwizard. + * @param [out] removeFromStack returns false. + * @return depending on the sequrity mode, returns the appropriate view + * identifier. */ int WlanWizardPageSecurityMode::nextId(bool &removeFromStack) const { @@ -154,23 +136,46 @@ } /*! - * Loads the document with given orientation. + * This method is overrides the default implementation from WlanWizardPage. + * It indicates whether the Next-button should be enabled or not. + * @return true, if a mode has been selected. + */ +bool WlanWizardPageSecurityMode::showPage() +{ + return mValid; +} + +/*! + * Is invoked when user selects a mode from the radio button list. + * (HbRadioButtonList's itemSelected-signal) */ -void WlanWizardPageSecurityMode::loadDocml(Qt::Orientation orientation) +void WlanWizardPageSecurityMode::itemSelected() +{ + OstTrace0( TRACE_BORDER, WLANWIZARDPAGESECURITYMODE_ITEMSELECTED, + "WlanWizardPageSecurityMode::itemSelected" ); + + mValid = true; + mWizard->enableNextButton(mValid); +} + +/*! + * Loads the document orientation information from occ_add_wlan_02_03.docml + * This is called each time phone orientation changes. + * @param [in] orientation indicates whether the phone is in portrait or + * landscape mode. + */ +void WlanWizardPageSecurityMode::loadDocmlSection(Qt::Orientation orientation) { OstTrace1( TRACE_NORMAL, WLANWIZARDPAGESECURITYMODE_LOADDOCML, "WlanWizardPageSecurityMode::loadDocml - orientation;orientation=%x", ( TUint )( orientation ) ); - bool ok; - if( orientation == Qt::Horizontal ) { - mLoader->load(":/docml/occ_add_wlan_02_03.docml", "landscape_section", &ok); - Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "Landscape section not found"); - } - else { - mLoader->load(":/docml/occ_add_wlan_02_03.docml", "portrait_section", &ok); - Q_ASSERT_X(ok, "WlanWizardPageSecurityMode", "Portrait section not found"); - } + WlanWizardPageInternal::loadDocmlSection( + mLoader, + orientation, + ":/docml/occ_add_wlan_02_03.docml", + "portrait_section", + "landscape_section"); } /*! @@ -182,6 +187,12 @@ mSecModes.clear(); mPageIds.clear(); + mUsePsk.clear(); + + // A list is created. Since there is no practical way of knowing whether + // the new contents are different from the previous contents (if there + // even were any in the first place) the validity is always reset. + mValid = false; // Create the radio button list to correspond to correct security mode // identifiers and page identifiers. @@ -197,7 +208,7 @@ true); // In case of Ad-hoc network, exclude wpa, eap and 802.1X modes. - if(mWizard->configuration(WlanWizardPrivate::ConfNetworkMode).toInt() + if (mWizard->configuration(WlanWizardPrivate::ConfNetworkMode).toInt() != CMManagerShim::Adhoc) { addToList(items, hbTrId("txt_occ_list_wpa_with_password"), @@ -205,7 +216,6 @@ WlanWizardPageInternal::PageKeyQuery, true); - // TODO: Fix these codes addToList(items, hbTrId("txt_occ_list_wpa_with_eap"), CMManagerShim::WlanSecModeWpa, WlanWizardPage::PageEapStart, @@ -221,16 +231,46 @@ } /*! - * Creates lists for security modes and page id:s so that they can be referred - * with radio button widget index. + * A support function to map the radio button list to a generic network + * mode list. This enables the changing of button order without it + * affecting the entire class. + * @param [out] list is a reference to a local list that will be placed as an + * argument to the radio button list. + * @param [in] item is a reference to the text value that is appended to the + * list + * @param [in] mode is the security mode associated with the item + * @param [in] page is the id of the next wizard page when this item is selected. + * @param [in] psk indicates whether password needs to be queried. */ void WlanWizardPageSecurityMode::addToList(QStringList &list, const QString &item, int mode, int page, bool psk) { - list << item; - mSecModes.append(mode); - mPageIds.append(page); - mUsePsk.append(psk); + if (mWizard->configurationExists(WlanWizardHelper::ConfAvailableNetworkOptions)) { + WlanNetworkSetting netMode; + netMode.mode = mWizard->configuration(WlanWizardPrivate::ConfNetworkMode).toInt(); + netMode.hidden = mWizard->configuration(WlanWizardPrivate::ConfHiddenWlan).toBool(); + + // wps always set to false at this point of the wizard. + netMode.wpsSupported = false; + + WlanWizardScanList networkOptions = mWizard->configuration( + WlanWizardHelper::ConfAvailableNetworkOptions).value(); + + for (int i = 0; i < networkOptions.secModes(netMode); i++) { + WlanSecuritySetting secMode = networkOptions.getSecMode(netMode, i); + + if (secMode.mode == mode && secMode.usePsk == psk) { + list << item; + mSecModes.append(mode); + mPageIds.append(page); + mUsePsk.append(psk); + } + } + } + else { + list << item; + mSecModes.append(mode); + mPageIds.append(page); + mUsePsk.append(psk); + } } - -