--- /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 <QGraphicsLinearLayout>
+#include <HbGroupBox>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbMenu>
+#include <HbAction>
+
+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<int,bool> 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<int,QString> 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;
+}
+