cpsecplugins/cpadvancedsecplugin/src/advsecsettingscertificatelistview.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 list 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 "advsecsettingscertificatelistview.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    19
#include "advsecsettingscertificatemodel.h"
989397f9511c 201039_03
hgs
parents:
diff changeset
    20
#include "advsecsettingscertificatedetailview.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 <HbAbstractViewItem>
989397f9511c 201039_03
hgs
parents:
diff changeset
    24
#include <HbGroupBox>
989397f9511c 201039_03
hgs
parents:
diff changeset
    25
#include <HbListWidget>
989397f9511c 201039_03
hgs
parents:
diff changeset
    26
#include <HbListWidgetItem>
989397f9511c 201039_03
hgs
parents:
diff changeset
    27
#include <HbLabel>
989397f9511c 201039_03
hgs
parents:
diff changeset
    28
#include <HbStackedWidget>
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
// AdvSecSettingsCertificateListView::AdvSecSettingsCertificateListView()
989397f9511c 201039_03
hgs
parents:
diff changeset
    35
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    36
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    37
AdvSecSettingsCertificateListView::AdvSecSettingsCertificateListView(
989397f9511c 201039_03
hgs
parents:
diff changeset
    38
    QGraphicsItem *parent) : AdvSecSettingsViewBase(0, parent),
989397f9511c 201039_03
hgs
parents:
diff changeset
    39
    mCertType(AdvSecSettingsCertificate::NotDefined),
989397f9511c 201039_03
hgs
parents:
diff changeset
    40
    mListWidget(0), mEmptyText(0), mRetrievingText(0), mStackedWidget(0),
989397f9511c 201039_03
hgs
parents:
diff changeset
    41
    mIsRetrieving(true), mModelCertificateList(), mDisplayedCertificates(),
989397f9511c 201039_03
hgs
parents:
diff changeset
    42
    mModel(0), mDetailView(), mTrustSettingsView(0), mCurrentCertificate(0)
989397f9511c 201039_03
hgs
parents:
diff changeset
    43
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    44
    mModel = new AdvSecSettingsCertificateModel(this);
989397f9511c 201039_03
hgs
parents:
diff changeset
    45
    mModel->initialize();
