diff -r 3255e7d5bd67 -r 989397f9511c cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatedetailview.cpp --- /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 +#include +#include +#include +#include +#include +#include + + +// ======== 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 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); +} +