diff -r 3255e7d5bd67 -r 989397f9511c cpsecplugins/cpadvancedsecplugin/src/advsecsettingsmainview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingsmainview.cpp Thu Oct 14 13:56:11 2010 +0300 @@ -0,0 +1,236 @@ +/* +* 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: Advanced security settings main view +* +*/ + +#include "advsecsettingsmainview.h" +#include "advsecsettingscertificatelistview.h" +#include "advsecsettingssecuritymodulemodel.h" +#include "advsecsettingssecuritymoduleview.h" +#include +#include +#include +#include +#include + +const int KAuthorityCertsRow = 0; +const int KTrustedSiteCertsRow = 1; +const int KPersonalCertsRow = 2; +const int KDeviceCertsRow = 3; + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView::AdvSecSettingsMainView() +// --------------------------------------------------------------------------- +// +AdvSecSettingsMainView::AdvSecSettingsMainView( + QGraphicsItem *parent) : AdvSecSettingsViewBase(0, parent), + mSecModModel(0), mCertListView(0), mSecModView(0), + mSecModGroupBox(0), mSecModList(0), mContextMenu(0) +{ + Q_ASSERT(mSecModModel == 0); + mSecModModel = new AdvSecSettingsSecurityModuleModel(this); + connect(mSecModModel, SIGNAL(initializeCompleted()), this, SLOT(securityModuleInitialized())); + connect(mSecModModel, SIGNAL(errorOccurred(int)), this, SLOT(displayError(int))); + mSecModModel->initialize(); + + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); + HbGroupBox *groupBox = 0; + + // View title + groupBox = new HbGroupBox; + groupBox->setHeading(hbTrId("txt_certificate_manager_setlabel_advanced_security")); + layout->addItem(groupBox); + + // Certificates group + groupBox = new HbGroupBox; + groupBox->setHeading(hbTrId("txt_certificate_manager_setlabel_certificates")); + groupBox->setContentWidget(createCertificatesTopLevel()); + groupBox->setCollapsed(true); + layout->addItem(groupBox); + + // Protected content group + groupBox = new HbGroupBox; + // TODO: localized UI string needed + groupBox->setHeading("Protected Content"); + groupBox->setContentWidget(createProtectedContentTopLevel()); + groupBox->setCollapsed(true); + layout->addItem(groupBox); + + // Security module group + Q_ASSERT(mSecModGroupBox == 0); + mSecModGroupBox = new HbGroupBox; + // TODO: localized UI string needed + mSecModGroupBox->setHeading("Security Module"); + mSecModGroupBox->setVisible(false); // set in securityModuleInitialized() + layout->addItem(mSecModGroupBox); + + setLayout(layout); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView::~AdvSecSettingsMainView() +// --------------------------------------------------------------------------- +// +AdvSecSettingsMainView::~AdvSecSettingsMainView() + { + } + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView::displayCertListView() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsMainView::displayCertListView(const QModelIndex& modelIndex) +{ + if (!mCertListView) { + mCertListView = new AdvSecSettingsCertificateListView(this); + } + + AdvSecSettingsCertificate::CertificateType type = + AdvSecSettingsCertificate::AuthorityCertificate; + switch (modelIndex.row()) { + case KAuthorityCertsRow: + type = AdvSecSettingsCertificate::AuthorityCertificate; + break; + case KTrustedSiteCertsRow: + type = AdvSecSettingsCertificate::TrustedSiteCertificate; + break; + case KPersonalCertsRow: + type = AdvSecSettingsCertificate::PersonalCertificate; + break; + case KDeviceCertsRow: + type = AdvSecSettingsCertificate::DeviceCertificate; + break; + default: + break; + } + + mCertListView->displayCertificates(type); + displayView(mCertListView); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView::displaySecurityModuleView() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsMainView::displaySecurityModuleView(const QModelIndex& modelIndex) +{ + if (!mSecModView) { + mSecModView = new AdvSecSettingsSecurityModuleView(*mSecModModel, this); + } + + int row = modelIndex.row(); + mSecModView->setSecurityModule(mSecModList->item(row)->text(), row); + displayView(mSecModView); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView::securityModuleInitialized() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsMainView::securityModuleInitialized() +{ + if (isSecurityModulesAvailable()) { + mSecModGroupBox->setContentWidget(createSecurityModuleTopLevel()); + mSecModGroupBox->setCollapsed(true); + mSecModGroupBox->setVisible(true); + } +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView:: +// --------------------------------------------------------------------------- +// +HbWidget *AdvSecSettingsMainView::createCertificatesTopLevel() +{ + HbListWidget *list = new HbListWidget; + HbListWidgetItem *item = 0; + + // KAuthorityCertsRow + item = new HbListWidgetItem; + item->setText(hbTrId("txt_certificate_manager_list_authority_certificate")); + list->addItem(item); + + // KTrustedSiteCertsRow + item = new HbListWidgetItem; + item->setText(hbTrId("txt_certificate_manager_list_trusted_site_certific")); + list->addItem(item); + + // KPersonalCertsRow + item = new HbListWidgetItem; + item->setText(hbTrId("txt_certificate_manager_list_personal_certificates")); + list->addItem(item); + + // KDeviceCertsRow + item = new HbListWidgetItem; + item->setText(hbTrId("txt_certificate_manager_list_device_certificates")); + list->addItem(item); + + connect(list, SIGNAL(released(QModelIndex)), this, SLOT(displayCertListView(QModelIndex))); + + return list; +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView:: +// --------------------------------------------------------------------------- +// +HbWidget *AdvSecSettingsMainView::createProtectedContentTopLevel() +{ + HbListWidget* list = new HbListWidget; + + // TODO: implement + + return list; +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView:: +// --------------------------------------------------------------------------- +// +HbWidget *AdvSecSettingsMainView::createSecurityModuleTopLevel() +{ + Q_ASSERT(mSecModList == 0); + mSecModList = new HbListWidget; + + QMap labelAndLocation = mSecModModel->moduleLabelsAndLocations(); + QMapIterator iter(labelAndLocation); + while (iter.hasNext()) { + iter.next(); + HbListWidgetItem *item = new HbListWidgetItem; + item->setText(iter.key()); + item->setSecondaryText(iter.value()); + mSecModList->addItem(item); + } + + connect(mSecModList, SIGNAL(activated(QModelIndex)), + this, SLOT(displaySecurityModuleView(QModelIndex))); + connect(mSecModList, SIGNAL(longPressed(HbAbstractViewItem*, QPointF)), + this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF))); // TODO: implement + + return mSecModList; +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsMainView::isSecurityModulesAvailable() +// --------------------------------------------------------------------------- +// +bool AdvSecSettingsMainView::isSecurityModulesAvailable() +{ + return (mSecModModel && mSecModModel->moduleCount()); +} +