--- /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);
+}
+