989397f9511c 201039_03
hgs
parents:
diff changeset
    46
    connect(mModel, SIGNAL(initializeCompleted()),
989397f9511c 201039_03
hgs
parents:
diff changeset
    47
        this, SLOT(readAllCertificatesFromModel()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    48
    connect(mModel, SIGNAL(getCertificatesCompleted()),
989397f9511c 201039_03
hgs
parents:
diff changeset
    49
        this, SLOT(displayAllCertificatesReadFromModel()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    50
    connect(mModel, SIGNAL(deleteCertificateCompleted()),
989397f9511c 201039_03
hgs
parents:
diff changeset
    51
        this, SLOT(refreshAfterCurrentCertRemoved()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    52
    connect(mModel, SIGNAL(moveToPersonalCertificatesCompleted()),
989397f9511c 201039_03
hgs
parents:
diff changeset
    53
        this, SLOT(refreshAfterCurrentCertRemoved()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    54
    connect(mModel, SIGNAL(moveToDeviceCertificatesCompleted()),
989397f9511c 201039_03
hgs
parents:
diff changeset
    55
        this, SLOT(refreshAfterCurrentCertRemoved()));
989397f9511c 201039_03
hgs
parents:
diff changeset
    56
    connect(mModel, SIGNAL(errorOccurred(int)),
989397f9511c 201039_03
hgs
parents:
diff changeset
    57
        this, SLOT(displayError(int)));
989397f9511c 201039_03
hgs
parents:
diff changeset
    58
989397f9511c 201039_03
hgs
parents:
diff changeset
    59
    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
989397f9511c 201039_03
hgs
parents:
diff changeset
    60
989397f9511c 201039_03
hgs
parents:
diff changeset
    61
    // View title
989397f9511c 201039_03
hgs
parents:
diff changeset
    62
    mViewLabel = new HbGroupBox;
989397f9511c 201039_03
hgs
parents:
diff changeset
    63
    layout->addItem(mViewLabel);
989397f9511c 201039_03
hgs
parents:
diff changeset
    64
989397f9511c 201039_03
hgs
parents:
diff changeset
    65
    // Certificate list or empty text
989397f9511c 201039_03
hgs
parents:
diff changeset
    66
    mStackedWidget = new HbStackedWidget;
989397f9511c 201039_03
hgs
parents:
diff changeset
    67
989397f9511c 201039_03
hgs
parents:
diff changeset
    68
    mListWidget = new HbListWidget;
989397f9511c 201039_03
hgs
parents:
diff changeset
    69
    connect(mListWidget, SIGNAL(activated(QModelIndex)),
989397f9511c 201039_03
hgs
parents:
diff changeset
    70
        this, SLOT(openCertificate(QModelIndex)));
989397f9511c 201039_03
hgs
parents:
diff changeset
    71
    connect(mListWidget, SIGNAL(longPressed(HbAbstractViewItem*, QPointF)),
989397f9511c 201039_03
hgs
parents:
diff changeset
    72
        this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF)));
989397f9511c 201039_03
hgs
parents:
diff changeset
    73
    mStackedWidget->addWidget(mListWidget);
989397f9511c 201039_03
hgs
parents:
diff changeset
    74
989397f9511c 201039_03
hgs
parents:
diff changeset
    75
    // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
    76
    mEmptyText = new HbLabel(tr("No certificates"));
989397f9511c 201039_03
hgs
parents:
diff changeset
    77
    mEmptyText->setAlignment(Qt::AlignCenter);
989397f9511c 201039_03
hgs
parents:
diff changeset
    78
    mStackedWidget->addWidget(mEmptyText);
989397f9511c 201039_03
hgs
parents:
diff changeset
    79
989397f9511c 201039_03
hgs
parents:
diff changeset
    80
    mRetrievingText = new HbLabel(tr("Retrieving..."));
989397f9511c 201039_03
hgs
parents:
diff changeset
    81
    mRetrievingText->setAlignment(Qt::AlignCenter);
989397f9511c 201039_03
hgs
parents:
diff changeset
    82
    mStackedWidget->addWidget(mRetrievingText);
989397f9511c 201039_03
hgs
parents:
diff changeset
    83
989397f9511c 201039_03
hgs
parents:
diff changeset
    84
    mStackedWidget->setCurrentWidget(mRetrievingText);
989397f9511c 201039_03
hgs
parents:
diff changeset
    85
    layout->addItem(mStackedWidget);
989397f9511c 201039_03
hgs
parents:
diff changeset
    86
989397f9511c 201039_03
hgs
parents:
diff changeset
    87
    setLayout(layout);
989397f9511c 201039_03
hgs
parents:
diff changeset
    88
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    89
989397f9511c 201039_03
hgs
parents:
diff changeset
    90
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    91
// AdvSecSettingsCertificateListView::~AdvSecSettingsCertificateListView()
989397f9511c 201039_03
hgs
parents:
diff changeset
    92
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
    93
//
989397f9511c 201039_03
hgs
parents:
diff changeset
    94
AdvSecSettingsCertificateListView::~AdvSecSettingsCertificateListView()
989397f9511c 201039_03
hgs
parents:
diff changeset
    95
{
989397f9511c 201039_03
hgs
parents:
diff changeset
    96
    clearModelCertificates();
989397f9511c 201039_03
hgs
parents:
diff changeset
    97
}
989397f9511c 201039_03
hgs
parents:
diff changeset
    98
989397f9511c 201039_03
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   100
// AdvSecSettingsCertificateListView::displayCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   101
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   102
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   103
void AdvSecSettingsCertificateListView::displayCertificates(
989397f9511c 201039_03
hgs
parents:
diff changeset
   104
    AdvSecSettingsCertificate::CertificateType type)
989397f9511c 201039_03
hgs
parents:
diff changeset
   105
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   106
    if (type != mCertType) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   107
        mCertType = type;
989397f9511c 201039_03
hgs
parents:
diff changeset
   108
        switch (mCertType) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   109
        case AdvSecSettingsCertificate::AuthorityCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   110
            mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_authority_certific"));
989397f9511c 201039_03
hgs
parents:
diff changeset
   111
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   112
        case AdvSecSettingsCertificate::TrustedSiteCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   113
            mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_trusted_site_certi"));
989397f9511c 201039_03
hgs
parents:
diff changeset
   114
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   115
        case AdvSecSettingsCertificate::PersonalCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   116
            mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_personal_certifica"));
989397f9511c 201039_03
hgs
parents:
diff changeset
   117
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   118
        case AdvSecSettingsCertificate::DeviceCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   119
            mViewLabel->setHeading(hbTrId("txt_certificate_manager_subhead_device_certificate"));
989397f9511c 201039_03
hgs
parents:
diff changeset
   120
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   121
        default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   122
            break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   123
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   124
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   125
    refreshDisplayedCertificates();
989397f9511c 201039_03
hgs
parents:
diff changeset
   126
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   127
989397f9511c 201039_03
hgs
parents:
diff changeset
   128
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   129
// AdvSecSettingsCertificateListView::setCurrentIndex()
989397f9511c 201039_03
hgs
parents:
diff changeset
   130
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   131
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   132
void AdvSecSettingsCertificateListView::setCurrentIndex(const QModelIndex& index)
989397f9511c 201039_03
hgs
parents:
diff changeset
   133
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   134
    mListWidget->setCurrentIndex(index, QItemSelectionModel::SelectCurrent);
989397f9511c 201039_03
hgs
parents:
diff changeset
   135
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   136
989397f9511c 201039_03
hgs
parents:
diff changeset
   137
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   138
// AdvSecSettingsCertificateListView::indicateLongPress()
989397f9511c 201039_03
hgs
parents:
diff changeset
   139
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   140
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   141
void AdvSecSettingsCertificateListView::indicateLongPress(
989397f9511c 201039_03
hgs
parents:
diff changeset
   142
    HbAbstractViewItem *item, const QPointF &position)
989397f9511c 201039_03
hgs
parents:
diff changeset
   143
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   144
    Q_ASSERT(item != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   145
    mCurrentCertificate = mDisplayedCertificates.at(item->modelIndex().row());
989397f9511c 201039_03
hgs
parents:
diff changeset
   146
989397f9511c 201039_03
hgs
parents:
diff changeset
   147
    clearItemSpecificMenu();
989397f9511c 201039_03
hgs
parents:
diff changeset
   148
    addItemSpecificMenuAction(hbTrId("txt_common_menu_open"),
989397f9511c 201039_03
hgs
parents:
diff changeset
   149
        this, SLOT(openCurrentCertificate()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   150
989397f9511c 201039_03
hgs
parents:
diff changeset
   151
    switch (mCertType) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   152
    case AdvSecSettingsCertificate::AuthorityCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   153
        addItemSpecificMenuAction(hbTrId("txt_certificate_manager_menu_trust_settings"),
989397f9511c 201039_03
hgs
parents:
diff changeset
   154
            this, SLOT(displayCurrentCertTrustSettings()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   155
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   156
    case AdvSecSettingsCertificate::TrustedSiteCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   157
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   158
    case AdvSecSettingsCertificate::PersonalCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   159
        addItemSpecificMenuAction(hbTrId("txt_certificate_manager_menu_move_to_device_certif"),
989397f9511c 201039_03
hgs
parents:
diff changeset
   160
            this, SLOT(moveCurrentCertToDeviceCertificates()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   161
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   162
    case AdvSecSettingsCertificate::DeviceCertificate:
989397f9511c 201039_03
hgs
parents:
diff changeset
   163
        addItemSpecificMenuAction(hbTrId("txt_certificate_manager_menu_move_to_personal_cert"),
989397f9511c 201039_03
hgs
parents:
diff changeset
   164
            this, SLOT(moveCurrentCertToPersonalCertificates()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   165
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   166
    default:
989397f9511c 201039_03
hgs
parents:
diff changeset
   167
        break;
989397f9511c 201039_03
hgs
parents:
diff changeset
   168
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   169
989397f9511c 201039_03
hgs
parents:
diff changeset
   170
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   171
    if (mModel->isDeletable(*mCurrentCertificate)) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   172
        addItemSpecificMenuAction(hbTrId("txt_common_menu_delete"),
989397f9511c 201039_03
hgs
parents:
diff changeset
   173
            this, SLOT(deleteCurrentCertificate()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   174
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   175
989397f9511c 201039_03
hgs
parents:
diff changeset
   176
    displayItemSpecificMenu(position);
989397f9511c 201039_03
hgs
parents:
diff changeset
   177
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   178
989397f9511c 201039_03
hgs
parents:
diff changeset
   179
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   180
// AdvSecSettingsCertificateListView::openCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
   181
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   182
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   183
void AdvSecSettingsCertificateListView::openCertificate(const QModelIndex& modelIndex)
989397f9511c 201039_03
hgs
parents:
diff changeset
   184
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   185
    mCurrentCertificate = mDisplayedCertificates.at(modelIndex.row());
989397f9511c 201039_03
hgs
parents:
diff changeset
   186
    openCurrentCertificate();
989397f9511c 201039_03
hgs
parents:
diff changeset
   187
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   188
989397f9511c 201039_03
hgs
parents:
diff changeset
   189
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   190
// AdvSecSettingsCertificateListView::openCurrentCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
   191
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   192
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   193
void AdvSecSettingsCertificateListView::openCurrentCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
   194
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   195
    if (!mDetailView) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   196
        mDetailView = new AdvSecSettingsCertificateDetailView(*mModel, this);
989397f9511c 201039_03
hgs
parents:
diff changeset
   197
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   198
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   199
    mDetailView->setCertificate(*mCurrentCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   200
    displayView(mDetailView);
989397f9511c 201039_03
hgs
parents:
diff changeset
   201
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   202
989397f9511c 201039_03
hgs
parents:
diff changeset
   203
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   204
// AdvSecSettingsCertificateListView::displayCurrentCertTrustSettings()
989397f9511c 201039_03
hgs
parents:
diff changeset
   205
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   206
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   207
void AdvSecSettingsCertificateListView::displayCurrentCertTrustSettings()
989397f9511c 201039_03
hgs
parents:
diff changeset
   208
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   209
    if (!mTrustSettingsView) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   210
        mTrustSettingsView = new AdvSecSettingsCertTrustSettingsView(*mModel, this);
989397f9511c 201039_03
hgs
parents:
diff changeset
   211
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   212
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   213
    mTrustSettingsView->setCertificate(*mCurrentCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   214
    displayView(mTrustSettingsView);
989397f9511c 201039_03
hgs
parents:
diff changeset
   215
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   216
989397f9511c 201039_03
hgs
parents:
diff changeset
   217
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   218
// AdvSecSettingsCertificateListView::deleteCurrentCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
   219
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   220
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   221
void AdvSecSettingsCertificateListView::deleteCurrentCertificate()
989397f9511c 201039_03
hgs
parents:
diff changeset
   222
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   223
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   224
    // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   225
    QString confirmText(tr("Delete %1?").arg(mCurrentCertificate->label()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   226
    displayQuestionNote(confirmText, this, SLOT(deleteConfirmationAccepted()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   227
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   228
989397f9511c 201039_03
hgs
parents:
diff changeset
   229
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   230
// AdvSecSettingsCertificateListView::deleteConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   231
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   232
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   233
void AdvSecSettingsCertificateListView::deleteConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   234
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   235
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   236
    mModel->deleteCertificate(*mCurrentCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   237
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   238
989397f9511c 201039_03
hgs
parents:
diff changeset
   239
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   240
// AdvSecSettingsCertificateListView::moveCurrentCertToDeviceCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   241
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   242
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   243
void AdvSecSettingsCertificateListView::moveCurrentCertToDeviceCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   244
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   245
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   246
    QString confirmText(hbTrId("txt_certificate_info_device_certificates_can_be_us"));
989397f9511c 201039_03
hgs
parents:
diff changeset
   247
    displayQuestionNote(confirmText, this, SLOT(moveToDeviceCertsConfirmationAccepted()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   248
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   249
989397f9511c 201039_03
hgs
parents:
diff changeset
   250
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   251
// AdvSecSettingsCertificateListView::moveToDeviceCertsConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   252
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   253
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   254
void AdvSecSettingsCertificateListView::moveToDeviceCertsConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   255
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   256
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   257
    mModel->moveToDeviceCertificates(*mCurrentCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   258
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   259
989397f9511c 201039_03
hgs
parents:
diff changeset
   260
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   261
// AdvSecSettingsCertificateListView::moveCurrentCertToPersonalCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   262
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   263
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   264
void AdvSecSettingsCertificateListView::moveCurrentCertToPersonalCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   265
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   266
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   267
    // TODO: localized UI string needed
989397f9511c 201039_03
hgs
parents:
diff changeset
   268
    QString confirmText(tr("Using personal certificates may require user confirmation. Continue?"));
989397f9511c 201039_03
hgs
parents:
diff changeset
   269
    displayQuestionNote(confirmText, this, SLOT(moveToPersonalCertsConfirmationAccepted()));
989397f9511c 201039_03
hgs
parents:
diff changeset
   270
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   271
989397f9511c 201039_03
hgs
parents:
diff changeset
   272
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   273
// AdvSecSettingsCertificateListView::moveToPersonalCertsConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   274
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   275
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   276
void AdvSecSettingsCertificateListView::moveToPersonalCertsConfirmationAccepted()
989397f9511c 201039_03
hgs
parents:
diff changeset
   277
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   278
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   279
    mModel->moveToPersonalCertificates(*mCurrentCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   280
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   281
989397f9511c 201039_03
hgs
parents:
diff changeset
   282
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   283
// AdvSecSettingsCertificateListView::readAllCertificatesFromModel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   284
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   285
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   286
void AdvSecSettingsCertificateListView::readAllCertificatesFromModel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   287
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   288
    clearModelCertificates();
989397f9511c 201039_03
hgs
parents:
diff changeset
   289
    mModel->getCertificates(mModelCertificateList);
989397f9511c 201039_03
hgs
parents:
diff changeset
   290
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   291
989397f9511c 201039_03
hgs
parents:
diff changeset
   292
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   293
// AdvSecSettingsCertificateListView::displayAllCertificatesReadFromModel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   294
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   295
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   296
void AdvSecSettingsCertificateListView::displayAllCertificatesReadFromModel()
989397f9511c 201039_03
hgs
parents:
diff changeset
   297
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   298
    if (mCertType != AdvSecSettingsCertificate::NotDefined) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   299
        mIsRetrieving = false;
989397f9511c 201039_03
hgs
parents:
diff changeset
   300
        refreshDisplayedCertificates();
989397f9511c 201039_03
hgs
parents:
diff changeset
   301
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   302
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   303
989397f9511c 201039_03
hgs
parents:
diff changeset
   304
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   305
// AdvSecSettingsCertificateListView::clearModelCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   306
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   307
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   308
void AdvSecSettingsCertificateListView::clearModelCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   309
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   310
    if (!mModelCertificateList.isEmpty()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   311
        QMutableListIterator<AdvSecSettingsCertificate *> iter(mModelCertificateList);
989397f9511c 201039_03
hgs
parents:
diff changeset
   312
        while (iter.hasNext()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   313
            delete iter.next();
989397f9511c 201039_03
hgs
parents:
diff changeset
   314
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   315
        mModelCertificateList.clear();
989397f9511c 201039_03
hgs
parents:
diff changeset
   316
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   317
    mCurrentCertificate = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
   318
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   319
989397f9511c 201039_03
hgs
parents:
diff changeset
   320
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   321
// AdvSecSettingsCertificateListView::refreshDisplayedCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   322
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   323
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   324
void AdvSecSettingsCertificateListView::refreshDisplayedCertificates()
989397f9511c 201039_03
hgs
parents:
diff changeset
   325
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   326
    int currentRow = mListWidget->currentRow();
989397f9511c 201039_03
hgs
parents:
diff changeset
   327
    mListWidget->clear();
989397f9511c 201039_03
hgs
parents:
diff changeset
   328
    mDisplayedCertificates.clear();
989397f9511c 201039_03
hgs
parents:
diff changeset
   329
    QListIterator<AdvSecSettingsCertificate *> iter(mModelCertificateList);
989397f9511c 201039_03
hgs
parents:
diff changeset
   330
    while (iter.hasNext()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   331
        AdvSecSettingsCertificate *cert = iter.next();
989397f9511c 201039_03
hgs
parents:
diff changeset
   332
        if (cert->certType() == mCertType) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   333
            mDisplayedCertificates.append(cert);
989397f9511c 201039_03
hgs
parents:
diff changeset
   334
            HbListWidgetItem *item = new HbListWidgetItem;
989397f9511c 201039_03
hgs
parents:
diff changeset
   335
            item->setText(cert->label());
989397f9511c 201039_03
hgs
parents:
diff changeset
   336
            mListWidget->addItem(item);
989397f9511c 201039_03
hgs
parents:
diff changeset
   337
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   338
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   339
    if (mListWidget->count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   340
        if (currentRow < mListWidget->count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   341
            mListWidget->setCurrentRow(currentRow);
989397f9511c 201039_03
hgs
parents:
diff changeset
   342
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   343
        mStackedWidget->setCurrentWidget(mListWidget);
989397f9511c 201039_03
hgs
parents:
diff changeset
   344
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   345
        if (mIsRetrieving) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   346
            mStackedWidget->setCurrentWidget(mRetrievingText);
989397f9511c 201039_03
hgs
parents:
diff changeset
   347
        } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   348
            mStackedWidget->setCurrentWidget(mEmptyText);
989397f9511c 201039_03
hgs
parents:
diff changeset
   349
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   350
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   351
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   352
989397f9511c 201039_03
hgs
parents:
diff changeset
   353
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   354
// AdvSecSettingsCertificateListView::refreshAfterCurrentCertRemoved()
989397f9511c 201039_03
hgs
parents:
diff changeset
   355
// ---------------------------------------------------------------------------
989397f9511c 201039_03
hgs
parents:
diff changeset
   356
//
989397f9511c 201039_03
hgs
parents:
diff changeset
   357
void AdvSecSettingsCertificateListView::refreshAfterCurrentCertRemoved()
989397f9511c 201039_03
hgs
parents:
diff changeset
   358
{
989397f9511c 201039_03
hgs
parents:
diff changeset
   359
    Q_ASSERT(mCurrentCertificate != 0);
989397f9511c 201039_03
hgs
parents:
diff changeset
   360
989397f9511c 201039_03
hgs
parents:
diff changeset
   361
    QString currentCertLabel = mCurrentCertificate->label();
989397f9511c 201039_03
hgs
parents:
diff changeset
   362
    for (TInt row = 0; row < mListWidget->count(); row++) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   363
        HbListWidgetItem *item = mListWidget->item(row);
989397f9511c 201039_03
hgs
parents:
diff changeset
   364
        if (item->text() == currentCertLabel) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   365
            item = mListWidget->takeItem(row);
989397f9511c 201039_03
hgs
parents:
diff changeset
   366
            delete item;
989397f9511c 201039_03
hgs
parents:
diff changeset
   367
        }
989397f9511c 201039_03
hgs
parents:
diff changeset
   368
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   369
    if (mListWidget->count()) {
989397f9511c 201039_03
hgs
parents:
diff changeset
   370
        mStackedWidget->setCurrentWidget(mListWidget);
989397f9511c 201039_03
hgs
parents:
diff changeset
   371
    } else {
989397f9511c 201039_03
hgs
parents:
diff changeset
   372
        mStackedWidget->setCurrentWidget(mEmptyText);
989397f9511c 201039_03
hgs
parents:
diff changeset
   373
    }
989397f9511c 201039_03
hgs
parents:
diff changeset
   374
989397f9511c 201039_03
hgs
parents:
diff changeset
   375
    mDisplayedCertificates.removeAll(mCurrentCertificate);
989397f9511c 201039_03
hgs
parents:
diff changeset
   376
    mCurrentCertificate = 0;
989397f9511c 201039_03
hgs
parents:
diff changeset
   377
989397f9511c 201039_03
hgs
parents:
diff changeset
   378
    readAllCertificatesFromModel();
989397f9511c 201039_03
hgs
parents:
diff changeset
   379
}
989397f9511c 201039_03
hgs
parents:
diff changeset
   380