diff -r 000000000000 -r 16d8024aca5e src/hbplugins/devicedialogs/deviceprogressdialogplugin/hbdeviceprogressdialogwidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hbplugins/devicedialogs/deviceprogressdialogplugin/hbdeviceprogressdialogwidget.cpp Mon Apr 19 14:02:13 2010 +0300 @@ -0,0 +1,287 @@ +/**************************************************************************** +** +** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (developer.feedback@nokia.com) +** +** This file is part of the HbPlugins module of the UI Extensions for Mobile. +** +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at developer.feedback@nokia.com. +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include "hbdeviceprogressdialogwidget_p.h" +#include "hbdeviceprogressdialogpluginerrors_p.h" + +// Constructor +HbDeviceProgressDialogWidget::HbDeviceProgressDialogWidget(HbProgressDialog::ProgressDialogType progressDialogType, + const QVariantMap ¶meters) : HbProgressDialog(progressDialogType) +{ + TRACE_ENTRY + mLastError = NoError; + mProgressDialogType = progressDialogType; + mShowEventReceived = false; + mPrimaryAction = 0; + resetProperties(); + constructDialog(parameters); + if (!mPrimaryAction) { + // If HbProgressDialog default button is used, connect into its triggered signal. + HbAction *action = primaryAction(); + if (action) { + connect(action, SIGNAL(triggered()), SLOT(primaryActionTriggered())); + } + } + setBackgroundFaded(true); + TRACE_EXIT +} + +// Destructor +HbDeviceProgressDialogWidget::~HbDeviceProgressDialogWidget() +{ + delete mPrimaryAction; +} + +// Set parameters +bool HbDeviceProgressDialogWidget::setDeviceDialogParameters(const QVariantMap ¶meters) +{ + TRACE_ENTRY + mLastError = NoError; + bool ret(false); + if (checkProperties(parameters)) { + setProperties(parameters); + ret = true; + } else { + mLastError = ParameterError; + ret = false; + } + TRACE_EXIT + return ret; +} + +// Get error +int HbDeviceProgressDialogWidget::deviceDialogError() const +{ + TRACE_ENTRY + TRACE_EXIT + return mLastError; +} + +// Close device dialog +void HbDeviceProgressDialogWidget::closeDeviceDialog(bool byClient) +{ + TRACE_ENTRY + Q_UNUSED(byClient); + cancel(); + // If show event has been received, close is signalled from hide event. If not, + // hide event does not come and close is signalled from here. + if (!mShowEventReceived) { + emit deviceDialogClosed(); + } + TRACE_EXIT +} + +// Return display widget +HbDialog *HbDeviceProgressDialogWidget::deviceDialogWidget() const +{ + TRACE_ENTRY + TRACE_EXIT + return const_cast(this); +} + +// Get dialog type from parameters +bool HbDeviceProgressDialogWidget::getDialogType(HbProgressDialog::ProgressDialogType &progressDialogType, + QVariantMap ¶meters) +{ + TRACE_STATIC_ENTRY + const char *key = "progressDialogType"; + progressDialogType = HbProgressDialog::WaitDialog; + bool dialogTypeOk = true; + QVariantMap::const_iterator i = parameters.find(key); + if (i != parameters.constEnd()) { + progressDialogType = static_cast(i.value().toInt(&dialogTypeOk)); + dialogTypeOk = dialogTypeOk && progressDialogType >= HbProgressDialog::ProgressDialog && + progressDialogType <= HbProgressDialog::WaitDialog; + parameters.remove(key); + } + TRACE_EXIT + return dialogTypeOk; +} + +// Construct device dialog +bool HbDeviceProgressDialogWidget::constructDialog(const QVariantMap ¶meters) +{ + TRACE_ENTRY + bool ret(false); + // Check that parameters are valid + if (!checkProperties(parameters)) { + mLastError = ParameterError; + ret = false; + } else { + setProperties(parameters); + ret = true; + } + TRACE_EXIT + return ret; +} + +// Check that device dialog parameters are valid +bool HbDeviceProgressDialogWidget::checkProperties(const QVariantMap ¶meters) +{ + TRACE_ENTRY + QVariantMap::const_iterator i = parameters.constBegin(); + while (i != parameters.constEnd()) { + QByteArray key = i.key().toAscii(); + if (!property(key.constData()).isValid()) { + TRACE_EXIT + return false; + } + ++i; + } + TRACE_EXIT + return true; +} + +// Set properties +void HbDeviceProgressDialogWidget::setProperties(const QVariantMap ¶meters) +{ + TRACE_ENTRY + QVariantMap::const_iterator i = parameters.constBegin(); + while (i != parameters.constEnd()) { + QByteArray key = i.key().toAscii(); + if (property(key.constData()).isValid()) { + setProperty(key.constData(), i.value()); + } + ++i; + } + TRACE_EXIT + return; +} + +// Reset properties to default values +void HbDeviceProgressDialogWidget::resetProperties() +{ + TRACE_ENTRY + mIconName.clear(); + setModal(true); + setTimeout(HbPopup::NoTimeout); + setDismissPolicy(HbPopup::NoDismiss); + TRACE_EXIT + return; +} + +QString HbDeviceProgressDialogWidget::iconName() const +{ + return mIconName; +} + +void HbDeviceProgressDialogWidget::setIconName(QString &iconName) +{ + TRACE_ENTRY + if (mIconName != iconName) { + mIconName = iconName; + setIcon(HbIcon(mIconName)); + } + TRACE_EXIT + return; +} + +QString HbDeviceProgressDialogWidget::primaryActionText() const +{ + HbAction *action = primaryAction(); + return action ? action->text() : QString(); +} + +void HbDeviceProgressDialogWidget::setPrimaryActionText(QString &actionText) +{ + TRACE_ENTRY + HbAction *action = primaryAction(); + if (action) { + action->setText(actionText); + } else { + if (!mPrimaryAction) { + mPrimaryAction = new HbAction(actionText); + connect(mPrimaryAction, SIGNAL(triggered()), this, SLOT(primaryActionTriggered())); + } else { + mPrimaryAction->setText(actionText); + } + setPrimaryAction(mPrimaryAction); + } + TRACE_EXIT +} + +bool HbDeviceProgressDialogWidget::primaryActionNull() const +{ + return primaryAction() == 0; +} + +void HbDeviceProgressDialogWidget::setPrimaryActionNull(bool isNull) +{ + TRACE_ENTRY + if (isNull) { + // If there is a message box's default action, disconnect from it. + HbAction *action = primaryAction(); + if (action && mPrimaryAction == 0) { + action->disconnect(SIGNAL(triggered()), this, SLOT(primaryActionTriggered())); + } + setPrimaryAction(0); + } else { + QString text = mPrimaryAction ? mPrimaryAction->text() : QString(); + setPrimaryActionText(text); + } + TRACE_EXIT +} + +QString HbDeviceProgressDialogWidget::animationDefinition() const +{ + return mAnimationDefinition; +} + +void HbDeviceProgressDialogWidget::setAnimationDefinition(QString &animationDefinition) +{ + // Load animation definition + HbIconAnimationManager *manager = HbIconAnimationManager::global(); + manager->addDefinitionFile(animationDefinition); + mAnimationDefinition = animationDefinition; +} + +// Widget is about to hide. Closing effect has ended. +void HbDeviceProgressDialogWidget::hideEvent(QHideEvent *event) +{ + HbProgressDialog::hideEvent(event); + emit deviceDialogClosed(); +} + +// Widget is about to show +void HbDeviceProgressDialogWidget::showEvent(QShowEvent *event) +{ + HbProgressDialog::showEvent(event); + mShowEventReceived = true; +} + +// Primary action triggered +void HbDeviceProgressDialogWidget::primaryActionTriggered() +{ + TRACE_ENTRY + QVariantMap data; + data.insert("act", "p"); + emit deviceDialogData(data); + TRACE_EXIT +}