diff -r 30e048a7b597 -r bad0cc58d154 securitysettings/cpwlansecurityuiplugins/cpwpacmnui/src/cpwpacmnui_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/securitysettings/cpwlansecurityuiplugins/cpwpacmnui/src/cpwpacmnui_p.cpp Tue Aug 31 15:16:37 2010 +0300 @@ -0,0 +1,759 @@ +/* + * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * Private Implementation for Control Panel QT UI for WPA/WPA2/802_Dot_1x configuration + * + */ + +/* + * %version: tr1cfwln#13 % + */ + +// User Includes +#include "cpwpacmnui_p.h" +#include "wpakeyvalidator.h" +#include "cpwpacmneapui.h" + +// System Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Trace Definition +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "cpwpacmnui_pTraces.h" +#endif + + +/*! + \class CpWpaCmnUiPrivate + \brief CpWpaCmnUiPrivate is a private class implementation the common Ui for WPA/WPA2/802.1x/WPA2 only + Security Settings Control Panel Plugins, + which will allow viewing/editing of WPA/WPA2/802.1x/WPA2 Security Settings. + */ +/*! + * Constructor Common Ui (WPA/WPA2/802.1x/WPA2only) object + * + * \param securityMode chosen by user , for which Ui is constructed and returned + * \param dataHelpper Control Panel Item data helpper object + * \param commonUi Pointer To public class for CpWpaCmnUiPrivate + */ +CpWpaCmnUiPrivate::CpWpaCmnUiPrivate(CMManagerShim::WlanSecMode securityMode, + CpItemDataHelper &dataHelpper) : + mDataHelper(dataHelpper), + mCmnUi(NULL), + mPskKeyText(NULL), + mEapPlugins(NULL), + mUnencryptedConnection(NULL), + mWpaEapItem(NULL), + mEapEntry(NULL), + mEapQtConfigInterface(NULL), + mSecurityMode(securityMode), + mConnMethod(NULL), + mEnablePskMode(true), + mCurrentEapPlugin(0), + mUnencryptState(false) +{ + Q_ASSERT( + mSecurityMode == CMManagerShim::WlanSecModeWpa || + mSecurityMode == CMManagerShim::WlanSecModeWpa2 || + mSecurityMode == CMManagerShim::WlanSecMode802_1x); + OstTrace1( TRACE_FLOW, DUP1_CPWPACMNUIPRIVATE_CPWPACMNUIPRIVATE, "CpWpaCmnUiPrivate::CpWpaCmnUiPrivate;mSecurityMode=%u", mSecurityMode ); + +} + +/*! + * Destructor - Deletes objects owned by Common Ui + */ +CpWpaCmnUiPrivate::~CpWpaCmnUiPrivate() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_CPWPACMNUIPRIVATE_ENTRY, this ); + //delete all dynamically allocated objects + + mCmnUi = NULL; + mConnMethod = NULL; + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_CPWPACMNUIPRIVATE_EXIT, this ); +} + +// ======== MEMBER FUNCTIONS ======== + +/*! + * Creates the Ui instance based on the security mode;WPAWPA2/802.1x/WPA2 only + * Owns the Ui instance + * + * \param eapQtConfigInterface to list all eap plugins + * \param mCmCM Connection MethoD Qt interface + * + * \return Ui instance for the security mode set + */ + +CpSettingFormItemData* CpWpaCmnUiPrivate::createUi( + EapQtConfigInterface *eapQtConfigInterface, + CmConnectionMethodShim *cmCM) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_CREATEUI_ENTRY, this ); + + // NOT OWNED + mConnMethod = cmCM; + mEapQtConfigInterface = eapQtConfigInterface; + mPlugins.append(mEapQtConfigInterface->supportedOuterTypes()); + qSort(mPlugins.begin(), mPlugins.end(), CpWpaCmnUiPrivate::pluginLessThan); + + mCmnUi = new CpSettingFormItemData(HbDataFormModelItem::GroupItem, + hbTrId("txt_occ_subhead_security_settings")); + + //LoadUi based on the security mode + loadUi(); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_CREATEUI_EXIT, this ); + return mCmnUi; +} + +/*! + Load the CpSettingFormItemData components,for the + EAP mode + */ +CpBaseSettingView* CpWpaCmnUiPrivate::eapUiInstance() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_EAPUIINSTANCE_ENTRY, this ); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_EAPUIINSTANCE_EXIT, this ); + return mEapQtConfigInterface->uiInstance(EapQtPluginHandle::PluginUndefined, + mPlugins.at(mCurrentEapPlugin).pluginHandle()); +} + + + +/*! + * Creates Combo box for PSK and EAP mode selection. + * + * @return CompoBox object. + */ +CpSettingFormItemData* CpWpaCmnUiPrivate::createWpaTypeSelector() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_CREATEWPATYPESELECTOR_ENTRY, this ); + + // In case of the object exists just update the data + if (!mWpaEapItem) { + mWpaEapItem = new CpSettingFormItemData( + HbDataFormModelItem::ComboBoxItem, hbTrId( + "txt_occ_setlabel_wpawpa2"), mCmnUi); + + QStringList wpatype; + wpatype.append(hbTrId("txt_occ_setlabel_wpawpa2_val_eap")); + wpatype.append(hbTrId("txt_occ_setlabel_wpawpa2_val_preshared_key")); + + mWpaEapItem->setContentWidgetData("items", wpatype); + + mDataHelper.addConnection(mWpaEapItem, + SIGNAL(currentIndexChanged(int)), this, + SLOT(wpaTypeChanged(int))); + + mCmnUi->appendChild(mWpaEapItem); + } + + mWpaEapItem->setContentWidgetData("currentIndex", mEnablePskMode ? 1 : 0); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_CREATEWPATYPESELECTOR_EXIT, this ); + return mWpaEapItem; +} + +/*! + * Creates LineEditor for WPA-PSK + * + * @return LineEdit object. + */ +CpSettingFormItemData* CpWpaCmnUiPrivate::createPskEditor() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_CREATEPSKEDITOR_ENTRY, this ); + + if (!mPskKeyText) { + mPskKeyText = new CpSettingFormItemData( + HbDataFormModelItem::TextItem, hbTrId( + "txt_occ_setlabel_preshared_key"), mCmnUi); + + mPskKeyText->setContentWidgetData("echoMode", HbLineEdit::PasswordEchoOnEdit); + mPskKeyText->setContentWidgetData("smileysEnabled", "false"); + mDataHelper.addConnection(mPskKeyText, SIGNAL( editingFinished ()), + this, SLOT(pskKeyChanged() )); + + mDataHelper.connectToForm(SIGNAL(itemShown (const QModelIndex &) ), + this, SLOT(setEditorPreferences(const QModelIndex &))); + + mCmnUi->appendChild(mPskKeyText); + } + + mPskKeyText->setContentWidgetData("text", mKeyData); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_CREATEPSKEDITOR_EXIT, this ); + return mPskKeyText; +} + +/*! + * Creates Combo box for EAP outer type selection + * + * @return CompoBox object. + */ +CpSettingFormItemData* CpWpaCmnUiPrivate::createEapSelector() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_CREATEEAPSELECTOR_ENTRY, this ); + + if (!mEapPlugins) { + mEapPlugins = new CpSettingFormItemData( + HbDataFormModelItem::ComboBoxItem, + hbTrId("txt_occ_setlabel_eap_type")); + + QStringList list; + QList::iterator i; + for (i = mPlugins.begin() ; i != mPlugins.end() ; ++i){ + list << i->localizationId(); + } + + mEapPlugins->setContentWidgetData("items", list); + + mDataHelper.addConnection(mEapPlugins, + SIGNAL(currentIndexChanged(int)), this, + SLOT(eapTypeChanged(int))); + + mCmnUi->appendChild(mEapPlugins); + } + + mEapPlugins->setContentWidgetData("currentIndex", mCurrentEapPlugin); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_CREATEEAPSELECTOR_EXIT, this ); + return mEapPlugins; +} + +/*! + * Creates a button for EAP configurations + * + * @return EntryItem for EAP + */ +EapEntryItemData* CpWpaCmnUiPrivate::createEapEntryItem() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_CREATEEAPENTRYITEM_ENTRY, this ); + + if (!mEapEntry) { + mEapEntry = new EapEntryItemData(this, mDataHelper, hbTrId( + "txt_occ_button_eap_type_settings")); + + mCmnUi->appendChild(mEapEntry); + } + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_CREATEEAPENTRYITEM_EXIT, this ); + return mEapEntry; +} + +/*! + * Creates Combo box for Unencrypted selection + * + * @return CompoBox object. + */ +CpSettingFormItemData* CpWpaCmnUiPrivate::createUnencryptedBox() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_CREATEUNENCRYPTEDBOX_ENTRY, this ); + + if (!mUnencryptedConnection) { + mUnencryptedConnection = new CpSettingFormItemData( + HbDataFormModelItem::CheckBoxItem, hbTrId( + "txt_occ_setlabel_unencrypted_connection"), mCmnUi); + + mUnencryptedConnection->setContentWidgetData("text", hbTrId( + "txt_occ_setlabel_unencrypted_connection_val_allowe")); + + mDataHelper.addConnection(mUnencryptedConnection, + SIGNAL( stateChanged(int)), this, + SLOT(unencryptConnStateChanged(int))); + + mCmnUi->appendChild(mUnencryptedConnection); + } + + mUnencryptedConnection->setContentWidgetData("checkState", + mUnencryptState ? Qt::Checked : Qt::Unchecked); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_CREATEUNENCRYPTEDBOX_EXIT, this ); + return mUnencryptedConnection; +} + +/*! + Removes provided object from the UI if it exists there and sets the pointer + to NULL. + + @param object object to be removed and nulled. + */ +void CpWpaCmnUiPrivate::removeObjectFromView(CpSettingFormItemData *&object) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_REMOVEOBJECTFROMVIEW_ENTRY, this ); + + if (object) { + mCmnUi->removeChild(mCmnUi->indexOf(object)); + object = NULL; + } + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_REMOVEOBJECTFROMVIEW_EXIT, this ); +} + + +/*! + Load the CpSettingFormItemData components, based on the security + mode chosen. Only those components that are required by that security + mode are loaded + */ +void CpWpaCmnUiPrivate::loadUi() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_LOADUI_ENTRY, this ); + + //Read values From CommsDatbase + int err; + QT_TRYCATCH_ERROR(err, ( readValues())); + if (err != KErrNone) { + OstTrace1( TRACE_ERROR, CPWPACMNUIPRIVATE_CREATEUI, "CPWPACMNUI ReadValues returned %d", err ); + } + + switch (mSecurityMode) + { + case CMManagerShim::WlanSecModeWpa: + case CMManagerShim::WlanSecModeWpa2: + createWpaTypeSelector(); + if (mEnablePskMode) { + loadWPAPskView(); + } + else { + loadWPAEapView(); + } + break; + + case CMManagerShim::WlanSecMode802_1x: + default: + Q_ASSERT(mSecurityMode == CMManagerShim::WlanSecMode802_1x); + createEapSelector(); + createEapEntryItem(); +#if 0 /* not supported for now */ + createUnencryptedBox(); +#endif /* #if 0 */ + break; + } + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_LOADUI_EXIT, this ); +} + +/*! + Load the CpSettingFormItemData components,for the + Pre-Shared key mode + */ +void CpWpaCmnUiPrivate::loadWPAPskView() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_LOADWPAPSKVIEW_ENTRY, this ); + + removeObjectFromView(mEapPlugins); + + if (mEapEntry) { + mCmnUi->removeChild(mCmnUi->indexOf(mEapEntry)); + mEapEntry = NULL; + } + createPskEditor(); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_LOADWPAPSKVIEW_EXIT, this ); +} + +/*! + Load the CpSettingFormItemData components,for the + EAP mode + */ +void CpWpaCmnUiPrivate::loadWPAEapView() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_LOADWPAEAPVIEW_ENTRY, this ); + + removeObjectFromView(mPskKeyText); + createEapSelector(); + createEapEntryItem(); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_LOADWPAEAPVIEW_EXIT, this ); +} + +/*! + * Reads the wlan security wpa/wpa2 related fields from CommsDb + */ +void CpWpaCmnUiPrivate::loadWPA_WPA2Fields() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_LOADWPA_WPA2FIELDS_ENTRY, this ); + + mEnablePskMode = mConnMethod->getBoolAttribute( + CMManagerShim::WlanEnableWpaPsk); + + mKeyData = mConnMethod->getString8Attribute( + CMManagerShim::WlanWpaPreSharedKey); + + loadEapConfigurations(); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_LOADWPA_WPA2FIELDS_EXIT, this ); +} + +/*! + Reads the WLAN security eap related fields from CommsDb and from EAP Qt + Configuration Interface + */ +void CpWpaCmnUiPrivate::load802Dot1xFields() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_LOAD802DOT1XFIELDS_ENTRY, this ); + + loadEapConfigurations(); + + mUnencryptState + = mConnMethod->getBoolAttribute(CMManagerShim::Wlan802_1xAllowUnencrypted); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_LOAD802DOT1XFIELDS_EXIT, this ); + } + +/*! + Loads selected EAP method. + */ +void CpWpaCmnUiPrivate::loadEapConfigurations() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_LOADEAPCONFIGURATIONS_ENTRY, this ); + + QList types = mEapQtConfigInterface->selectedOuterTypes(); + mCurrentEapPlugin = 0; + if (types.length() > 0) { + for (int i = 0; i < mPlugins.length(); ++i) + { + if (mPlugins.at(i).pluginHandle() == types.at(0)) { + mCurrentEapPlugin = i; + break; + } + } + } + + else { + types.append(mPlugins.at(0).pluginHandle()); + mEapQtConfigInterface->setSelectedOuterTypes(types); + } + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_LOADEAPCONFIGURATIONS_EXIT, this ); +} + + +/*! + * Reads the wlan security fields from CommsDb + */ +void CpWpaCmnUiPrivate::readValues() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_READVALUES_ENTRY, this ); + + switch (mSecurityMode) + { + case CMManagerShim::WlanSecModeWpa: + case CMManagerShim::WlanSecModeWpa2: + loadWPA_WPA2Fields(); + break; + + case CMManagerShim::WlanSecMode802_1x: + default: + Q_ASSERT(mSecurityMode == CMManagerShim::WlanSecMode802_1x); + load802Dot1xFields(); + break; + } + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_READVALUES_EXIT, this ); +} + + + +/*! + * Tries an Update on Comms Db for the latest settings. + * Catches and handles any exception while updating. + */ +bool CpWpaCmnUiPrivate::tryUpdate() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_TRYUPDATE_ENTRY, this ); + int ret(true); + // Try update + try { + mConnMethod->update(); + } + catch (const std::exception&) { + // Handle error + handleUpdateError(); + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_TRYUPDATE_EXIT, this ); + ret = false; + } + OstTraceFunctionExit1( DUP1_CPWPACMNUIPRIVATE_TRYUPDATE_EXIT, this ); + return ret; +} + +/*! + Handles failed CommsDat update. + */ +void CpWpaCmnUiPrivate::handleUpdateError() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_HANDLEUPDATEERROR_ENTRY, this ); + // Show error note to user + showMessageBox(HbMessageBox::MessageTypeWarning, hbTrId( + "txt_occ_info_unable_to_save_setting")); + // Reload settings from CommsDat and update UI + try { + mConnMethod->refresh(); + } + catch (const std::exception&) { + // Ignore error from refresh. Most likely this will not happen, but + // if it does, there isn't very much we can do. + OstTrace0( TRACE_ERROR, CPWPACMNUIPRIVATE_HANDLEUPDATEERROR, "CpWpaCmnUiPrivate::handleUpdateError" ); + + }; + + //Call reset on Ui elements + reset(); + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_HANDLEUPDATEERROR_EXIT, this ); +} + +/*! + Shows message box with "OK" button using given text. + */ +void CpWpaCmnUiPrivate::showMessageBox(HbMessageBox::MessageBoxType type, + const QString &text) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_SHOWMESSAGEBOX_ENTRY, this ); + // Create a message box + mMessageBox = QSharedPointer (new HbMessageBox(type)); + mMessageBox->setText(text); + mMessageBox->open(); + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_SHOWMESSAGEBOX_EXIT, this ); +} + +/*! + * Resets all the Ui elements to their previous values, + * by reading values from DB + */ +void CpWpaCmnUiPrivate::reset() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_RESET_ENTRY, this ); + + //Reload Ui with the previous settings (read from Comms ) + loadUi(); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_RESET_EXIT, this ); +} + +/*! + Method to handle change in wpa mode :- PSK /EAP, + Update Key in Comms + + \param pskEnable the current mode chosen + */ +void CpWpaCmnUiPrivate::updateWpaType(int pskEnable) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_UPDATEWPATYPE_ENTRY, this ); + int err; + bool PskEnable = pskEnable ? true : false; + + QT_TRYCATCH_ERROR(err,mConnMethod->setBoolAttribute(CMManagerShim::WlanEnableWpaPsk, PskEnable)); + + if (err != KErrNone) { + OstTrace1( TRACE_ERROR, CPWPACMNUIPRIVATE_UPDATEWPATYPE, "CpWpaCmnUiPrivate::updateWpaType;err=%d", err ); + } + tryUpdate(); + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_UPDATEWPATYPE_EXIT, this ); +} + +/*! + Slot to handle change in pre-shared key string + + \param key changed string for PSK + */ +void CpWpaCmnUiPrivate::updatePskKey(QString &key) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_UPDATEPSKKEY_ENTRY, this ); + int err; + //Check for Validity of Pre-shared Key + WpaKeyValidator::KeyStatus keystatus = WpaKeyValidator::validateWpaKey(key); + + if (keystatus == WpaKeyValidator::KeyStatusOk) { + QT_TRYCATCH_ERROR(err, mConnMethod->setString8Attribute(CMManagerShim::WlanWpaPreSharedKey, key)); + if (err != KErrNone) { + OstTrace1( TRACE_ERROR, CPWPACMNUIPRIVATE_UPDATEPSKKEY, "CpWpaCmnUiPrivate::updatePskKey;err=%d", err ); + } + tryUpdate(); + + //Store the String that was just set + mKeyData = key; + } + else { + showMessageBox(HbMessageBox::MessageTypeWarning, hbTrId( + "txt_occ_info_invalid_input")); + } + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_UPDATEPSKKEY_EXIT, this ); +} + + + +//====================== PRIVATE SLOTS=================================== + + +/*! + Slot to handle change in wpa mode :- PSK /EAP + Emits a mode change signal to the security plugin + to indicate the change + + \param pskEnable the current mode chosen + */ +void CpWpaCmnUiPrivate::wpaTypeChanged(int pskEnable) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_WPATYPECHANGED_ENTRY, this ); + + mEnablePskMode = pskEnable == 0 ? false : true; + + if (mEnablePskMode) { + loadWPAPskView(); + } + else { + loadWPAEapView(); + } + + //Update pskEnable flag in DB + updateWpaType(pskEnable); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_WPATYPECHANGED_EXIT, this ); +} + +/*! + Slot to handle change in eap method in use. + Emits signal back to the security plugin to indicate + the change + \param currentplugin plugin number to indicate the + eap method in use + */ +void CpWpaCmnUiPrivate::eapTypeChanged(int eapPlugin) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_EAPTYPECHANGED_ENTRY, this ); + + mCurrentEapPlugin = eapPlugin; + QList outerHandles; + outerHandles.append(mPlugins.at(mCurrentEapPlugin).pluginHandle()); + mEapQtConfigInterface->setSelectedOuterTypes(outerHandles); + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_EAPTYPECHANGED_EXIT, this ); +} + +/*! + Slot to handle change in pre-shared key string + Emits signal back to the security plugin to indicate + the change + + */ +void CpWpaCmnUiPrivate::pskKeyChanged() +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_PSKKEYCHANGED_ENTRY, this ); + + QVariant keyValue = mPskKeyText->contentWidgetData("text"); + QString keyString = keyValue.toString(); + + //Update Pre Shared key in DB + updatePskKey(keyString); + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_PSKKEYCHANGED_EXIT, this ); +} + +/*! + Slot to handle change in the state of unencrypted connection; + to indicate if such a connection is allowed. + Emits signal back to the security plugin to indicate + the change + \param state checked-Allowed / Unchecked-Not allowed + */ +void CpWpaCmnUiPrivate::unencryptConnStateChanged(int state) +{ + OstTraceFunctionEntry1( CPWPACMNUIPRIVATE_UNENCRYPTCONNSTATECHANGED_ENTRY, this ); + + bool checked = (state == Qt::Checked) ? true : false; + mConnMethod->setBoolAttribute( + CMManagerShim::Wlan802_1xAllowUnencrypted,checked); + + tryUpdate(); + + //store the Unencrypted Connection State + mUnencryptState = checked; + + OstTraceFunctionExit1( CPWPACMNUIPRIVATE_UNENCRYPTCONNSTATECHANGED_EXIT, this ); +} + +/*! + * Slot that configures the editor settings for Pre-Shared Key Field. + * This slot is invoked whenever a new item(s) are shown in the current view + * + * \param modelIndex Index of the current item in the model + */ +void CpWpaCmnUiPrivate::setEditorPreferences(const QModelIndex &modelIndex) +{ + + HbDataFormModelItem *item = mDataHelper.modelItemFromModelIndex(modelIndex); + + /* Configure settings only for text fields*/ + if(item->type() == HbDataFormModelItem::TextItem) { + HbLineEdit *edit = qobject_cast(mDataHelper.widgetFromModelIndex(modelIndex)); + HbEditorInterface editInterface(edit); + editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly); + edit->setInputMethodHints(Qt::ImhNoPredictiveText); + } +} + +/*! + Validates current security settings. This function is called whenever + user tries to exit from the settings view. If the plugin determines + that some settings need editing before considered valid, it shall + return false. A dialog will be shown to the user indicating that + settings are still incomplete and asking if he/she wishes to exit + anyway. + + \return True if security settings fpr WPA/WPA2 , WPA2 only are valid, + false if not. +*/ +bool CpWpaCmnUiPrivate::validateSettings() +{ + bool ret(false); + if(mEnablePskMode) { + //Check the latest string entered for the Pre-Shared key in the text box + QVariant keyValue = mPskKeyText->contentWidgetData("text"); + QString keyString = keyValue.toString(); + WpaKeyValidator::KeyStatus keystatus = WpaKeyValidator::validateWpaKey(keyString); + + if (keystatus == WpaKeyValidator::KeyStatusOk && (!keyString.isEmpty())) { + ret= true; + } + } + else{ + //return true if EAP mode + ret = true; + } + return ret; +} + +/*! + comparator for qSort() method to sort Eap plugins based on ordernumber. + + @param plugin1 Plugin1 + @param plugin2 Plugin2 + */ +bool CpWpaCmnUiPrivate::pluginLessThan( + const EapQtPluginInfo &plugin1, + const EapQtPluginInfo &plugin2) +{ + return plugin1.orderNumber() < plugin2.orderNumber(); +} + +