diff -r 3255e7d5bd67 -r 989397f9511c cpsecplugins/cpadvancedsecplugin/src/advsecsettingsviewbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpsecplugins/cpadvancedsecplugin/src/advsecsettingsviewbase.cpp Thu Oct 14 13:56:11 2010 +0300 @@ -0,0 +1,170 @@ +/* +* 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: Base class for advanced security settings views +* +*/ + +#include "advsecsettingsviewbase.h" +#include +#include +#include +#include + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::AdvSecSettingsViewBase() +// --------------------------------------------------------------------------- +// +AdvSecSettingsViewBase::AdvSecSettingsViewBase(QGraphicsWidget *widget, + QGraphicsItem *parent) : CpBaseSettingView(widget, parent), mPreviousView(0), + mItemSpecificMenu(0), mDeleteOnClose(false) +{ + connect(this, SIGNAL(aboutToClose()), this, SLOT(displayPreviousView())); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::AdvSecSettingsViewBase() +// --------------------------------------------------------------------------- +// +AdvSecSettingsViewBase::~AdvSecSettingsViewBase() +{ + delete mItemSpecificMenu; + mItemSpecificMenu = 0; +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::displayPreviousView() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::displayPreviousView() +{ + if (mPreviousView) { + HbMainWindow &window = *mainWindow(); + HbView *currentView = window.currentView(); + window.setCurrentView(mPreviousView); + mPreviousView = 0; + if (mDeleteOnClose) { + window.removeView(currentView); + currentView->deleteLater(); + } + } +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::displayError() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::displayError(int error) +{ + HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning); + messageBox->setAttribute(Qt::WA_DeleteOnClose); + messageBox->setStandardButtons(HbMessageBox::Ok); + + // TODO: proper error texts, localised UI texts needed + QString text = tr("Error %1").arg(error); + messageBox->setText(text); + messageBox->open(); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::displayView() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::displayView(AdvSecSettingsViewBase *view) +{ + HbMainWindow &window = *mainWindow(); + QList addedViews = window.views(); + if (!addedViews.contains(view)) { + window.addView(view); + } + view->mPreviousView = window.currentView(); + window.setCurrentView(view); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::hasPreviousView() +// --------------------------------------------------------------------------- +// +bool AdvSecSettingsViewBase::hasPreviousView() const +{ + return (mPreviousView != 0); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::setDeleteOnClose() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::setDeleteOnClose(bool deleteOnClose) +{ + mDeleteOnClose = deleteOnClose; +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::clearItemSpecificMenu() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::clearItemSpecificMenu() +{ + if (!mItemSpecificMenu) { + mItemSpecificMenu = new HbMenu; + } else { + mItemSpecificMenu->clearActions(); + } +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::addItemSpecificMenuAction() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::addItemSpecificMenuAction(const QString &text, + const QObject *receiver, const char *member) +{ + HbAction *action = new HbAction(text); + connect(action, SIGNAL(triggered()), receiver, member); + mItemSpecificMenu->addAction(action); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::displayItemSpecificMenu() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::displayItemSpecificMenu(const QPointF &position) +{ + mItemSpecificMenu->setPreferredPos(position); + mItemSpecificMenu->open(); +} + +// --------------------------------------------------------------------------- +// AdvSecSettingsViewBase::displayQuestionNote() +// --------------------------------------------------------------------------- +// +void AdvSecSettingsViewBase::displayQuestionNote(const QString &text, + const QObject *receiver, const char *accepedMember) +{ + HbMessageBox *messageBox = new HbMessageBox; + messageBox->setAttribute(Qt::WA_DeleteOnClose); + + messageBox->clearActions(); + HbAction *yesAction = new HbAction(hbTrId("txt_common_button_yes")); + connect(yesAction, SIGNAL(triggered()), receiver, accepedMember); + messageBox->addAction(yesAction); + HbAction *noAction = new HbAction(hbTrId("txt_common_button_no")); + messageBox->addAction(noAction); + + messageBox->setText(text); + messageBox->open(); +} +