cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatedetailview.cpp
author hgs
Thu, 14 Oct 2010 13:56:11 +0300
changeset 63 989397f9511c
permissions -rw-r--r--
201039_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63
989397f9511c 201039_03
hgs
parents:
diff changeset
     1
/*
989397f9511c 201039_03
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
989397f9511c 201039_03
hgs
parents:
diff changeset
     3
* All rights reserved.
989397f9511c 201039_03
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
989397f9511c 201039_03
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0""
989397f9511c 201039_03
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
989397f9511c 201039_03
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
989397f9511c 201039_03
hgs
parents:
diff changeset
     8
*
989397f9511c 201039_03
hgs
parents:
diff changeset
     9
* Initial Contributors:
989397f9511c 201039_03
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
989397f9511c 201039_03
hgs
parents:
diff changeset
    11
*
989397f9511c 201039_03
hgs
parents:
diff changeset
    12
* Contributors:
989397f9511c 201039_03
hgs
parents:
diff changeset
    13
*
989397f9511c 201039_03
hgs
parents:
diff changeset
    14
* Description:  Certificate detail view in advanced security settings
989397f9511c 201039_03
hgs
parents:
diff changeset
    15
*
989397f9511c 201039_03
hgs
parents:
diff changeset
    16
*/
989397f9511c 201039_03
hgs
parents:
diff changeset
    17
989397f9511c 201039_03
hgs
parents:
diff changeset
    18
#include "advsecsettingscertificatedetailview.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    19
#include "advsecsettingscertificatemodel.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    20
#include "advsecsettingscertificate.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    21
#include "advsecsettingscerttrustsettingsview.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    22
#include <QGraphicsLinearLayout>
989397f9511c 201039_03
hgs
parents:
diff changeset
    23
#include <QTextStream>
989397f9511c 201039_03
hgs
parents:
diff changeset
    24
#include <HbGroupBox>
989397f9511c 201039_03
hgs
parents:
diff changeset
    25
#include <HbScrollArea>
989397f9511c 201039_03
hgs
parents:
diff changeset
    26
#include <HbLabel>
989397f9511c 201039_03
hgs
parents:
diff changeset
    27
#include <HbMenu>
989397f9511c 201039_03
hgs
parents:
diff changeset
    28
#include <HbAction>
989397f9511c 201039_03
hgs
parents:
diff changeset
    29
989397f9511c 201039_03
hgs
parents:
diff changeset
    30
989397f9511c 201039_03
hgs
parents:
diff changeset
    31
// ======== MEMBER FUNCTIONS ========
989397f9511c 201039_03
hgs
parents:
diff changeset
    32
989397f9511c 201039_03
hgs
parents:
diff changeset
    33
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    34
// AdvSecSettingsCertificateDetailView::AdvSecSettingsCertificateDetailView()
989397f9511c 201039_03
hgs
parents:
diff changeset
    35
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    36
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    37
AdvSecSettingsCertificateDetailView::AdvSecSettingsCertificateDetailView(
989397f9511c 201039_03
hgs
parents:
diff changeset
    38
        AdvSecSettingsCertificateModel &model, QGraphicsItem *parent) :
989397f9511c 201039_03
hgs
parents:
diff changeset
    39
        AdvSecSettingsViewBase(0, parent), mModel(model), mCertificate(0),
989397f9511c 201039_03
hgs
parents:
diff changeset
    40
        mDetails(), mViewLabel(0), mScrollArea(0), mDetailsText(0)
989397f9511c 201039_03
hgs
parents:
diff changeset
    41
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    42
    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
989397f9511c 201039_03
hgs
parents:
diff changeset
    43
989397f9511c 201039_03
hgs
parents:
diff changeset
    44
    mViewLabel = new HbGroupBox;
989397f9511c 201039_03
hgs
parents:
diff changeset
    45
    layout->addItem(mViewLabel);
989397f9511c 201039_03
hgs
parents:
diff changeset
    46
989397f9511c 201039_03
hgs
parents:
diff changeset
    47
    mScrollArea = new HbScrollArea;
989397f9511c 201039_03
hgs
parents:
diff changeset
    48
    mDetailsText = new HbLabel;
989397f9511c 201039_03
hgs
parents:
diff changeset
    49
    mDetailsText->setTextWrapping(Hb::TextWordWrap);
989397f9511c 201039_03
hgs
parents:
diff changeset
    50
    mScrollArea->setContentWidget(mDetailsText);
989397f9511c 201039_03
hgs
parents:
diff changeset
    51
    mScrollArea->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOn);
989397f9511c 201039_03
hgs
parents:
diff changeset
    52
    layout->addItem(mScrollArea);
989397f9511c 201039_03
hgs
parents:
diff changeset
    53
989397f9511c 201039_03
hgs
parents:
diff changeset
    54
    setLayout(layout);
989397f9511c 201039_03
hgs
parents:
diff changeset
    55
