diff -r bad0cc58d154 -r c74b3d9f6b9e securitysettings/cpeapuiplugins/cpeapsimakaui/src/cpeapsimakaui.cpp --- a/securitysettings/cpeapuiplugins/cpeapsimakaui/src/cpeapsimakaui.cpp Tue Aug 31 15:16:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,417 +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 EAP-SIM and EAP-AKA method configuration - * - */ - -/* - * %version: 18 % - */ - -// System includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// User includes -#include "cpeapsimakaui.h" - -/*! - * \class CpEapSimAkaUi - * \brief Implementes EAP-SIM and EAP-AKA method configuration ui. - */ - -// External function prototypes - -// Local constants - -// ======== 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. - */ -CpEapSimAkaUi::CpEapSimAkaUi( - 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), - mUsernameAutomatic(NULL), - mUsername(NULL), - mRealmAutomatic(NULL), - mRealm(NULL), - mValidatorRealm(NULL), - mValidatorUsername(NULL) -{ - qDebug("CpEapSimAkaUi::CpEapSimAkaUi"); - - // 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. - */ -CpEapSimAkaUi::~CpEapSimAkaUi() -{ - qDebug("CpEapSimAkaUi::~CpEapSimAkaUi"); - - // mValidatorRealm, mValidatorUsername - // mConfigIf: scoped pointer deleted automatically -} - -/*! - * Creates EAP-SIM/AKA UI and initilizes settings read via - * EapQtConfigInterface - */ -void CpEapSimAkaUi::createUi() -{ - qDebug("CpEapSimAkaUi::createUi"); - - // Read EAP Configurations - bool configurationRead = mConfigIf->readConfiguration(mOuterHandle, mPluginInfo.pluginHandle(), - mEapConfig); - if (!configurationRead) { - qDebug("CpEapSimAkaUi::initializeSimAkaUi - read configuration failed."); - } - - // Construct EAP-SIM/AKA settings UI - mForm = new HbDataForm(); - this->setWidget(mForm); - mModel = new HbDataFormModel(mForm); - - 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(); - createRealm(); - - 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 EAP-SIM/AKA settings group - mForm->setExpanded(mModel->indexFromItem(mGroupItem), true); -} - -/*! - * Creates Username group: - * Generate automatically checkBox and username lineEdit - */ -void CpEapSimAkaUi::createUsername() -{ - qDebug("CpEapSimAkaUi::createUsername()"); - // UsernameAutomatic - mUsernameAutomatic = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, hbTrId( - "txt_occ_setlabel_user_name")); - mUsernameAutomatic->setContentWidgetData("text", hbTrId( - "txt_occ_setlabel_user_name_val_generate_automatica")); - // Initialize the value from EapQtConfig - // Generate username automatically is selected by default - mUsernameAutomatic->setContentWidgetData("checkState", boolToCheckState(mEapConfig.value( - EapQtConfig::UsernameAutomatic).toBool())); - // Connect signal to disable/enable username when usernameAutomatic changed - mForm->addConnection(mUsernameAutomatic, SIGNAL(stateChanged(int)), this, - SLOT(usernameAutomaticChanged(int))); - mGroupItem->appendChild(mUsernameAutomatic); - - //Username - mUsername = new CpSettingFormItemData(HbDataFormModelItem::TextItem, hbTrId( - "txt_occ_setlabel_user_name")); - mUsername->setContentWidgetData("text", mEapConfig.value(EapQtConfig::Username)); - // Dim username if usernameAutomatic selected - usernameAutomaticChanged(mUsernameAutomatic->contentWidgetData("checkState") == Qt::Checked); - mGroupItem->appendChild(mUsername); -} - -/*! - * Creates Realm group: - * Generate automatically checkBox and realm lineEdit - */ -void CpEapSimAkaUi::createRealm() -{ - qDebug("CpEapSimAkaUi::createRealm()"); - // RealmAutomatic - mRealmAutomatic = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, hbTrId( - "txt_occ_setlabel_realm")); - mRealmAutomatic->setContentWidgetData("text", hbTrId( - "txt_occ_setlabel_realm_val_generate_automatically")); - // Initialize the value from EapQtConfig - // Generate realm automatically is selected by default - mRealmAutomatic->setContentWidgetData("checkState", boolToCheckState(mEapConfig.value( - EapQtConfig::RealmAutomatic).toBool())); - // connect signal to disable/enable realm when realmAutomatic changed - mForm->addConnection(mRealmAutomatic, SIGNAL(stateChanged(int)), this, - SLOT(realmAutomaticChanged(int))); - mGroupItem->appendChild(mRealmAutomatic); - - //Realm - mRealm = new CpSettingFormItemData(HbDataFormModelItem::TextItem, hbTrId( - "txt_occ_setlabel_realm")); - mRealm->setContentWidgetData("text", mEapConfig.value(EapQtConfig::Realm)); - // Dim realm if realmAutomatic selected - realmAutomaticChanged(mRealmAutomatic->contentWidgetData("checkState") == Qt::Checked); - mGroupItem->appendChild(mRealm); -} - -/*! - * Adds validators. - * - * @param modelIndex Model index - */ -void CpEapSimAkaUi::setValidator(const QModelIndex modelIndex) -{ - qDebug("CpEapUserPasswordUi::itemActivated"); - - HbDataFormViewItem *viewItem = qobject_cast - (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 *edit = qobject_cast (viewItem->dataItemContentWidget()); - mValidatorUsername->updateEditor(edit); - } - else if (modelItem == mRealm) { - // When realm lineEdit is activated (shown) first time, validator is added - mValidatorRealm.reset(mConfigIf->validatorEap(mPluginInfo.pluginHandle().type(), - EapQtConfig::Realm)); - HbLineEdit *edit = qobject_cast (viewItem->dataItemContentWidget()); - mValidatorRealm->updateEditor(edit); - } -} - -/*! - * 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 CpEapSimAkaUi::close() -{ - qDebug("CpEapSimAkaUi::close"); - - // Validate configuration - if (validate()) { - qDebug("CpEapSimAkaUi::close - Validation OK"); - - // Store settings - if (storeSettings()){ - qDebug("CpEapSimAkaUi::close - Settings stored, close view"); - // Close view - CpBaseSettingView::close(); - } - else { - qDebug("CpEapSimAkaUi::close - Store settings failed, prompt warning"); - // Store failed. Show error note to user - QScopedPointer 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("CpEapSimAkaUi::close - validation failed. Prompt question."); - QScopedPointer 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(); - } -} - -/*! - * Dims the realm if generate realm automatically has been selected. - * - * @param state Tells is generate automatically checked. - */ -void CpEapSimAkaUi::realmAutomaticChanged(int state) -{ - qDebug("CpEapSimAkaUi::realmAutomaticChanged"); - - mRealm->setContentWidgetData("enabled", !checkStateToBool(state)); -} - -/*! - * Dims the username if generate username automatically has been selected. - * - * @param state Tells is generate automatically checked. - */ -void CpEapSimAkaUi::usernameAutomaticChanged(int state) -{ - qDebug("CpEapSimAkaUi::usernameAutomaticChanged"); - - mUsername->setContentWidgetData("enabled", !checkStateToBool(state)); -} - -/*! - * Converts check box state to boolean. - * - * @param state Check box state - * - * @return true if Check box is checked, false otherwise. - */ -bool CpEapSimAkaUi::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 CpEapSimAkaUi::boolToCheckState(const bool state) -{ - return (false == state ? Qt::Unchecked : Qt::Checked); -} - -/*! - * Validates settings configuration. - * - * @return true if configuration OK, false otherwise. - */ -bool CpEapSimAkaUi::validate() -{ - bool valid = false; - - if (validateGroup(mUsername, mUsernameAutomatic, mValidatorUsername.data()) - && validateGroup(mRealm, mRealmAutomatic, mValidatorRealm.data())) { - valid = true; - } - - return valid; -} - -/*! - * Validates checkBox and lineEdit group. - * - * @return true if OK, false otherwise. - */ -bool CpEapSimAkaUi::validateGroup(CpSettingFormItemData *edit, CpSettingFormItemData *checkBox, - EapQtValidator *validator) -{ - bool status = false; - // true if generate automatically is checked or given value is valid - if (checkBox->contentWidgetData("checkState") == Qt::Checked - || EapQtValidator::StatusOk == validator->validate( - edit->contentWidgetData("text"))) { - status = true; - } - return status; -} - -/*! - * Stores settings given via SIM-AKA configuration UI - * - * @return false if saving failed, true otherwise - */ -bool CpEapSimAkaUi::storeSettings() -{ - qDebug("CpEapSimAkaUi::storeSettings"); - - EapQtConfig eapConfig; - - eapConfig.setValue(EapQtConfig::OuterType, qVariantFromValue(mOuterHandle)); - eapConfig.setValue(EapQtConfig::UsernameAutomatic, checkStateToBool( - mUsernameAutomatic->contentWidgetData("checkState").toInt())); - eapConfig.setValue(EapQtConfig::Username, mUsername->contentWidgetData("text")); - eapConfig.setValue(EapQtConfig::RealmAutomatic, checkStateToBool( - mRealmAutomatic->contentWidgetData("checkState").toInt())); - eapConfig.setValue(EapQtConfig::Realm, mRealm->contentWidgetData("text")); - - // Save configuration - if (!mConfigIf->saveConfiguration(mPluginInfo.pluginHandle(), eapConfig)) { - qDebug("CpEapSimAkaUi::storeSettings - configuration saving failed."); - return false; - } - return true; -}