diff -r 09b1ac925e3f -r 03674e5abf46 cpsecplugins/cpadvancedsecplugin/src/cpcertview.cpp --- a/cpsecplugins/cpadvancedsecplugin/src/cpcertview.cpp Tue Aug 31 16:04:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,922 +0,0 @@ -/* -* 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: -* -*/ - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include <../../inc/cpsecplugins.h> -#include "cpcertdetailview.h" -#include "cpcertview.h" -#include "cpcertdatacontainer.h" -#include "cpcerttrustview.h" -#include "cpcertmanuisyncwrapper.h" - - -CpCertView::CpCertView(const QModelIndex& modelIndex, QGraphicsItem *parent /*= 0*/) - : CpBaseSettingView(0,parent), - mPopup(NULL), - mPrevView(NULL), - mCurrentView(NULL), - mRefreshedView(NULL), - mListView(NULL), - mSelectAllView(NULL), - mOriginalView(NULL), - mNote(NULL) - { - RDEBUG("0", 0); - mOriginalView = mainWindow()->currentView(); - - HbMenu* menu = this->menu(); - std::auto_ptr deleteAction(new HbAction(hbTrId("txt_common_menu_delete"))); - connect(deleteAction.get(), SIGNAL(triggered()), this, SLOT(deleteList())); - menu->addAction(deleteAction.get()); - deleteAction.release(); - - std::auto_ptr layout(new QGraphicsLinearLayout(Qt::Vertical)); - - HbDataForm *form = q_check_ptr(new HbDataForm(this)); - std::auto_ptr formModel(q_check_ptr(new HbDataFormModel())); - form->setModel(formModel.get()); - formModel.release(); - - HbListWidget* certificateList = q_check_ptr(new HbListWidget(this)); - - CpCertView::TCertificateViews currentView = (CpCertView::TCertificateViews)modelIndex.row(); - QString title; - if(currentView == EPersonalView) - { - title = "Move to Device"; - } - else if(currentView == EDeviceView) - { - title = "Move to Personal"; - } - RDEBUG("0", 0); - if(currentView == EPersonalView || currentView == EDeviceView) - { - std::auto_ptr moveToDeviceAction(q_check_ptr(new HbAction(title))); - connect(moveToDeviceAction.get(), SIGNAL(triggered()), this, SLOT(moveCert())); - menu->addAction(moveToDeviceAction.get()); - moveToDeviceAction.release(); - } - - setDetails(currentView); - TInt count = 0; - try - { - QT_TRAP_THROWING(mCertDataContainer = CpCertDataContainer::NewL()); - QT_TRAP_THROWING(count = refreshListL()); - } - catch(const std::exception& exception) - { - HbMessageBox::information(exception.what()); - throw(exception); - } - RDEBUG("0", 0); - for(int index = 0; index< count; index++) - { - QString certificateLabel = certLabel(index); - std::auto_ptr singleCert(q_check_ptr(new HbListWidgetItem())); - singleCert->setText(certificateLabel); - certificateList->addItem(singleCert.get()); - singleCert.release(); - } // End of FOR loop - - connect(certificateList, SIGNAL(activated(QModelIndex)), this, SLOT(openCertFromList(QModelIndex))); - connect(certificateList, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF))); - - layout->addItem(certificateList); - setLayout(layout.get()); - layout.release(); - - mPopup = q_check_ptr(new HbDialog()); - mContextMenu = q_check_ptr(new HbMenu()); - - RDEBUG("0", 0); - } - -CpCertView::~CpCertView() - { - delete mCertDataContainer; - mCertDataContainer = NULL; - RDEBUG("0", 0); - if(mPrevView) - { - mPrevView->deleteLater(); - mPrevView= NULL; - } - if(mCurrentView) - { - mCurrentView->deleteLater(); - mCurrentView= NULL; - } - if(mRefreshedView) - { - mRefreshedView->deleteLater(); - mRefreshedView= NULL; - } - if(mListView) - { - mListView->deleteLater(); - mListView= NULL; - } - - if(mSelectAllView) - { - mSelectAllView->deleteLater(); - mSelectAllView = NULL; - } - - mSelectionIndex.Close(); - - mIndexList.Close(); - - delete mPopup; - - delete mNote; - mNote = NULL; - - delete mContextMenu; - - } - -void CpCertView::setDetails(CpCertView::TCertificateViews currentView) - { - RDEBUG("0", 0); - switch(currentView) - { - case EAuthorityView: - setTitle(hbTrId("txt_certificate_manager_list_authority_certificate")); - mCertView = EAuthorityView; - break; - - case ETrustedView: - setTitle(hbTrId("txt_certificate_manager_list_trusted_site_certific")); - mCertView = ETrustedView; - break; - - case EPersonalView: - setTitle(hbTrId("txt_certificate_manager_list_personal_certificates")); - mCertView = EPersonalView; - break; - - case EDeviceView: - setTitle(hbTrId("txt_certificate_manager_list_device_certificates")); - mCertView = EDeviceView; - break; - } - } - -void CpCertView::indicateLongPress(HbAbstractViewItem *item,QPointF coords) - { - RDEBUG("0", 0); - mPos = item->modelIndex().row(); // Pos will tell you what is the certificate clicked in particular view. - - mContextMenu->clearActions(); - std::auto_ptr open(q_check_ptr(new HbAction(hbTrId("txt_common_menu_open")))); - connect(open.get(), SIGNAL(triggered()), this, SLOT( openCertificate())); - mContextMenu->addAction(open.get()); - open.release(); - - QString moveTitle; - - if(mCertView == EAuthorityView) - { - std::auto_ptr trustSettings(q_check_ptr(new HbAction(hbTrId("txt_certificate_manager_menu_trust_settings")))); - connect(trustSettings.get(), SIGNAL(triggered()), this, SLOT(showTrustSettings())); - mContextMenu->addAction(trustSettings.get()); - trustSettings.release(); - } - else if(mCertView == EPersonalView) - { - moveTitle = hbTrId("txt_certificate_manager_menu_move_to_device_certif"); - } - else if(mCertView == EDeviceView) - { - moveTitle = hbTrId("txt_certificate_manager_menu_move_to_personal_cert"); - } - - if(mCertView == EPersonalView || mCertView == EDeviceView ) - { - std::auto_ptr moveCert(q_check_ptr(new HbAction(moveTitle))); - connect(moveCert.get(), SIGNAL(triggered()), this, SLOT(moveSelectedCert())); - mContextMenu->addAction(moveCert.get()); - moveCert.release(); - } - - RDEBUG("0", 0); - if( certAt(mPos)->IsDeletable() ) - { - std::auto_ptr menuDelete(q_check_ptr(new HbAction(hbTrId("txt_common_menu_delete")))); - connect(menuDelete.get(), SIGNAL(triggered()), this, SLOT(deleteCertificate())); - mContextMenu->addAction(menuDelete.get()); - menuDelete.release(); - } - mContextMenu->setPreferredPos(coords); - mContextMenu->open(); - } - -void CpCertView::openCertFromList(const QModelIndex& modelIndex) - { - RDEBUG("0", 0); - // Pos will tell you what is the certificate clicked in particular view. - mPos = modelIndex.row(); - openCertificate(); - } - -void CpCertView::openCertificate() - { - RDEBUG("0", 0); - mCurrentView = q_check_ptr(new CpCertDetailView(mCertView,mPos,*mCertDataContainer)); - connect(mCurrentView, SIGNAL(aboutToClose()), this, SLOT(displayPreviousView())); - mPrevView = mainWindow()->currentView(); - mainWindow()->addView(mCurrentView); - mainWindow()->setCurrentView(mCurrentView); - } - -void CpCertView::displayPreviousView() - { - RDEBUG("0", 0); - mainWindow()->removeView(mCurrentView); - mCurrentView->deleteLater(); - mCurrentView= NULL; - mainWindow()->setCurrentView(mPrevView); - } - -void CpCertView::deleteCertificate() - { - RDEBUG("0", 0); - RArray pos; - pos.Append(mPos); - QT_TRAP_THROWING(deleteCertsL(pos)); - } - -void CpCertView::deleteList() - { - RDEBUG("0", 0); - mSelectAll = EFalse; - mPopup->setDismissPolicy(HbDialog::NoDismiss); - // Set the label as heading widget - mPopup->setHeadingWidget(q_check_ptr(new HbLabel(hbTrId("txt_certificate_manager_setlabel_certificates")))); - - std::auto_ptr layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical))); - - mSelectAllView = q_check_ptr(new HbListView(this)); - QStandardItemModel* selectAllModel = q_check_ptr(new QStandardItemModel(this)); - // Populate the model with content - std::auto_ptr selectAllItem(q_check_ptr(new QStandardItem())); - selectAllItem->setData(QString("Select All"),Qt::DisplayRole); - selectAllModel->appendRow(selectAllItem.get()); - selectAllItem.release(); - - connect(mSelectAllView, SIGNAL(activated(QModelIndex)), this, SLOT(selectAll())); - mSelectAllView->setModel(selectAllModel); - mSelectAllView->setSelectionMode(HbListView::MultiSelection); - layout->addItem(mSelectAllView); - - mListView = q_check_ptr(new HbListView(this)); - // Connect to "activated" signal - connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemActivated(QModelIndex))); - - // Create a model - QStandardItemModel* model = q_check_ptr(new QStandardItemModel(this)); - TInt count=0; - QT_TRAP_THROWING( count = refreshListL()); - RDEBUG("0", 0); - for(TInt index = 0; index < count ; ++index) - { - const CCTCertInfo* cert = certAt(index); - if( cert->IsDeletable() ) - { - // Populate the model with content - std::auto_ptr certItem(q_check_ptr(new QStandardItem())); - QString certificateLabel = certLabel(index); - certItem->setData( certificateLabel, Qt::DisplayRole); - model->appendRow(certItem.get()); - mSelectionIndex.Append(index); - certItem.release(); - } - } - // Set the model to the list view - mListView->setModel(model); - mListView->setSelectionMode(HbListView::MultiSelection); - layout->addItem(mListView); - - std::auto_ptr widget( q_check_ptr(new HbWidget())); - widget->setLayout(layout.get()); - layout.release(); - mPopup->setContentWidget(widget.get()); - widget.release(); - - mPopup->setPrimaryAction(q_check_ptr(new HbAction(hbTrId("txt_common_opt_delete")))); - mPopup->setSecondaryAction(q_check_ptr(new HbAction(hbTrId("txt_common_button_cancel")))); - mPopup->setTimeout(HbPopup::NoTimeout); - RDEBUG("0", 0); - // Launch popup syncronously - mPopup->open(this, SLOT(handleMultipleDelete(HbAction*))); - -} - -void CpCertView::handleMultipleDelete(HbAction* action) -{ - RDEBUG("0", 0); - if(action == mPopup->primaryAction()) - { - QItemSelectionModel *selectionModel = mListView->selectionModel(); - QModelIndexList mWidgetItemsToRemove = selectionModel->selectedIndexes(); - TInt deleteCount = mWidgetItemsToRemove.count(); - // start deleting from end of array so that the indexes do not changes of the ones - // at the front. - RArray actualIndex; - QT_TRAP_THROWING - ( - CleanupClosePushL(actualIndex); - for (TInt index = deleteCount-1; index>= 0 ; --index) - { - TInt selectedItemIndex = mWidgetItemsToRemove[index].row(); - actualIndex.Append( mSelectionIndex[selectedItemIndex] ); - } - deleteCertsL(actualIndex); - CleanupStack::PopAndDestroy(&actualIndex); - ) // QT_TRAP_THROWING - } - RDEBUG("0", 0); - mListView->deleteLater(); - mListView = NULL; - mSelectAllView->deleteLater(); - mSelectAllView = NULL; - } - -void CpCertView::moveCert() - { - RDEBUG("0", 0); - mSelectAll = EFalse; - mPopup->setDismissPolicy(HbDialog::NoDismiss); - // Set the label as heading widget - if(mCertView == EPersonalView) - { - mPopup->setHeadingWidget(q_check_ptr(new HbLabel(tr("Move To Device")))); - } - else if(mCertView == EDeviceView) - { - mPopup->setHeadingWidget(q_check_ptr(new HbLabel(tr("Move To Personal")))); - } - - std::auto_ptr layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical))); - - mSelectAllView = q_check_ptr(new HbListView(this)); - QStandardItemModel* selectAllModel = q_check_ptr(new QStandardItemModel(this)); - // Populate the model with content - std::auto_ptr selectAllItem(q_check_ptr(new QStandardItem())); - selectAllItem->setData(QString("Select All"),Qt::DisplayRole); - selectAllModel->appendRow(selectAllItem.get()); - selectAllItem.release(); - connect(mSelectAllView, SIGNAL(activated(QModelIndex)), this, SLOT(selectAll())); - mSelectAllView->setModel(selectAllModel); - mSelectAllView->setSelectionMode(HbListView::MultiSelection); - layout->addItem(mSelectAllView); - - mListView = q_check_ptr(new HbListView(this)); - // Connect to "activated" signal - connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemActivated(QModelIndex))); - - // Create a model - QStandardItemModel* model = q_check_ptr(new QStandardItemModel(this)); - TInt count =0; - RDEBUG("0", 0); - QT_TRAP_THROWING(count = refreshListL()); - for(TInt index = 0; index < count ; ++index) - { - // Populate the model with content - std::auto_ptr certItem(q_check_ptr(new QStandardItem())); - QString certificateLabel = certLabel(index); - certItem->setData( certificateLabel, Qt::DisplayRole); - model->appendRow(certItem.get()); - mSelectionIndex.Append(index); - certItem.release(); - } - - // Set the model to the list view - mListView->setModel(model); - mListView->setSelectionMode(HbListView::MultiSelection); - layout->addItem(mListView); - - std::auto_ptr widget(q_check_ptr(new HbWidget())); - widget->setLayout(layout.get()); - layout.release(); - mPopup->setContentWidget(widget.get()); - widget.release(); - RDEBUG("0", 0); - mPopup->setPrimaryAction(q_check_ptr(new HbAction(tr("Yes")))); - mPopup->setSecondaryAction(q_check_ptr(new HbAction(tr("No")))); - mPopup->setTimeout(HbPopup::NoTimeout); - - // Launch popup syncronously - mPopup->open(this, SLOT(handleMoveCertDialog(HbAction*))); - RDEBUG("0", 0); -} - -void CpCertView::handleMoveCertDialog(HbAction* action) -{ - RDEBUG("0", 0); - if(action == mPopup->primaryAction()) - { - QItemSelectionModel *selectionModel = mListView->selectionModel(); - QModelIndexList mWidgetItemsToRemove = selectionModel->selectedIndexes(); - TInt deleteCount = mWidgetItemsToRemove.count(); - // start deleting from end of array so that the indexes do not changes of the ones - // at the front. - RArray actualIndex; - RDEBUG("0", 0); - QT_TRAP_THROWING - ( - CleanupClosePushL(actualIndex); - for (TInt index = deleteCount-1; index>= 0 ; --index) - { - TInt selectedItemIndex = mWidgetItemsToRemove[index].row(); - actualIndex.Append(mSelectionIndex[selectedItemIndex]); - } - moveCertList(actualIndex); - CleanupStack::PopAndDestroy(&actualIndex); - ) - } - mListView->deleteLater(); - mListView = NULL; - mSelectAllView->deleteLater(); - mSelectAllView = NULL; - RDEBUG("0", 0); - } - -void CpCertView::selectAll() - { - RDEBUG("0", 0); - if(mSelectAll == EFalse) - { - mListView->selectAll(); - mSelectAll= ETrue; - } - else - { - mListView->clearSelection(); - mSelectAll= EFalse; - } - } - -void CpCertView::deleteCertsL( RArray& indexList ) - { - RDEBUG("0", 0); - TInt count = indexList.Count(); - for(int index = 0;index Label().Ptr(),entry->Label().Length()); - } - else - { - deleteMsg = "Delete %1 items?"; - sCount.setNum(count); - } - RDEBUG("0", 0); - deleteMsg = deleteMsg.arg(sCount); - mNote->setText(deleteMsg); - mNote->setTimeout(HbPopup::NoTimeout); - mNote->open(this,SLOT(handleDeleteDialog(HbAction*))); - -} - -void CpCertView::handleDeleteDialog(HbAction* action) -{ - RDEBUG("0", 0); - TInt count = mIndexList.Count(); - - if (action != mNote->primaryAction() || count == 0 ) - { - return; - } - - RPointerArray errCerts; - QT_TRAP_THROWING( - CleanupClosePushL(errCerts); - - for(TInt index = 0; index < count; ++index) - { - const CCTCertInfo* entry = certAt(mIndexList[index]); - - if( mCertView == EPersonalView || mCertView == EAuthorityView ) - { - mCertDataContainer->iWrapper->DeleteCertL( - mCertDataContainer->CertManager(), *entry ); - } - else if( mCertView == ETrustedView ) - { - mCertDataContainer->iWrapper->DeleteCertL( - mCertDataContainer->CertManager(),*entry, KCMTrustedServerTokenUid ); - } - else if( mCertView == EDeviceView ) - { - mCertDataContainer->iWrapper->DeleteCertL( - mCertDataContainer->CertManager(), *entry, KCMDeviceCertStoreTokenUid ); - } - errCerts.AppendL(entry); - } - RDEBUG("0", 0); - if(errCerts.Count() > 0) - { - QString message("Unable to delete the following certificate: \n"); - TInt count = errCerts.Count(); - for(TInt index=0;indexLabel(); - QString certName = QString((QChar*)certLabel.Ptr(),certLabel.Length()); - message.append(certName).append("\n"); - } - HbMessageBox::warning(message); - } - count = refreshListL(); - refreshView(count); - - CleanupStack::PopAndDestroy(&errCerts); - ) // QT_TRAP_THROWING - - delete mNote; - mNote = NULL; - RDEBUG("0", 0); - } - -const CCTCertInfo* CpCertView::certAt(TInt index) const - { - RDEBUG("0", 0); - CCTCertInfo* currentCert = NULL; - switch(mCertView) - { - case EAuthorityView: - { - currentCert = mCertDataContainer->iCALabelEntries[ index ]->iCAEntry; - break; - } - case ETrustedView: - { - currentCert = mCertDataContainer->iPeerLabelEntries[ index ]->iPeerEntry; - break; - } - case EDeviceView: - { - currentCert = mCertDataContainer->iDeviceLabelEntries[ index ]->iDeviceEntry; - break; - } - case EPersonalView: - { - currentCert = mCertDataContainer->iUserLabelEntries[ index ]->iUserEntry; - break; - } - }; - return currentCert; - } - -QString CpCertView::certLabel(TInt index) const - { - RDEBUG("0", 0); - CpCertManUICertData* certData = NULL; - HBufC* label = NULL; - TInt length = 0; - switch(mCertView) - { - case EAuthorityView: - { - certData = mCertDataContainer->iCALabelEntries[index]; - label = certData->iCAEntryLabel; - length = certData->iCAEntryLabel->Length(); - break; - } - case ETrustedView: - { - certData = mCertDataContainer->iPeerLabelEntries[index]; - label = certData->iPeerEntryLabel; - length = certData->iPeerEntryLabel->Length(); - break; - } - case EPersonalView: - { - certData = mCertDataContainer->iUserLabelEntries[index]; - label = certData->iUserEntryLabel; - length = certData->iUserEntryLabel->Length(); - break; - } - case EDeviceView: - { - certData = mCertDataContainer->iDeviceLabelEntries[index]; - label = certData->iDeviceEntryLabel; - length = certData->iDeviceEntryLabel->Length(); - break; - } - } - return QString((QChar*)label->Des().Ptr(), length); - } - -TInt CpCertView::refreshListL() - { - RDEBUG("0", 0); - TInt count = 0; - switch(mCertView) - { - case EAuthorityView: - mCertDataContainer->RefreshCAEntriesL(); - count = mCertDataContainer->iCALabelEntries.Count(); - break; - case ETrustedView: - mCertDataContainer->RefreshPeerCertEntriesL(); - count = mCertDataContainer->iPeerLabelEntries.Count(); - break; - case EPersonalView: - mCertDataContainer->RefreshUserCertEntriesL(); - count = mCertDataContainer->iUserLabelEntries.Count(); - break; - case EDeviceView: - mCertDataContainer->RefreshDeviceCertEntriesL(); - count = mCertDataContainer->iDeviceLabelEntries.Count(); - break; - }; - return count; - } - - -void CpCertView::refreshView( TInt count ) - { - RDEBUG("0", 0); - if(mRefreshedView) - { - mRefreshedView->deleteLater(); - mRefreshedView = NULL; - } - - mRefreshedView = q_check_ptr(new CpBaseSettingView()); - switch(mCertView) - { - case EAuthorityView: - { - mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_authority_certificate")); - break; - } - case ETrustedView: - { - mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_trusted_site_certific")); - break; - } - case EPersonalView: - { - mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_personal_certificates")); - break; - } - case EDeviceView: - { - mRefreshedView->setTitle(hbTrId("txt_certificate_manager_list_device_certificates")); - break; - } - } - - HbMenu* menu = mRefreshedView->menu(); - RDEBUG("0", 0); - std::auto_ptr endAction( q_check_ptr(new HbAction(hbTrId("txt_common_opt_delete"))) ); - connect(endAction.get(), SIGNAL(triggered()), this, SLOT(deleteList())); - menu->addAction(endAction.get()); - endAction.release(); - - QString title; - if(mCertView == EPersonalView) - { - title = "Move to Device"; - } - else if(mCertView == EDeviceView) - { - title = "Move to Personal"; - } - std::auto_ptr moveAction(q_check_ptr(new HbAction(title))); - connect(moveAction.get(), SIGNAL(triggered()), this, SLOT(moveCert())); - menu->addAction(moveAction.get()); - moveAction.release(); - RDEBUG("0", 0); - std::auto_ptr layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical))); - - HbListWidget* mCertificateList = q_check_ptr(new HbListWidget(this)); - - for(int index = 0; index< count; index++) - { - QString certificateLabel = certLabel(index); - std::auto_ptr singleCert(q_check_ptr(new HbListWidgetItem())); - singleCert->setText(certificateLabel); - mCertificateList->addItem(singleCert.get()); - singleCert.release(); - } // end of for loop - - connect(mCertificateList, SIGNAL(activated(QModelIndex)), this, SLOT(openCertFromList(QModelIndex))); - connect(mCertificateList, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF))); - - layout->addItem(mCertificateList); - RDEBUG("0", 0); - // Refresh current view - QObject::connect(mRefreshedView , SIGNAL(aboutToClose()), this, SLOT(viewDone())); - mPrevView = mainWindow()->currentView(); - mainWindow()->addView(mRefreshedView); - mainWindow()->setCurrentView(mRefreshedView); - mRefreshedView->setLayout(layout.get()); - layout.release(); - RDEBUG("0", 0); - } - - -void CpCertView::viewDone() - { - RDEBUG("0", 0); - mCurrentView = mainWindow()->currentView(); - mCurrentView->deleteLater(); - mCurrentView= NULL; - mainWindow()->setCurrentView(mOriginalView); - } -void CpCertView::showTrustSettings() - { - RDEBUG("0", 0); - mCurrentView = q_check_ptr(new CpCertTrustView(mPos, *mCertDataContainer)); - connect(mCurrentView , SIGNAL(aboutToClose()), this, SLOT(saveTrustSettings())); - mPrevView = mainWindow()->currentView(); - mainWindow()->addView(mCurrentView); - mainWindow()->setCurrentView(mCurrentView); - } - -void CpCertView::saveTrustSettings() - { - ((CpCertTrustView*)mCurrentView)->saveTrustSettings(); - displayPreviousView(); - } - -void CpCertView::moveSelectedCert() - { - RDEBUG("0", 0); - RArray pos; - pos.Append(mPos); - moveCertList(pos); - } - -void CpCertView::moveCertList(RArray& indexList) - { - RDEBUG("0", 0); - mIndexList = indexList; - mNote = new HbMessageBox(HbMessageBox::MessageTypeQuestion); - mNote->setHeadingWidget(q_check_ptr(new HbLabel(hbTrId("txt_certificate_manager_info_move")))); - if( mCertView == EPersonalView ) - { - mNote->setText(hbTrId("txt_certificate_manager_info_device_certificates_c")); - } - else if( mCertView == EDeviceView ) - { - mNote->setText("Use of Personal certificates may require user confirmation. Proceed?"); - } - - mNote->setTimeout(HbPopup::NoTimeout); - mNote->setIconVisible (EFalse); - mNote->open(this,SLOT(handleMoveDialog(HbAction*))); - RDEBUG("0", 0); -} - -void CpCertView::handleMoveDialog(HbAction* action) -{ - RDEBUG("0", 0); - if (action != mNote->primaryAction()) - { - return; - } - - TInt count = mIndexList.Count(); - - for(TInt index = 0 ; index < count; ++index) - { - CCTCertInfo* entry = NULL; - if(mCertView == EPersonalView) - { - entry = mCertDataContainer->iUserLabelEntries[ mIndexList[index] ]->iUserEntry; - } - else if(mCertView == EDeviceView) - { - entry = mCertDataContainer->iDeviceLabelEntries[ mIndexList[index] ]->iDeviceEntry; - } - - // Move key first - TCTKeyAttributeFilter keyFilter; - keyFilter.iKeyId = entry->SubjectKeyId(); - keyFilter.iPolicyFilter = TCTKeyAttributeFilter::EAllKeys; - RDEBUG("0", 0); - TUid sourceCertStoreUid = TUid::Uid(0); - TUid targetCertStoreUid = TUid::Uid(0); - TUid sourceKeyStoreUid = TUid::Uid(0); - TUid targetKeyStoreUid = TUid::Uid(0); - - if(mCertView == EPersonalView) - { - sourceKeyStoreUid = KCMFileKeyStoreTokenUid; - targetKeyStoreUid = KCMDeviceKeyStoreTokenUid; - sourceCertStoreUid = KCMFileCertStoreTokenUid; - targetCertStoreUid = KCMDeviceCertStoreTokenUid; - } - else if(mCertView == EDeviceView) - { - sourceKeyStoreUid = KCMDeviceKeyStoreTokenUid; - targetKeyStoreUid = KCMFileKeyStoreTokenUid; - sourceCertStoreUid = KCMDeviceCertStoreTokenUid; - targetCertStoreUid = KCMFileCertStoreTokenUid; - } - RDEBUG("0", 0); - try - { - - QT_TRAP_THROWING( mCertDataContainer->iWrapper->MoveKeyL( - mCertDataContainer->KeyManager(), keyFilter, sourceKeyStoreUid, targetKeyStoreUid )); - - // Move certificate - QT_TRAP_THROWING( mCertDataContainer->iWrapper->MoveCertL( - mCertDataContainer->CertManager(), *entry, sourceCertStoreUid, targetCertStoreUid ) ); - - } - catch(const std::exception& exception) - { - QString error(exception.what()); - QT_TRAP_THROWING(mCertDataContainer->ShowErrorNoteL( error.toInt() )); - User::Exit( KErrNone ); - } - RDEBUG("0", 0); - try - { - if(mCertView == EPersonalView) - { - QT_TRAP_THROWING( mCertDataContainer->RefreshUserCertEntriesL() ); - } - else if(mCertView == EDeviceView) - { - QT_TRAP_THROWING( mCertDataContainer->RefreshDeviceCertEntriesL() ); - } - } - catch(const std::exception& exception) - { - QString error(exception.what()); - if ( error.toInt() == KErrCorrupt ) - { - QT_TRAP_THROWING(mCertDataContainer->ShowErrorNoteL( error.toInt()) ); - User::Exit( KErrNone ); - } - // have to call straight away the Exit - // showing any error notes would corrupt the display - User::Exit( error.toInt() ); - } - } // for - // Refresh current view - QT_TRAP_THROWING(refreshView(refreshListL())); - delete mNote; - mNote = NULL; - RDEBUG("0", 0); - } -