--- /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 <QGraphicsLinearLayout>
+#include <HbGroupBox>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <QDebug>
+
+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<QString, QString> labelAndLocation = mSecModModel->moduleLabelsAndLocations();
+ QMapIterator<QString, QString> 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());
+}
+