securitysettings/cpwlansecurityuiplugins/cpwpacmnui/src/cpwpacmnui.cpp
changeset 22 093cf0757204
child 26 9abfd4f00d37
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/securitysettings/cpwlansecurityuiplugins/cpwpacmnui/src/cpwpacmnui.cpp	Fri May 14 15:54:13 2010 +0300
@@ -0,0 +1,448 @@
+/*
+ * 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 the License "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: 
+ *    Control Panel QT UI for WPA/WPA2/802_Dot_1x configuration
+ *
+ */
+
+/*
+ * %version: 17 %
+ */
+
+// System includes
+#include <QStringList>
+#include <eapqtconfiginterface.h>
+#include <cmconnectionmethod_shim.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+#include "cpwpacmnui.h"
+//#include "cpwpacmneapui.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpwpacmnuiTraces.h"
+#endif
+
+/*!
+ \class CpWpaCmnUi
+ \brief CpWpaCmnUi implements 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.
+ */
+//Contructs Common Ui (WPA/WPA2/802.1x/WPA2only) object
+CpWpaCmnUi::CpWpaCmnUi(CMManagerShim::WlanSecMode securityMode, CpItemDataHelper &dataHelpper) :
+    mCmnUi(NULL), mDataHelper(dataHelpper), mPskKeyText(NULL), mEapPlugins(
+            NULL), mWpaEapItem(NULL), mEapEntry(NULL)
+{
+    mSecurityMode = securityMode;
+    mEnablePskMode = true;
+}
+//Deletes objects owned by Common Ui
+CpWpaCmnUi::~CpWpaCmnUi()
+{
+    //delete all dynamically allocated objects
+    OstTraceFunctionEntry1(CPWPACMNUI_CPWPACMNUI_ENTRY,this);
+
+    mCmnUi = NULL;
+    
+    mConnMethod = NULL;
+
+    OstTraceFunctionExit1(CPWPACMNUI_CPWPACMNUI_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* CpWpaCmnUi::createUi(
+        EapQtConfigInterface *eapQtConfigInterface,
+        CmConnectionMethodShim *cmCM)
+{
+
+    OstTraceFunctionEntry1(CPWPACMNUI_CREATEUI_ENTRY,this);
+    int err;
+
+    mConnMethod = cmCM;
+
+    //Read values From CommsDatbase
+    QT_TRYCATCH_ERROR(err, ( readValues()));
+    if(err !=KErrNone) {
+          OstTrace1( TRACE_ERROR, CPWPACMNUI_CREATEUI, "CPWPACMNUI ReadValues returned %d", err );
+    }
+
+    mCmnUi = new CpSettingFormItemData(HbDataFormModelItem::GroupItem,
+            hbTrId("txt_occ_subhead_security_settings"));
+
+    mEapQtConfigInterface = eapQtConfigInterface;
+    //mPlugins.append(mEapQtConfigInterface->supportedOuterTypes());
+
+    //PSK / EAP ?
+    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);
+    mWpaEapItem->setContentWidgetData("currentIndex",0/*To use mEnablePskMode when both modes are available*/);
+
+    mDataHelper.addConnection(mWpaEapItem,
+            SIGNAL(currentIndexChanged(int)), this,
+            SLOT(wpaTypeChanged(int)));
+
+    //1.Pre-Shared Key
+    mPskKeyText = new CpSettingFormItemData(
+            HbDataFormModelItem::TextItem, hbTrId(
+                    "txt_occ_setlabel_preshared_key"),mCmnUi);
+
+    mPskKeyText->setContentWidgetData("text", mKeyData);
+    mPskKeyText->setContentWidgetData("echoMode", 2);
+
+    mPskKeyText->setContentWidgetData("smileysEnabled", "false");
+    mDataHelper.addConnection(mPskKeyText, SIGNAL( editingFinished ()),
+            this, SLOT(pskKeyChanged() ));
+
+    //2.EAP
+    /*  mEapPlugins = new CpSettingFormItemData(
+                HbDataFormModelItem::ComboBoxItem, hbTrId(
+                        "txt_occ_setlabel_eap_type"));
+
+        QStringList items;
+        for (int i = 0; i < mPlugins.length(); ++i)
+            {
+            items << mPlugins.at(i)->localizationId();
+            }
+        mPluginCurrent = 0;
+        mEapPlugins->setContentWidgetData("items", items);
+        //Set the last EAP chosen , by reading from CommsDb
+        mDataHelper.addConnection(mEapPlugins,
+                SIGNAL(currentIndexChanged(int)), this,
+                SLOT(eapTypeChanged(int)));
+
+        mEapEntry = new EapEntyItemData(this, mDataHelper, hbTrId(
+                "txt_occ_button_eap_type_settings"), QString(""));*/
+
+    mUnencryptedConnection = new CpSettingFormItemData(
+            HbDataFormModelItem::CheckBoxItem, hbTrId(
+                    "txt_occ_setlabel_unencrypted_connection"),mCmnUi);
+
+    mUnencryptedConnection->setContentWidgetData("text", hbTrId(
+            "txt_occ_setlabel_unencrypted_connection_val_allowe"));
+
+    //Kept Unchecked by default , but to be read from Comms DB
+    mUnencryptedConnection->setContentWidgetData("checkState",
+            "Unchecked");
+
+    mDataHelper.addConnection(mUnencryptedConnection,
+            SIGNAL( stateChanged(int)), this,
+            SLOT(unencryptConnStateChanged(int)));
+
+    //LoadUi based on the security mode 
+    loadUi();
+
+    OstTraceFunctionExit1(CPWPACMNUI_CREATEUI_EXIT,this);
+    return mCmnUi;
+
+}
+
+// ======== LOCAL FUNCTIONS ========
+
+/*! 
+ Load the CpSettingFormItemData components, based on the security 
+ mode chosen. Only those components that are required by that security
+ mode are loaded
+ */
+void CpWpaCmnUi::loadUi()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_LOADUI_ENTRY,this);
+    int secMode = mSecurityMode;
+    switch (secMode)
+        {
+        case CMManagerShim::WlanSecModeWpa:
+        case CMManagerShim::WlanSecModeWpa2:
+            {
+                if (mEnablePskMode) {
+                    mCmnUi->appendChild(mWpaEapItem);
+                    mCmnUi->appendChild(mPskKeyText);
+                }
+                /*else {
+                    //do nothing, no EAP 
+                    mCmnUi->appendChild(mWpaEapItem);
+                    mCmnUi->appendChild(mEapPlugins);
+                    mCmnUi->appendChild(mEapEntry);
+                }*/
+
+            }
+            break;
+
+        /*case CMManagerShim::WlanSecMode802_1x:
+            {
+            mCmnUi->appendChild(mEapPlugins);
+            mCmnUi->appendChild(mEapEntry);
+            mCmnUi->appendChild(mUnencryptedConnection);
+            }
+            break;*/
+        default:
+            break;
+        } 
+    OstTraceFunctionExit1(CPWPACMNUI_LOADUI_EXIT,this);
+}
+
+/*! 
+ Load the CpSettingFormItemData components,for the
+ Pre-Shared key mode
+ */
+/*void CpWpaCmnUi::loadWPAPskView()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_LOADWPAPSKVIEW_ENTRY,this);
+    mCmnUi->appendChild(mPskKeyText);
+    OstTraceFunctionExit1(CPWPACMNUI_LOADWPAPSKVIEW_EXIT,this);
+}*/
+
+/*! 
+ Load the CpSettingFormItemData components,for the
+ EAP  mode
+ */
+/*void CpWpaCmnUi::loadWPAEapView()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_LOADWPAEAPVIEW_ENTRY,this);
+    mCmnUi->appendChild(mEapPlugins);
+    mCmnUi->appendChild(mEapEntry);
+    OstTraceFunctionExit1(CPWPACMNUI_LOADWPAEAPVIEW_EXIT,this);
+}*/
+
+/*! 
+ Load the CpSettingFormItemData components,for the
+ EAP  mode
+ */
+/*CpBaseSettingView* CpWpaCmnUi::eapUiInstance()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_EAPUIINSTANCE_ENTRY,this); 
+    OstTraceFunctionExit1(CPWPACMNUI_EAPUIINSTANCE_EXIT,this);
+
+    return mEapQtConfigInterface->uiInstance(
+            mPlugins.at(mPluginCurrent)->pluginHandle());
+    return NULL;
+}*/
+
+/*!
+ 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 CpWpaCmnUi::wpaTypeChanged(int pskEnable)
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_WPATYPECHANGED_ENTRY,this);
+    switch (pskEnable)
+        {
+        case 0:
+            {
+            RemovePskView();
+            LoadWPAEapView();
+            }
+            break;
+
+        case 1:
+            {
+            RemoveEapView();
+            LoadWPAPskView();
+            }
+            break;
+        } //do nothing , only PSK mode, no EAP
+    OstTraceFunctionExit1(CPWPACMNUI_WPATYPECHANGED_EXIT,this);
+    //Emit signal back to plugin
+    emit pskEapModeToggled(pskEnable);
+}*/
+
+/*!
+ * Unload components related to Pre-Shared key mode
+ */
+/*void CpWpaCmnUi::removePskView()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_REMOVEPSKVIEW_ENTRY,this);
+    int indexOfPsk = mCmnUi->indexOf(mPskKeyText);
+    mCmnUi->removeChild(indexOfPsk);
+    OstTraceFunctionExit1(CPWPACMNUI_REMOVEPSKVIEW_EXIT,this);
+}*/
+
+/*!
+ * Unload components related to EAP mode
+ */
+/*void CpWpaCmnUi::removeEapView()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_REMOVEEAPVIEW_ENTRY,this);
+    int indexOfEapPlugin = mCmnUi->indexOf(mEapPlugins);
+    mCmnUi->removeChild(indexOfEapPlugin);
+
+    int indexOfEapEntry = mCmnUi->indexOf(mEapEntry);
+    mCmnUi->removeChild(indexOfEapEntry);
+    OstTraceFunctionExit1(CPWPACMNUI_REMOVEEAPVIEW_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 CpWpaCmnUi::eapTypeChanged(int eapPlugin)
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_EAPTYPECHANGED_ENTRY,this);
+    mPluginCurrent = eapPlugin;
+    OstTraceFunctionExit1(CPWPACMNUI_EAPTYPECHANGED_EXIT,this);
+    emit eapPluginChanged(mPluginCurrent);
+}*/
+
+/*!
+ Slot to handle change in pre-shared key string
+ Emits signal back to the security plugin to indicate 
+ the change
+
+ */
+void CpWpaCmnUi::pskKeyChanged()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_PSKKEYCHANGED_ENTRY,this);
+    QVariant keyValue = mPskKeyText->contentWidgetData("text");
+    QString keyString = keyValue.toString();
+    OstTraceFunctionExit1(CPWPACMNUI_PSKKEYCHANGED_EXIT,this);
+    //Emit signal back to plugin
+    emit keyChanged(keyString);
+}
+
+/*!
+ 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 CpWpaCmnUi::unencryptConnStateChanged(int state)
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_UNENCRYPTCONNSTATECHANGED_ENTRY,this); emit
+    connectionStateChanged(state);
+    OstTraceFunctionExit1(CPWPACMNUI_UNENCRYPTCONNSTATECHANGED_EXIT,this);
+}*/
+
+/*!
+ * Reads the wlan security fields from CommsDb 
+ */
+void CpWpaCmnUi::readValues()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_READVALUES_ENTRY,this);
+    switch (mSecurityMode)
+        {
+        case CMManagerShim::WlanSecModeWpa:
+        case CMManagerShim::WlanSecModeWpa2:
+            {
+            loadWPA_WPA2Fields();
+            }
+            break;
+
+       /* case CMManagerShim::WlanSecMode802_1x:
+            {
+            load802Dot1xFields();
+            }
+            break;*/
+
+        default:
+            break;
+        } 
+    OstTraceFunctionExit1(CPWPACMNUI_READVALUES_EXIT,this);
+}
+
+/*!
+ * Reads the wlan security wpa/wpa2 related fields from CommsDb 
+ */
+void CpWpaCmnUi::loadWPA_WPA2Fields()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_LOADWPAFIELDS_ENTRY,this);
+    /*mEnablePskMode = mConnMethod->getIntAttribute(
+            CMManagerShim::WlanEnableWpaPsk);*/
+			
+	 //only PSK mode enabled(temporary);to be read from Comms later
+    mEnablePskMode = true ; 		
+    
+    //set the same to Comms(temporary) ; the mode to be set , depends on what user chooses 
+    //between PSK & EAP
+     mConnMethod->setBoolAttribute(CMManagerShim::WlanEnableWpaPsk,mEnablePskMode);
+			
+    if (mEnablePskMode) {
+        mKeyData = mConnMethod->getString8Attribute(
+                CMManagerShim::WlanWpaPreSharedKey);
+    }
+   /* else {
+        //mcurrentEapPlugin = mCMExtShim->GetIntAttribute( use appropriate enum to get the eap plugin index );
+    } */
+    OstTraceFunctionExit1(CPWPACMNUI_LOADWPAFIELDS_EXIT,this);
+}
+
+/*!
+ * Reads the wlan security eap related fields from CommsDb 
+ */
+/*void CpWpaCmnUi::load802Dot1xFields()
+{
+    OstTraceFunctionEntry1(CPWPACMNUI_LOAD802DOT1XFIELDS_ENTRY,this);
+    //mcurrentEapPlugin = mCMExtShim->GetIntAttribute(use appropriate enum to get the eap plugin index);
+
+    //unencryptStateChanged = mConnMethod->getIntAttribute(CMManagerShim::EWlan802_1xAllowUnencrypted);
+    OstTraceFunctionExit1(CPWPACMNUI_LOAD802DOT1XFIELDS_EXIT,this);
+}*/
+
+/*!
+ * Reset the values on the corresponding Ui elements
+ */
+void CpWpaCmnUi::reset()
+    {
+    OstTraceFunctionEntry1(CPWPACMNUI_RESET_ENTRY,this);
+    //Read values from Comms and update the Ui items
+    readValues();
+    
+    switch (mSecurityMode)
+          {
+          case CMManagerShim::WlanSecModeWpa:
+          case CMManagerShim::WlanSecModeWpa2:
+              {
+                  if(mEnablePskMode) {
+                      mPskKeyText->setContentWidgetData("text", mKeyData);
+                  }
+              }
+              break;
+
+          /*case CMManagerShim::WlanSecMode802_1x:
+              {
+              //Set appropriate value in widget for 802.1x
+              if(mEnablePskMode) {
+              mPskKeyText->setContentWidgetData("checkState", mKeyData);
+              }
+              break;*/
+
+          default:
+              break;
+          }
+    OstTraceFunctionExit1(CPWPACMNUI_RESET_EXIT,this);
+    }
+