989397f9511c 201039_03
hgs
parents:
diff changeset
    56
    connect(&mModel, SIGNAL(getCertificateDetailsCompleted()),
989397f9511c 201039_03
hgs
parents:
diff changeset
    57
        this, SLOT(certificateDetailsCompleted()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    58
    connect(&mModel, SIGNAL(deleteCertificateCompleted()),
989397f9511c 201039_03
hgs
parents:
diff changeset
    59
        this, SLOT(displayPreviousView()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    60
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    61
989397f9511c 201039_03
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    63
// AdvSecSettingsCertificateDetailView::~AdvSecSettingsCertificateDetailView()
989397f9511c 201039_03
hgs
parents:
diff changeset
    64
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    65
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    66
AdvSecSettingsCertificateDetailView::~AdvSecSettingsCertificateDetailView()
989397f9511c 201039_03
hgs
parents:
diff changeset
    67
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    68
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    69
989397f9511c 201039_03
hgs
parents:
diff changeset
    70
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    71
// AdvSecSettingsCertificateDetailView::setCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
    72
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    73
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    74
void AdvSecSettingsCertificateDetailView::setCertificate(
989397f9511c 201039_03
hgs
parents:
diff changeset
    75
    const AdvSecSettingsCertificate &cert)
989397f9511c 201039_03
hgs
parents:
diff changeset
    76
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    77
    mCertificate = &cert;
989397f9511c 201039_03
hgs
parents:
diff changeset
    78
989397f9511c 201039_03
hgs
parents:
diff changeset
    79
    menu()->clearActions();
989397f9511c 201039_03
hgs
parents:
diff changeset
    80
    if (cert.certType() == AdvSecSettingsCertificate::AuthorityCertificate) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    81
        HbAction *trustSettingsAction = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
    82
        trustSettingsAction = new HbAction(hbTrId("txt_certificate_manager_menu_trust_settings"));
989397f9511c 201039_03
hgs
parents:
diff changeset
    83
        connect(trustSettingsAction, SIGNAL(triggered()), this, SLOT(showTrustSettings()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    84
        menu()->addAction(trustSettingsAction);
989397f9511c 201039_03
hgs
parents:
diff changeset
    85
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
    86
    if (mModel.isDeletable(cert)) {
989397f9511c 201039_03
hgs
parents:
diff changeset
    87
        HbAction *deleteAction = new HbAction(hbTrId("txt_common_menu_delete"));
989397f9511c 201039_03
hgs
parents:
diff changeset
    88
        connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteCertificate()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    89
        menu()->addAction(deleteAction);
989397f9511c 201039_03
hgs
parents:
diff changeset
    90
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
    91
989397f9511c 201039_03
hgs
parents:
diff changeset
    92
    mDetails.clear();
989397f9511c 201039_03
hgs
parents:
diff changeset
    93
    mModel.getCertificateDetails(cert, mDetails);
989397f9511c 201039_03
hgs
parents:
diff changeset
    94
989397f9511c 201039_03
hgs
parents:
diff changeset
    95
    mDetailsText->clear();
989397f9511c 201039_03
hgs
parents:
diff changeset
    96
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    97
989397f9511c 201039_03
hgs
parents:
diff changeset
    98
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    99
// AdvSecSettingsCertificateDetailView::certificateDetailsCompleted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   100
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   101
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   102
void AdvSecSettingsCertificateDetailView::certificateDetailsCompleted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   103
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   104
    QString label;
989397f9511c 201039_03
hgs
parents:
diff changeset
   105
    QString details;
989397f9511c 201039_03
hgs
parents:
diff changeset
   106
    QTextStream stream(&details);
989397f9511c 201039_03
hgs
parents:
diff changeset
   107
989397f9511c 201039_03
hgs
parents:
diff changeset
   108
    bool isFirst(true);
989397f9511c 201039_03
hgs
parents:
diff changeset
   109
    QMapIterator<int, QString> iter(mDetails);
989397f9511c 201039_03
hgs
parents:
diff changeset
   110
    while (iter.hasNext()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   111
        if (!isFirst) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   112
            stream << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   113
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   114
        isFirst = false;
989397f9511c 201039_03
hgs
parents:
diff changeset
   115
989397f9511c 201039_03
hgs
parents:
diff changeset
   116
        int key = iter.next().key();
989397f9511c 201039_03
hgs
parents:
diff changeset
   117
        switch (key) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   118
        case AdvSecSettingsCertificateModel::Label:
989397f9511c 201039_03
hgs
parents:
diff changeset
   119
            label = iter.value();
989397f9511c 201039_03
hgs
parents:
diff changeset
   120
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   121
        case AdvSecSettingsCertificateModel::Issuer:
989397f9511c 201039_03
hgs
parents:
diff changeset
   122
            stream << hbTrId("txt_certificate_list_issuer") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   123
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   124
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   125
        case AdvSecSettingsCertificateModel::Subject:
989397f9511c 201039_03
hgs
parents:
diff changeset
   126
            stream << hbTrId("txt_certificate_list_subject") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   127
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   128
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   129
        case AdvSecSettingsCertificateModel::ValidFrom:
989397f9511c 201039_03
hgs
parents:
diff changeset
   130
            stream << hbTrId("txt_certificate_list_valid_from") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   131
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   132
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   133
        case AdvSecSettingsCertificateModel::ValidTo:
989397f9511c 201039_03
hgs
parents:
diff changeset
   134
            stream << hbTrId("txt_certificate_list_valid_until") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   135
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   136
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   137
        case AdvSecSettingsCertificateModel::Location:
989397f9511c 201039_03
hgs
parents:
diff changeset
   138
            // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   139
            stream << tr("Location:") << endl << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   140
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   141
        case AdvSecSettingsCertificateModel::Format:
989397f9511c 201039_03
hgs
parents:
diff changeset
   142
            stream << hbTrId("txt_certificate_list_certificate_format") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   143
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   144
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   145
        case AdvSecSettingsCertificateModel::KeyUsage:
989397f9511c 201039_03
hgs
parents:
diff changeset
   146
            // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   147
            stream << tr("Key usage:") << endl << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   148
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   149
        case AdvSecSettingsCertificateModel::KeyLocation:
989397f9511c 201039_03
hgs
parents:
diff changeset
   150
            // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   151
            stream << tr("Key location:") << endl << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   152
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   153
        case AdvSecSettingsCertificateModel::Algorithm:
989397f9511c 201039_03
hgs
parents:
diff changeset
   154
            stream << hbTrId("txt_certificate_list_algorithm") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   155
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   156
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   157
        case AdvSecSettingsCertificateModel::SerialNumber:
989397f9511c 201039_03
hgs
parents:
diff changeset
   158
            stream << hbTrId("txt_certificate_list_serial_number") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   159
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   160
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   161
        case AdvSecSettingsCertificateModel::FingerprintSHA1:
989397f9511c 201039_03
hgs
parents:
diff changeset
   162
            stream << hbTrId("txt_certificate_list_fingerprint_sha1") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   163
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   164
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   165
        case AdvSecSettingsCertificateModel::FingerprintMD5:
989397f9511c 201039_03
hgs
parents:
diff changeset
   166
            stream << hbTrId("txt_certificate_list_fingerprint_md5") << endl
989397f9511c 201039_03
hgs
parents:
diff changeset
   167
                << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   168
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   169
        case AdvSecSettingsCertificateModel::PublicKey:
989397f9511c 201039_03
hgs
parents:
diff changeset
   170
            // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   171
            stream << tr("Public key:") << endl << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   172
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   173
        case AdvSecSettingsCertificateModel::TrustedSites:
989397f9511c 201039_03
hgs
parents:
diff changeset
   174
            // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   175
            stream << tr("Trusted sites:") << endl << iter.value() << endl;
989397f9511c 201039_03
hgs
parents:
diff changeset
   176
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   177
        default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   178
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   179
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   180
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   181
989397f9511c 201039_03
hgs
parents:
diff changeset
   182
    mViewLabel->setHeading(label);
989397f9511c 201039_03
hgs
parents:
diff changeset
   183
    mDetailsText->setPlainText(details);
989397f9511c 201039_03
hgs
parents:
diff changeset
   184
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   185
989397f9511c 201039_03
hgs
parents:
diff changeset
   186
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   187
// AdvSecSettingsCertificateDetailView::showTrustSettings()
989397f9511c 201039_03
hgs
parents:
diff changeset
   188
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   189
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   190
void AdvSecSettingsCertificateDetailView::showTrustSettings()
989397f9511c 201039_03
hgs
parents:
diff changeset
   191
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   192
    Q_ASSERT(mCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   193
    AdvSecSettingsCertTrustSettingsView *trustSettingsView =
989397f9511c 201039_03
hgs
parents:
diff changeset
   194
        new AdvSecSettingsCertTrustSettingsView(mModel);
989397f9511c 201039_03
hgs
parents:
diff changeset
   195
    trustSettingsView->setDeleteOnClose(true);
989397f9511c 201039_03
hgs
parents:
diff changeset
   196
    trustSettingsView->setCertificate(*mCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   197
    displayView(trustSettingsView);
989397f9511c 201039_03
hgs
parents:
diff changeset
   198
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   199
989397f9511c 201039_03
hgs
parents:
diff changeset
   200
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   201
// AdvSecSettingsCertificateDetailView::deleteCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
   202
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   203
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   204
void AdvSecSettingsCertificateDetailView::deleteCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
   205
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   206
    Q_ASSERT(mCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   207
    // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   208
    QString confirmText(tr("Delete %1?").arg(mCertificate->label()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   209
    displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   210
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   211
989397f9511c 201039_03
hgs
parents:
diff changeset
   212
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   213
// AdvSecSettingsCertificateDetailView::deleteConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   214
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   215
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   216
void AdvSecSettingsCertificateDetailView::deleteConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   217
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   218
    Q_ASSERT(mCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   219
    mModel.deleteCertificate(*mCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   220
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   221