cpsecplugins/cpadvancedsecplugin/src/advsecsettingsmainview.cpp
changeset 63 989397f9511c
--- /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());
+}
+