cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatedetailview.cpp
changeset 63 989397f9511c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatedetailview.cpp	Thu Oct 14 13:56:11 2010 +0300
@@ -0,0 +1,221 @@
+/*
+* 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 detail view in advanced security settings
+*
+*/
+
+#include "advsecsettingscertificatedetailview.h"
+#include "advsecsettingscertificatemodel.h"
+#include "advsecsettingscertificate.h"
+#include "advsecsettingscerttrustsettingsview.h"
+#include <QGraphicsLinearLayout>
+#include <QTextStream>
+#include <HbGroupBox>
+#include <HbScrollArea>
+#include <HbLabel>
+#include <HbMenu>
+#include <HbAction>
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::AdvSecSettingsCertificateDetailView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateDetailView::AdvSecSettingsCertificateDetailView(
+        AdvSecSettingsCertificateModel &model, QGraphicsItem *parent) :
+        AdvSecSettingsViewBase(0, parent), mModel(model), mCertificate(0),
+        mDetails(), mViewLabel(0), mScrollArea(0), mDetailsText(0)
+{
+    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    mViewLabel = new HbGroupBox;
+    layout->addItem(mViewLabel);
+
+    mScrollArea = new HbScrollArea;
+    mDetailsText = new HbLabel;
+    mDetailsText->setTextWrapping(Hb::TextWordWrap);
+    mScrollArea->setContentWidget(mDetailsText);
+    mScrollArea->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOn);
+    layout->addItem(mScrollArea);
+
+    setLayout(layout);
+
+    connect(&mModel, SIGNAL(getCertificateDetailsCompleted()),
+        this, SLOT(certificateDetailsCompleted()));
+    connect(&mModel, SIGNAL(deleteCertificateCompleted()),
+        this, SLOT(displayPreviousView()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::~AdvSecSettingsCertificateDetailView()
+// ---------------------------------------------------------------------------
+//
+AdvSecSettingsCertificateDetailView::~AdvSecSettingsCertificateDetailView()
+{
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::setCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::setCertificate(
+    const AdvSecSettingsCertificate &cert)
+{
+    mCertificate = &cert;
+
+    menu()->clearActions();
+    if (cert.certType() == AdvSecSettingsCertificate::AuthorityCertificate) {
+        HbAction *trustSettingsAction = 0;
+        trustSettingsAction = new HbAction(hbTrId("txt_certificate_manager_menu_trust_settings"));
+        connect(trustSettingsAction, SIGNAL(triggered()), this, SLOT(showTrustSettings()));
+        menu()->addAction(trustSettingsAction);
+    }
+    if (mModel.isDeletable(cert)) {
+        HbAction *deleteAction = new HbAction(hbTrId("txt_common_menu_delete"));
+        connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteCertificate()));
+        menu()->addAction(deleteAction);
+    }
+
+    mDetails.clear();
+    mModel.getCertificateDetails(cert, mDetails);
+
+    mDetailsText->clear();
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::certificateDetailsCompleted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::certificateDetailsCompleted()
+{
+    QString label;
+    QString details;
+    QTextStream stream(&details);
+
+    bool isFirst(true);
+    QMapIterator<int, QString> iter(mDetails);
+    while (iter.hasNext()) {
+        if (!isFirst) {
+            stream << endl;
+        }
+        isFirst = false;
+
+        int key = iter.next().key();
+        switch (key) {
+        case AdvSecSettingsCertificateModel::Label:
+            label = iter.value();
+            break;
+        case AdvSecSettingsCertificateModel::Issuer:
+            stream << hbTrId("txt_certificate_list_issuer") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::Subject:
+            stream << hbTrId("txt_certificate_list_subject") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::ValidFrom:
+            stream << hbTrId("txt_certificate_list_valid_from") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::ValidTo:
+            stream << hbTrId("txt_certificate_list_valid_until") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::Location:
+            // TODO: localized UI string needed
+            stream << tr("Location:") << endl << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::Format:
+            stream << hbTrId("txt_certificate_list_certificate_format") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::KeyUsage:
+            // TODO: localized UI string needed
+            stream << tr("Key usage:") << endl << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::KeyLocation:
+            // TODO: localized UI string needed
+            stream << tr("Key location:") << endl << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::Algorithm:
+            stream << hbTrId("txt_certificate_list_algorithm") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::SerialNumber:
+            stream << hbTrId("txt_certificate_list_serial_number") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::FingerprintSHA1:
+            stream << hbTrId("txt_certificate_list_fingerprint_sha1") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::FingerprintMD5:
+            stream << hbTrId("txt_certificate_list_fingerprint_md5") << endl
+                << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::PublicKey:
+            // TODO: localized UI string needed
+            stream << tr("Public key:") << endl << iter.value() << endl;
+            break;
+        case AdvSecSettingsCertificateModel::TrustedSites:
+            // TODO: localized UI string needed
+            stream << tr("Trusted sites:") << endl << iter.value() << endl;
+            break;
+        default:
+            break;
+        }
+    }
+
+    mViewLabel->setHeading(label);
+    mDetailsText->setPlainText(details);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::showTrustSettings()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::showTrustSettings()
+{
+    Q_ASSERT(mCertificate != 0);
+    AdvSecSettingsCertTrustSettingsView *trustSettingsView =
+        new AdvSecSettingsCertTrustSettingsView(mModel);
+    trustSettingsView->setDeleteOnClose(true);
+    trustSettingsView->setCertificate(*mCertificate);
+    displayView(trustSettingsView);
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::deleteCertificate()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::deleteCertificate()
+{
+    Q_ASSERT(mCertificate != 0);
+    // TODO: localized UI string needed
+    QString confirmText(tr("Delete %1?").arg(mCertificate->label()));
+    displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted()));
+}
+
+// ---------------------------------------------------------------------------
+// AdvSecSettingsCertificateDetailView::deleteConfirmationAccepted()
+// ---------------------------------------------------------------------------
+//
+void AdvSecSettingsCertificateDetailView::deleteConfirmationAccepted()
+{
+    Q_ASSERT(mCertificate != 0);
+    mModel.deleteCertificate(*mCertificate);
+}
+