diff -r 3255e7d5bd67 -r 989397f9511c cpsecplugins/cpadvancedsecplugin/src/advsecsettingscerttrustsettingsview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscerttrustsettingsview.cpp Thu Oct 14 13:56:11 2010 +0300 @@ -0,0 +1,212 @@ +/* +* 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: Certificate trust settings view in advanced security settings +* +*/ + +#include "advsecsettingscerttrustsettingsview.h" +#include "advsecsettingstrustedcertusageuids.h" +#include "advsecsettingscertificatemodel.h" +#include "advsecsettingscertificate.h" +#include +#include +#include +#include +#include +#include + +const QString KText("text"); +const QString KAdditionalText("additionalText"); +const QString KHexUsageIdFormat("0x%1"); +const int KHexFieldWidth = 8; +const int KHexBase = 16; + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::AdvSecSettingsCertTrustSettingsView() +// --------------------------------------------------------------------------- +// +AdvSecSettingsCertTrustSettingsView::AdvSecSettingsCertTrustSettingsView( + AdvSecSettingsCertificateModel &model, QGraphicsItem *parent) : + AdvSecSettingsViewBase(0, parent), mModel(model), mCertificate(0), + mIsCertDeletable(false), mViewLabel(0), mDataForm(0), mDataFormModel(0) +{ + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); + + mViewLabel = new HbGroupBox; + layout->addItem(mViewLabel); + + HbScrollArea *scrollArea = new HbScrollArea; + mDataForm = new HbDataForm; + scrollArea->setContentWidget(mDataForm); + layout->addItem(scrollArea); + + setLayout(layout); + + connect(&mModel, SIGNAL(getTrustSettingsCompleted()), this, SLOT(refreshDisplay())); + connect(&mModel, SIGNAL(deleteCertificateCompleted()), this, SLOT(close())); + connect(this, SIGNAL(aboutToClose()), this, SLOT(saveTrustSettings())); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::~AdvSecSettingsCertTrustSettingsView() +// --------------------------------------------------------------------------- +// +AdvSecSettingsCertTrustSettingsView::~AdvSecSettingsCertTrustSettingsView() +{ +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::setCertificate() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsCertTrustSettingsView::setCertificate(const AdvSecSettingsCertificate &cert) +{ + mCertificate = &cert; + mIsCertDeletable = mModel.isDeletable(cert); + + menu()->clearActions(); + if (mIsCertDeletable) { + HbAction *deleteAction = new HbAction(hbTrId("txt_common_menu_delete")); + connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteCertificate())); + menu()->addAction(deleteAction); + } + + mUsageIdAndTrust.clear(); + mModel.getTrustSettings(cert, mUsageIdAndTrust); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::refreshDisplay() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsCertTrustSettingsView::refreshDisplay() +{ + if (mDataFormModel) { + mDataForm->setModel(0); + delete mDataFormModel; + mDataFormModel = 0; + } + mDataFormModel = new HbDataFormModel(this); + + QMapIterator iter(mUsageIdAndTrust); + while (iter.hasNext()) { + iter.next(); + HbDataFormModelItem *item = mDataFormModel->appendDataFormItem( + HbDataFormModelItem::ToggleValueItem, usageName(iter.key())); + if (iter.value()) { + // TODO: localized UI string needed + item->setContentWidgetData(KText, tr("On")); + item->setContentWidgetData(KAdditionalText, tr("Off")); + } else { + // TODO: localized UI string needed + item->setContentWidgetData(KText, tr("Off")); + item->setContentWidgetData(KAdditionalText, tr("On")); + } + if (!mIsCertDeletable) { + item->setEnabled(false); + } + } + connect(mDataFormModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), + this, SLOT(toggleChange(QModelIndex))); + + mViewLabel->setHeading(mCertificate->label()); + mDataForm->setModel(mDataFormModel); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::toggleChange() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsCertTrustSettingsView::toggleChange(const QModelIndex &itemIndex) +{ + if (mIsCertDeletable) { + HbDataFormModelItem *item = mDataFormModel->itemFromIndex(itemIndex); + + int usageId = 0; + QString label = item->label(); + QMapIterator iter(mUsageIdAndName); + while (iter.hasNext() && !usageId) { + iter.next(); + if (label == iter.value()) { + usageId = iter.key(); + } + } + + if (usageId) { + QVariant data = item->contentWidgetData(KText); + if (data.toString() == tr("On")) { // TODO: use localized UI string + mUsageIdAndTrust[usageId] = true; + } else { + mUsageIdAndTrust[usageId] = false; + } + } + } +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::saveTrustSettings() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsCertTrustSettingsView::saveTrustSettings() +{ + if (mIsCertDeletable) { + Q_ASSERT(mCertificate != 0); + mModel.setTrustSettings(*mCertificate, mUsageIdAndTrust); + } +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::deleteCertificate() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsCertTrustSettingsView::deleteCertificate() +{ + Q_ASSERT(mCertificate != 0); + // TODO: localized UI string needed + QString confirmText(tr("Delete %1?").arg(mCertificate->label())); + displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted())); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::deleteConfirmationAccepted() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsCertTrustSettingsView::deleteConfirmationAccepted() +{ + Q_ASSERT(mCertificate != 0); + mModel.deleteCertificate(*mCertificate); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsCertTrustSettingsView::usageName() +// --------------------------------------------------------------------------- +// +QString AdvSecSettingsCertTrustSettingsView::usageName(int usageId) +{ + if (mUsageIdAndName.isEmpty()) { + mModel.getCertificateUsageNames(mUsageIdAndName); + } + + QString name; + if (mUsageIdAndName.contains(usageId)) { + name = mUsageIdAndName.value(usageId); + } else { + name = QString(KHexUsageIdFormat).arg(usageId, KHexFieldWidth, KHexBase); + } + return name; +} +