securitysettings/cpeapuiplugins/cpeapuserpasswordui/src/cpeapuserpasswordui.cpp
branchRCL_3
changeset 46 c74b3d9f6b9e
parent 45 bad0cc58d154
child 55 9c2aa05919d9
--- a/securitysettings/cpeapuiplugins/cpeapuserpasswordui/src/cpeapuserpasswordui.cpp	Tue Aug 31 15:16:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,480 +0,0 @@
-/*
- * 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: 
- *   Control Panel QT UI for username-password based EAP method configuration
- *
- */
-
-/*
- * %version: 27 %
- */
-
-// System includes
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormViewItem>
-#include <HbParameterLengthLimiter>
-#include <HbMessageBox> 
-#include <HbAction>
-#include <HbLineEdit>
-#include <cpsettingformitemdata.h>
-#include <cpitemdatahelper.h>
-#include <eapqtvalidator.h>
-#include <eapqtexpandedeaptype.h>
-
-// User includes
-#include "cpeapuserpasswordui.h"
-
-/*!
- * \class CpEapUserPasswordUi
- * \brief Implementes username-password based EAP method configuration ui. 
- */
-
-// External function prototypes
-
-// Local constants
-
-/*! 
- * If password has already been stored into the database
- * user is shown dummy password (fixed number of asterisks)
- */
-static const QVariant passwordExistString = "xxxx";
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
- * Constructor.
- * 
- * @param bearer        Bearer type of the accessed configuration.
- * @param iapId         IAP ID of the accessed configuration.
- * @param plugin        Plugin.
- * @param outerHandle   Outer handle.
- */
-CpEapUserPasswordUi::CpEapUserPasswordUi(
-    const EapQtConfigInterface::EapBearerType bearer,
-    const int iapId,
-    const EapQtPluginInfo &plugin, 
-    const EapQtPluginHandle& outerHandle) :
-        mConfigIf(NULL),
-        mPluginInfo(plugin), 
-        mOuterHandle(outerHandle), 
-        mForm(NULL),
-        mModel(NULL),
-        mItemDataHelper(NULL),
-        mGroupItem(NULL),
-        mUsername(NULL), 
-        mPasswordPrompt(NULL), 
-        mPassword(NULL), 
-        mValidatorUsername(NULL),
-        mValidatorPassword(NULL), 
-        mPasswordStored(false), 
-        mPasswordChanged(false), 
-        mPasswordEdit(NULL)
-{
-    qDebug("CpEapUserPasswordUi::CpEapUserPasswordUi");
-
-    // IAP must be valid in construction (check includes
-    // EapQtConfigInterface::IapIdUndefined)
-    if (iapId < 0) {
-        QT_THROW(std::bad_alloc());
-        // scoped pointer gets deleted automaticaly on exception
-    }
-
-    // Get EAP config interface
-    mConfigIf.reset(new EapQtConfigInterface(bearer, iapId));
-    
-    createUi();
-}
-
-/*!
- * Destructor.
- */
-CpEapUserPasswordUi::~CpEapUserPasswordUi()
-{
-    qDebug("CpEapUserPasswordUi::~CpEapUserPasswordUi");
-
-    // mValidatorUsername, mValidatorPassword
-    // mConfigIf: scoped pointer deleted automatically
-}
-
-/*!
- * Creates username-password UI and initilizes settings read via
- * EapQtConfigInterface
- */
-void CpEapUserPasswordUi::createUi()
-{
-    qDebug("CpEapUserPasswordUi::createUi");
-
-    // Read Configurations
-    bool configurationRead = mConfigIf->readConfiguration(mOuterHandle, mPluginInfo.pluginHandle(),
-        mEapConfig);
-    if (!configurationRead) {
-        qDebug("CpEapUserPasswordUi::initializeUserPasswordUi - read configuration failed.");
-    }
-
-    // Construct username-password UI
-    mForm = new HbDataForm();
-    this->setWidget(mForm);
-    mModel = new HbDataFormModel(mForm);
-
-    // Create settings group
-    mGroupItem = new HbDataFormModelItem(HbDataFormModelItem::GroupItem,
-        HbParameterLengthLimiter(
-            hbTrId("txt_occ_subhead_eap_module_settings")).arg(
-                mPluginInfo.localizationId()));
-    mModel->appendDataFormItem(mGroupItem);
-
-    // The parameter given as 0 is a HbDataForm pointer, not parent
-    mItemDataHelper = new CpItemDataHelper(0);
-    mItemDataHelper->setParent(this);
-
-    // Create UI components
-    createUsername();
-    createPassword();
-    
-    mItemDataHelper->bindToForm(mForm);
-    mForm->setModel(mModel);
-    
-    // Connect signal to add validators when items get activated (visualization created).
-    bool connected = connect(mForm, SIGNAL( itemShown(const QModelIndex&) ), this,
-        SLOT( setValidator(const QModelIndex) ));
-    Q_ASSERT(connected);
-    
-    // Expand username-password settings group
-    mForm->setExpanded(mModel->indexFromItem(mGroupItem), true);
-}
-
-/*!
- * Creates Username lineEdit
- */
-void CpEapUserPasswordUi::createUsername()
-{
-    qDebug("CpEapUserPasswordUi::createUsername()");
-    // Username
-    mUsername = new CpSettingFormItemData(HbDataFormModelItem::TextItem, hbTrId(
-        "txt_occ_setlabel_user_name"));
-    // Initialize the value from EapQtConfig
-    mUsername->setContentWidgetData("text", mEapConfig.value(EapQtConfig::Username));
-    mGroupItem->appendChild(mUsername);
-}
-
-/*!
- * Creates Password group:
- * Prompt checkBox and password lineEdit
- */
-void CpEapUserPasswordUi::createPassword()
-{
-    qDebug("CpEapUserPasswordUi::createPassword()");
-    // Password prompting
-    mPasswordPrompt = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, hbTrId(
-        "txt_occ_setlabel_password"));
-    mPasswordPrompt->setContentWidgetData("text", hbTrId("txt_occ_setlabel_password_val_prompt"));
-    mPasswordPrompt->setContentWidgetData("checkState", boolToCheckState(mEapConfig.value(
-        EapQtConfig::PasswordPrompt).toBool()));
-    // Connect signal to disable/enable password when passwordPrompt changed 
-    mForm->addConnection(mPasswordPrompt, SIGNAL(stateChanged(int)), this,
-        SLOT(passwordPromptChanged(int)));
-    mGroupItem->appendChild(mPasswordPrompt);
-
-    // Password
-    mPassword = new CpSettingFormItemData(HbDataFormModelItem::TextItem, hbTrId(
-        "txt_occ_setlabel_password"));
-    mPasswordStored = mEapConfig.value(EapQtConfig::PasswordStored).toBool();
-    // If password has already been stored into the databse
-    // fixed number of asterisks are shown in UI
-    if (mPasswordStored) {
-        mPassword->setContentWidgetData("text", passwordExistString);
-    }
-    // Set password echo mode
-    mPassword->setContentWidgetData("echoMode", HbLineEdit::Password);
-    // Dim password if passwordPrompt is selected
-    passwordPromptChanged(mPasswordPrompt->contentWidgetData("checkState") == Qt::Checked);
-    // Connect signal to get info that user has changed the password
-    mForm->addConnection(mPassword, SIGNAL(editingFinished()), this, SLOT(passwordChanged()));
-    mGroupItem->appendChild(mPassword);
-}
-
-/*!
- * Adds validators and connects focusIn event to the Password.
- * 
- * @param modelIndex Model index
- */
-void CpEapUserPasswordUi::setValidator(const QModelIndex modelIndex)
-{
-    qDebug("CpEapUserPasswordUi::itemActivated");
-
-    HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *>
-        (mForm->itemByIndex(modelIndex));
-    HbDataFormModelItem *modelItem = mModel->itemFromIndex(modelIndex);
-    
-    if (modelItem == mUsername) {
-        // When username lineEdit is activated (shown) first time, validator is added
-        mValidatorUsername.reset(mConfigIf->validatorEap(mPluginInfo.pluginHandle().type(),
-            EapQtConfig::Username));
-        HbLineEdit *usernameEdit = qobject_cast<HbLineEdit *> (viewItem->dataItemContentWidget());
-        mValidatorUsername->updateEditor(usernameEdit);
-    }
-    else if (modelItem == mPassword) {
-        // When password lineEdit is activated (shown) first time, validator is added
-        mValidatorPassword.reset(mConfigIf->validatorEap(mPluginInfo.pluginHandle().type(),
-            EapQtConfig::Password));
-        mPasswordEdit = qobject_cast<HbLineEdit *> (viewItem->dataItemContentWidget());
-        mValidatorPassword->updateEditor(mPasswordEdit);
-        // Install event filter to clear dummy password, when password is started to edit.
-        mPasswordEdit->installEventFilter(this);
-    }
-}
-
-/*!
- * This is called when user is about to exit the view.
- * Validates configuration and saves settings.
- * If configuration is not valid prompts question dialog.
- * If user chooses "OK" leaves without saving.
- * 
- */
-void CpEapUserPasswordUi::close()
-{
-    qDebug("CpEapUserPasswordUi::close");
-    
-    // Validate configuration
-    if (validate()) {
-        qDebug("CpEapUserPasswordUi::close - Validation OK");
-        
-        // Store settings
-        if (storeSettings()){
-            qDebug("CpEapUserPasswordUi::close - Settings stored, close view");
-            // Close view
-            CpBaseSettingView::close();   
-        }
-        else {
-            qDebug("CpEapUserPasswordUi::close - Store settings failed, prompt warning");
-            // Store failed. Show error note to user
-            QScopedPointer<HbMessageBox> infoBox;
-            infoBox.reset(new HbMessageBox(
-                HbMessageBox::MessageTypeWarning));
-            infoBox->setAttribute(Qt::WA_DeleteOnClose);
-            infoBox->setText(hbTrId("txt_occ_info_unable_to_save_setting"));
-            infoBox->clearActions();
-            // Connect 'OK'-button to CpBaseSettingView 'aboutToClose'-signal
-            HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
-            infoBox->addAction(okAction);
-            bool connected = connect(
-                okAction,
-                SIGNAL(triggered()),
-                this,
-                SIGNAL(aboutToClose()));
-            Q_ASSERT(connected);
-            infoBox->open();
-            infoBox.take();
-        }
-    }
-    else {
-        qDebug("CpEapUserPasswordUi::close - validation failed. Prompt question.");
-
-        // Validate failed. Request user to exit anyway
-        QScopedPointer<HbMessageBox> messageBox;
-        messageBox.reset(new HbMessageBox(
-            HbMessageBox::MessageTypeQuestion));
-        messageBox->setAttribute(Qt::WA_DeleteOnClose);
-        messageBox->setText(hbTrId("txt_occ_info_incomplete_details_return_without_sa"));
-        messageBox->clearActions();
-        // Connect 'YES'-button to CpBaseSettingView 'aboutToClose'-signal
-        HbAction *okAction = new HbAction(hbTrId("txt_common_button_yes"));
-        messageBox->addAction(okAction);
-        bool connected = connect(
-            okAction,
-            SIGNAL(triggered()),
-            this,
-            SIGNAL(aboutToClose()));
-        Q_ASSERT(connected);
-        // Clicking 'NO'-button does nothing
-        HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_no"));
-        messageBox->addAction(cancelAction);
-        messageBox->setTimeout(HbPopup::NoTimeout);
-        messageBox->open();
-        messageBox.take();
-    }
-}
-
-/*!
- * Converts check box state to boolean.
- * 
- * @param state Check box state
- * 
- * @return true if Check box is checked, false otherwise.
- */
-bool CpEapUserPasswordUi::checkStateToBool(const int state)
-{
-    return (Qt::Unchecked == state ? false : true);
-}
-
-/*!
- * Converts boolean to check box state.
- * 
- * @param state Tells is check box checked.
- * 
- * @return Qt check state
- */
-int CpEapUserPasswordUi::boolToCheckState(const bool state)
-{
-    return (false == state ? Qt::Unchecked : Qt::Checked);
-}
-
-/*!
- * Dims the password if passwordPrompt has been selected.
- * 
- * @param state Tells is password prompt checked.
- */
-void CpEapUserPasswordUi::passwordPromptChanged(int state)
-{
-    qDebug("CpEapUserPasswordUi::passwordPromptChanged - state: %d", state);
-
-    mPassword->setContentWidgetData("enabled", !checkStateToBool(state));
-}
-
-/*!
- * Saves information that password has been changed and must be stored.
- * If the new password is not given, the stored password is kept (if exists).
- */
-void CpEapUserPasswordUi::passwordChanged()
-{
-    if (mPassword->contentWidgetData("text").toString().length() > 0) {
-        // Stored password is considered as changed only if user
-        // gives new unempty password
-        qDebug("CpEapUserPasswordUi::passwordChanged");
-        mPasswordChanged = true;
-    }
-}
-
-/*!
- * When a focus moves into the password editor, possible dummy password is cleared.
- */
-bool CpEapUserPasswordUi::eventFilter(QObject *obj, QEvent *event)
-{
-    
-    if (obj == mPasswordEdit && event->type() == QEvent::FocusIn 
-        && mPasswordStored && !mPasswordChanged) {
-        qDebug("CpEapUserPasswordUi::eventFilter - mPasswordEdit and FocusIn");
-        mPassword->setContentWidgetData("text", "");
-    }
-    return false;
-}
-
-/*!
- * Validates settings configuration.
- * 
- * @return true if configuration OK, false otherwise.
- */
-bool CpEapUserPasswordUi::validate()
-{
-    qDebug("CpEapUserPasswordUi::validate");
-    bool valid = false;
-
-    if (validateUsername()
-        && validatePasswordGroup()) {
-        qDebug("CpEapUserPasswordUi::validate - OK");
-        valid = true;
-    }
-
-    return valid;
-}
-
-/*!
- * Validates username
- * 
- * @return true if OK, false otherwise
- */
-bool CpEapUserPasswordUi::validateUsername()
-{
-    qDebug("CpEapUserPasswordUi::validateUsername");
-    bool status = false;
-    // true if (given username is valid) or 
-    // (password prompt is on and username is empty)
-    if ((EapQtValidator::StatusOk == mValidatorUsername->validate(
-            mUsername->contentWidgetData("text"))) 
-        || (mPasswordPrompt->contentWidgetData("checkState") == Qt::Checked
-            && mUsername->contentWidgetData("text").toString().length() == 0)) {
-        qDebug("CpEapUserPasswordUi::validateUsername - OK");
-        status = true;
-    }
-    return status;       
-}
-
-/*!
- * Validates password and passwordPrompt.
- * 
- * @return true if OK, false otherwise.
- */
-bool CpEapUserPasswordUi::validatePasswordGroup()
-{
-    qDebug("CpEapUserPasswordUi::validatePasswordGroup");
-    bool status = false;
-    // true if password prompt is checked, stored password has not changed
-    // or changed/given passrword is valid
-    if (mPasswordPrompt->contentWidgetData("checkState") == Qt::Checked 
-        || (mPasswordStored && !mPasswordChanged) 
-        || (mPasswordStored && mPasswordChanged && EapQtValidator::StatusOk
-            == mValidatorPassword->validate(mPassword->contentWidgetData("text").toString()))
-        || (!mPasswordStored && EapQtValidator::StatusOk
-            == mValidatorPassword->validate(mPassword->contentWidgetData("text").toString()))) {
-        qDebug("CpEapUserPasswordUi::validatePasswordGroup - OK");
-        status = true;
-    }
-    return status;
-}
-
-/*!
- * Stores settings given via username-password configuration UI
- * 
- * @return false if saving failed, true otherwisev
- */
-bool CpEapUserPasswordUi::storeSettings()
-{
-    qDebug("CpEapUserPasswordUi::storeSettings");
-
-    EapQtConfig eapConfig;
-
-    eapConfig.setValue(EapQtConfig::OuterType, qVariantFromValue(mOuterHandle));
-    eapConfig.setValue(EapQtConfig::Username, mUsername->contentWidgetData("text"));
-    eapConfig.setValue(EapQtConfig::PasswordPrompt, checkStateToBool(
-        mPasswordPrompt->contentWidgetData("checkState").toInt()));
-    if (mPasswordPrompt->contentWidgetData("checkState") == Qt::Checked) {
-        if(mPasswordStored) {
-            // Stored password is cleared if prompting has been enabled
-            eapConfig.setValue(EapQtConfig::PasswordClear, true);
-            eapConfig.setValue(EapQtConfig::Password, "");
-        }
-        // else do nothing (password is not saved)
-    }
-    else {
-        // Password prompt is disabled
-        if (!mPasswordChanged && mPasswordStored) {
-            // Stored password has not been changed
-            eapConfig.setValue(EapQtConfig::PasswordStored, true);
-        }
-        else if (mPasswordChanged || !mPasswordStored) {
-            // Store the new password
-            eapConfig.setValue(EapQtConfig::Password, mPassword->contentWidgetData("text").toString());
-        }
-    }
-    
-    // Save configuration
-    if (!mConfigIf->saveConfiguration(mPluginInfo.pluginHandle(), eapConfig)) {
-        qDebug("CpEapUserPasswordUi::storeSettings - configuration saving failed.");
-        return false;
-    }
-    return true;
-}