cpsecplugins/cpadvancedsecplugin/src/advsecsettingsmainview.cpp
author hgs
Thu, 14 Oct 2010 13:56:11 +0300
changeset 63 989397f9511c
permissions -rw-r--r--
201039_03

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