diff -r 63339781d179 -r 09b1ac925e3f cpsecplugins/cpadvancedsecplugin/src/cpmoduleview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpsecplugins/cpadvancedsecplugin/src/cpmoduleview.cpp Tue Aug 31 16:04:40 2010 +0300 @@ -0,0 +1,364 @@ +/* +* 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 <../../inc/cpsecplugins.h> +#include "cpmoduleview.h" +#include "cpsecmodmodel.h" +#include "cpsecmodview.h" + +CpModuleView::CpModuleView( CpSecModView::TSecModViews currentView, + CSecModUIModel& secModUIModel, + QGraphicsItem *parent /*= 0*/ ) +: CpBaseSettingView(0,parent), + mCurrentView(currentView), + mSecModUIModel(secModUIModel) + { + RDEBUG("0", 0); + QString title = mSecModUIModel.TokenLabelForTitle(); + setTitle(title); + + mContextMenu = (q_check_ptr(new HbMenu())); + + if(currentView == CpSecModView::EAccessView) + { + showAccessView(); + } + else if(currentView == CpSecModView::ESignatureView) + { + showSignatureView(ETrue); + } + } + +CpModuleView::~CpModuleView() + {} + +void CpModuleView::showAccessView() + { + RDEBUG("0", 0); + HbMenu* menu = this->menu(); + std::auto_ptr endAction(q_check_ptr(new HbAction("Module Info"))); + connect(endAction.get(), SIGNAL(triggered()), this, SLOT(saveProv())); + + menu->addAction(endAction.get()); + endAction.release(); + + std::auto_ptr layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical))); + + std::auto_ptr form(q_check_ptr(new HbDataForm())); + std::auto_ptr formModel(q_check_ptr(new HbDataFormModel())); + form->setModel(formModel.get()); + formModel.release(); + + QString titleName; + if (mSecModUIModel.KeyStoreUID() == KTokenTypeFileKeystore) + { + titleName = "Phone key store code"; + } + else + { + const TDesC& label = mSecModUIModel.AuthObj(KPinGSettIndex).Label(); + titleName = QString((QChar*)label.Ptr(), label.Length()); + } + RDEBUG("0", 0); + HbListWidget* accessDetails = q_check_ptr(new HbListWidget(this)); + + std::auto_ptr codeLabel(q_check_ptr(new HbListWidgetItem())); + codeLabel->setText(titleName); + accessDetails->addItem(codeLabel.get()); + codeLabel.release(); + + std::auto_ptr codeText(q_check_ptr(new HbListWidgetItem())); + codeText->setText("****"); + accessDetails->addItem(codeText.get()); + codeText.release(); + + std::auto_ptr requestLabel(q_check_ptr(new HbListWidgetItem())); + requestLabel->setText("Access Code Request"); + accessDetails->addItem(requestLabel.get()); + requestLabel.release(); + + TUint32 status = mSecModUIModel.AuthStatus(KPinGSettIndex); + std::auto_ptr requestText(q_check_ptr(new HbListWidgetItem())); + requestText->setText("Off"); + if (status & EEnabled) + { + requestText->setText("On"); + } + accessDetails->addItem(requestText.get()); + requestText.release(); + RDEBUG("0", 0); + std::auto_ptr statusLabel(q_check_ptr(new HbListWidgetItem())); + statusLabel->setText("Status"); + accessDetails->addItem(statusLabel.get()); + statusLabel.release(); + + std::auto_ptr statusText(q_check_ptr(new HbListWidgetItem())); + QString pinStatus = mSecModUIModel.PINStatus(KPinGSettIndex, ETrue); + statusText->setText(pinStatus); + accessDetails->addItem(statusText.get()); + statusText.release(); + + connect(accessDetails, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF))); + connect(formModel.get(), SIGNAL(activated(QModelIndex)), this, SLOT(handleAccessView(QModelIndex))); + + layout->addItem(accessDetails); + layout->addItem(form.get()); + form.release(); + setLayout(layout.get()); + layout.release(); + RDEBUG("0", 0); + } + +void CpModuleView::showSignatureView(TBool showBlockedNote) + { + RDEBUG("0", 0); + mCurrentView = CpSecModView::ESignatureView; + std::auto_ptr layout(q_check_ptr(new QGraphicsLinearLayout(Qt::Vertical))); + std::auto_ptr form(q_check_ptr(new HbDataForm())); + std::auto_ptr formModel(q_check_ptr(new HbDataFormModel())); + + QVector< QPair > authDetails = mSecModUIModel.AuthDetails(); + QVectorIterator< QPair > authDetailsIter(authDetails); + + HbListWidget* accessDetails = q_check_ptr(new HbListWidget(this)); + + while(authDetailsIter.hasNext()) + { + QPair pair = authDetailsIter.next(); + QString label = pair.first; + TUint32 status = pair.second; + QString blockedDetails = NULL; + if ( status & EAuthObjectBlocked) + { + if (showBlockedNote) + { + QString totalBlocked(" is blocked. PUK code is needed to unblock the code"); + if (status & EUnblockDisabled) + { + totalBlocked = " totalblocked, contact your module vendor."; + } + totalBlocked.prepend(label); + HbMessageBox::information(totalBlocked); + } + blockedDetails = label.append(" Blocked"); + RDEBUG("0", 0); + std::auto_ptr statusLabel(q_check_ptr(new HbListWidgetItem())); + statusLabel->setText(tr("Status")); + accessDetails->addItem(statusLabel.get()); + statusLabel.release(); + + std::auto_ptr statusText(q_check_ptr(new HbListWidgetItem())); + QString pinStatus = mSecModUIModel.PINStatus(KPinNrSettIndex, ETrue); + statusText->setText(pinStatus); + accessDetails->addItem(statusText.get()); + statusText.release(); + } + else + { + std::auto_ptr unblockedLabel(q_check_ptr(new HbListWidgetItem())); + unblockedLabel->setText(label); + accessDetails->addItem(unblockedLabel.get()); + unblockedLabel.release(); + + std::auto_ptr unblockedText(q_check_ptr(new HbListWidgetItem())); + unblockedText->setText("****"); + accessDetails->addItem(unblockedText.get()); + unblockedText.release(); + } + } + form->setModel(formModel.get()); + formModel.release(); + layout->addItem(accessDetails); + + connect(accessDetails, SIGNAL(longPressed(HbAbstractViewItem*, QPointF )), this, SLOT(indicateLongPress(HbAbstractViewItem*, QPointF))); + connect(formModel.get(), SIGNAL(activated(QModelIndex)), this, SLOT(handleSigView())); + + layout->addItem(form.get()); + form.release(); + setLayout(layout.get()); + layout.release(); + RDEBUG("0", 0); + } + +void CpModuleView::indicateLongPress(HbAbstractViewItem *item,QPointF coords) + { + RDEBUG("0", 0); + try + { + mContextMenu->clearActions(); + mPos = item->modelIndex().row(); + + if(mCurrentView == CpSecModView::EAccessView) + { + if( mPos == EIndexCodeLabel && mSecModUIModel.PinChangeable(KPinGSettIndex) + || mPos == EIndexCodeRequest && mSecModUIModel.PinRequestChangeable(KPinGSettIndex) + || mPos == EIndexCodeStatus ) + { + std::auto_ptr changePIN(q_check_ptr(new HbAction("Change"))); + connect(changePIN.get(), SIGNAL(triggered()), this, SLOT( handleAccessView())); + mContextMenu->addAction(changePIN.get()); + changePIN.release(); + } + if( mSecModUIModel.PinUnblockable(KPinGSettIndex) ) + { + std::auto_ptr unblockPIN(q_check_ptr(new HbAction("Unblock"))); + connect(unblockPIN.get(), SIGNAL(triggered()), this, SLOT( handleAccessView())); + mContextMenu->addAction(unblockPIN.get()); + unblockPIN.release(); + } + if( mSecModUIModel.PinOpen(KPinGSettIndex) ) + { + std::auto_ptr closePIN(q_check_ptr(new HbAction("Close"))); + connect(closePIN.get(), SIGNAL(triggered()), this, SLOT( handleAccessView())); + mContextMenu->addAction(closePIN.get()); + closePIN.release(); + } + } + else if(mCurrentView == CpSecModView::ESignatureView) + { + if (mSecModUIModel.PinChangeable(KPinNrSettIndex)) + { + std::auto_ptr changePIN(q_check_ptr(new HbAction("Change"))); + connect(changePIN.get(), SIGNAL(triggered()), this, SLOT( handleSigViewCommand())); + mContextMenu->addAction(changePIN.get()); + changePIN.release(); + } + if (mSecModUIModel.PinUnblockable(KPinNrSettIndex)) + { + std::auto_ptr unblockPIN(q_check_ptr(new HbAction("Unblock"))); + connect(unblockPIN.get(), SIGNAL(triggered()), this, SLOT( handleSigViewCommand())); + mContextMenu->addAction(unblockPIN.get()); + unblockPIN.release(); + } + } + + mContextMenu->setPreferredPos(coords); + mContextMenu->open(); + } + catch(const std::exception& exception) + { + HbMessageBox::information(exception.what()); + } + RDEBUG("0", 0); + } + +void CpModuleView::handleAccessView( const QModelIndex& modelIndex ) + { + RDEBUG("0", 0); + try + { + mPos = modelIndex.row(); + handleAccessView(); + } + catch(const std::exception& exception) + { + HbMessageBox::information(exception.what()); + } + } + +void CpModuleView::handleAccessView() + { + RDEBUG("0", 0); + try + { + if(mPos == EIndexCodeLabel) + { + QT_TRAP_THROWING(mSecModUIModel.ChangeOrUnblockPinL(KPinGSettIndex)); + } + else if(mPos == EIndexCodeRequest) + { + if (KErrCancel == mSecModUIModel.ChangeCodeRequest(KPinGSettIndex)) + { + return; + } + } + else if ( mPos == EIndexCodeStatus) + { + QT_TRAP_THROWING(mSecModUIModel.CloseAuthObjL(KPinGSettIndex)); + } + showAccessView(); + } + catch(const std::exception& exception) + { + HbMessageBox::information(exception.what()); + } + } + +void CpModuleView::handleSigView() + { + RDEBUG("0", 0); + try + { + QT_TRAP_THROWING(mSecModUIModel.ChangeOrUnblockPinL(KPinNrSettIndex)); + showSignatureView(EFalse); + } + catch(const std::exception& exception) + { + HbMessageBox::information(exception.what()); + } + } + +void CpModuleView::handleSigViewCommand() + { + RDEBUG("0", 0); + try + { + switch(mPos) + { + case ESecModUICmdChange: + QT_TRAP_THROWING(mSecModUIModel.ChangePinNrL(mPos)); + showSignatureView(EFalse); + break; + case ESecModUICmdUnblock: + QT_TRAP_THROWING(mSecModUIModel.UnblockPinNrL(mPos)); + showSignatureView(EFalse); + break; + }; + } + catch(const std::exception& exception) + { + HbMessageBox::information(exception.what()); + } + } + +