--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/hbdeviceinputdialogplugin/src/hbdeviceinputdialogwidget.cpp Tue Aug 31 15:24:25 2010 +0300
@@ -0,0 +1,378 @@
+/****************************************************************************
+ * 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 <hbaction.h>
+#include <hbdialog.h>
+#include <hbinputdialog.h>
+#include<hblineedit.h>
+#include <hbiconanimationmanager.h>
+#include "hbdeviceinputdialogwidget_p.h"
+#include "hbdeviceinputdialogpluginerrors_p.h"
+
+//For Localization
+QString LOCALE_PATH("/resource/qt/translations/");
+QString TS_FILE("filemanager");
+
+// Constructor
+HbDeviceInputDialogWidget::HbDeviceInputDialogWidget(const QVariantMap ¶meters):HbInputDialog()
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::Constructor:Begin") ) );
+ mLastError = NoError;
+ mShowEventReceived = false;
+ mPrimaryAction = 0;
+ mSecondaryAction = 0;
+ mDeviceDialogError =0;
+ mHack = 1;
+ //resetProperties();
+ if (preConstructDialog())
+ {
+ //Translator loaded succesfully then olny construct widgets
+ constructDialog(parameters);
+ if (!mPrimaryAction) {
+ // If default button provided by HbInputDialog is used, connect into its triggered signal.
+ QAction *action = /*primaryAction()*/this->actions().first();
+ if (action) {
+ connect(action, SIGNAL(triggered()), SLOT(primaryActionTriggered()));
+ }
+ }
+ if (!mSecondaryAction) {
+ // If default button provided by HbInputDialog is used, connect into its triggered signal.
+ QAction *action = /*secondaryAction()*/ this->actions().at(1);
+ if (action) {
+ connect(action, SIGNAL(triggered()), SLOT(secondaryActionTriggered()));
+ }
+ }
+ connect(this, SIGNAL(visibilityChanged()), SLOT(closeDialog()));
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::Constructor:End") ) );
+}
+
+// Destructor
+HbDeviceInputDialogWidget::~HbDeviceInputDialogWidget()
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::Destrcuctor:Begin") ) );
+ delete mPrimaryAction;
+ delete mSecondaryAction;
+ delete mHbTranslator;
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::Destructor:End") ) );
+}
+
+// Set parameters
+bool HbDeviceInputDialogWidget::setDeviceDialogParameters(const QVariantMap ¶meters)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setDeviceDialogParameters:Begin") ) );
+ mLastError = NoError;
+ bool ret(false);
+ if (checkProperties(parameters)) {
+ setProperties(parameters);
+ ret = true;
+ }
+ else {
+ mLastError = ParameterError;
+ ret = false;
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setDeviceDialogParameters:End") ) );
+ return ret;
+}
+
+/**
+ * Before creating widgets Translator must be loaded
+ */
+bool HbDeviceInputDialogWidget::preConstructDialog()
+ {
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::preConstructDialog:Begin") ) );
+ //Translator
+ mHbTranslator = new HbTranslator(LOCALE_PATH,TS_FILE);
+ if(!mHbTranslator)
+ {
+ //Translator is failed to create
+ mDeviceDialogError = UnknownDeviceDialogError;
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::preConstructDialog:MemoryAllocation Failed") ) );
+ return false;
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::preConstructDialog:End") ) );
+ return true;
+ }
+
+// Get error
+int HbDeviceInputDialogWidget::deviceDialogError() const
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::deviceDialogError:Begin") ) );
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::deviceDialogError:End") ) );
+ return mLastError;
+}
+
+// Close device dialog
+void HbDeviceInputDialogWidget::closeDeviceDialog(bool byClient)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::closeDeviceDialog:Begin") ) );
+ Q_UNUSED(byClient);
+ // Closed by client or internally by server -> no action to be transmitted.
+ mSendAction = false;
+ close();
+ // 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();
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::closeDeviceDialog:End") ) );
+}
+
+// Return display widget
+HbDialog *HbDeviceInputDialogWidget::deviceDialogWidget() const
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::deviceDialogWidget:Begin") ) );
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::deviceDialogWidget:End") ) );
+ return const_cast<HbDeviceInputDialogWidget*>(this);
+}
+
+
+// Construct dialog
+bool HbDeviceInputDialogWidget::constructDialog(const QVariantMap ¶meters)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::constructDialog:Begin") ) );
+ bool ret(false);
+ // Check that parameters are valid
+
+ if (!checkProperties(parameters)) {
+ mLastError = ParameterError;
+ ret = false;
+ }
+ else {
+ setProperties(parameters);
+ resetProperties();
+ ret = true;
+ }
+
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::constructDialog:End") ) );
+ return ret;
+}
+
+// Check that device dialog parameters are valid
+bool HbDeviceInputDialogWidget::checkProperties(const QVariantMap ¶meters)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::checkProperties:Begin") ) );
+ QVariantMap::const_iterator i = parameters.constBegin();
+ while (i != parameters.constEnd()) {
+ QByteArray key = i.key().toAscii();
+ if (!property(key.constData()).isValid()) {
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::checkProperties:End :: returning false") ) );
+ return false;
+ }
+ ++i;
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::checkProperties:End :: returning true") ) );
+ return true;
+}
+
+// Set properties
+void HbDeviceInputDialogWidget::setProperties(const QVariantMap ¶meters)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setProperties:Begin") ) );
+ 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;
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setProperties:End") ) );
+ return;
+}
+
+// Reset properties to default values
+void HbDeviceInputDialogWidget::resetProperties()
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::resetProperties:Begin") ) );
+// mIconName.clear();
+ setModal(true);
+ setPromptText(hbTrId("txt_common_dialog_password"), 0);
+ setInputMode(TextInput,0);
+ setEchoMode(HbLineEdit::Password,0);
+ setTimeout(HbPopup::NoTimeout);
+ setDismissPolicy(HbPopup::NoDismiss);
+
+ mPrimaryActionNull = false;
+ mSecondaryActionNull = false;
+ mSendAction = true;
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::resetProperties:End") ) );
+ return;
+}
+
+QString HbDeviceInputDialogWidget::primaryActionText() const
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::primaryActionText:Begin") ) );
+ QAction *action = /*primaryAction()*/this->actions().first();
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::primaryActionText:End") ) );
+ return action ? action->text() : QString();
+}
+
+void HbDeviceInputDialogWidget::setPrimaryActionText(QString &actionText)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setPrimaryActionText:Begin") ) );
+ QAction *action = /*primaryAction()*/this->actions().first();
+ 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);
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setPrimaryActionText:End") ) );
+}
+
+QString HbDeviceInputDialogWidget::secondaryActionText() const
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::secondaryActionText:Begin") ) );
+ QAction *action = /*secondaryAction()*/ this->actions().at(1);
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::secondaryActionText:End") ) );
+ return action ? action->text() : QString();
+
+}
+
+void HbDeviceInputDialogWidget::setSecondaryActionText(QString &actionText)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setSecondaryActionText:Begin") ) );
+ QAction *action = /*secondaryAction()*/ this->actions().at(1);
+ if (action) {
+ action->setText(actionText);
+ } else {
+ if (!mSecondaryAction) {
+ mSecondaryAction = new HbAction(actionText);
+ connect(mSecondaryAction, SIGNAL(triggered()), this, SLOT(secondaryActionTriggered()));
+ } else {
+ mSecondaryAction->setText(actionText);
+ }
+ setSecondaryAction(mSecondaryAction);
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setSecondaryActionText:End") ) );
+}
+
+bool HbDeviceInputDialogWidget::primaryActionNull() const
+{
+ return this->actions().first() == 0;
+}
+
+void HbDeviceInputDialogWidget::setPrimaryActionNull(bool isNull)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setPrimaryActionNull:Begin") ) );
+ if (isNull) {
+ // If there is a message box's default action, disconnect from it.
+ QAction *action = /*primaryAction()*/this->actions().first();
+ if (action && mPrimaryAction == 0) {
+ action->disconnect(SIGNAL(triggered()), this, SLOT(primaryActionTriggered()));
+ }
+ setPrimaryAction(0);
+ } else {
+ QString text = mPrimaryAction ? mPrimaryAction->text() : QString();
+ setPrimaryActionText(text);
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setPrimaryActionNull:End") ) );
+}
+
+bool HbDeviceInputDialogWidget::secondaryActionNull() const
+{
+ return this->actions().at(1) == 0;
+}
+
+void HbDeviceInputDialogWidget::setSecondaryActionNull(bool isNull)
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setSecondaryActionNull:Begin") ) );
+ if (isNull) {
+ // If there is a message box's default action, disconnect from it.
+ QAction *action = /*secondaryAction()*/ this->actions().at(1);
+ if (action && mSecondaryAction == 0) {
+ action->disconnect(SIGNAL(triggered()), this, SLOT(secondaryActionTriggered()));
+ }
+ setSecondaryAction(0);
+ } else {
+ QString text = mSecondaryAction ? mSecondaryAction->text() : QString();
+ setSecondaryActionText(text);
+ }
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::setSecondaryActionNull:End") ) );
+}
+
+// Widget is about to hide. Closing effect has ended.
+void HbDeviceInputDialogWidget::hideEvent(QHideEvent *event)
+{
+ Q_UNUSED(event);
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::hideEvent:Begin") ) );
+ HbInputDialog::hideEvent(event);
+ emit deviceDialogClosed();
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::hideEvent:End") ) );
+}
+
+// Widget is about to show
+void HbDeviceInputDialogWidget::showEvent(QShowEvent *event)
+{
+ Q_UNUSED(event);
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::showEvent:Begin") ) );
+ HbInputDialog::showEvent(event);
+ mShowEventReceived = true;
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::showEvent:End") ) );
+}
+
+void HbDeviceInputDialogWidget::setAnimationDefinition(QString &animationDefinition)
+{
+ mAnimationDefinition = animationDefinition;
+}
+
+QString HbDeviceInputDialogWidget::animationDefinition() const
+{
+ return mAnimationDefinition;
+}
+
+// Primary action triggered
+void HbDeviceInputDialogWidget::primaryActionTriggered()
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::primaryActionTriggered:Begin") ) );
+ //Get the string enter by user
+ QString myString = this->value().toString();
+ data.insert("ok",myString);
+ emit deviceDialogData(data);
+ mSendAction = true;
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::primaryActionTriggered:End") ) );
+}
+
+// Secondary action triggered
+void HbDeviceInputDialogWidget::secondaryActionTriggered()
+{
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::secondaryActionTriggered:Begin") ) );
+ data.insert("cancel","cancel");
+ emit deviceDialogData(data);
+ mSendAction = false;
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::secondaryActionTriggered:End") ) );
+}
+
+
+// Close Dialog when visibility changed
+void HbDeviceInputDialogWidget::closeDialog()
+ {
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::closeDialog:Begin") ) );
+ if(mHack == 1)
+ {
+ emit deviceDialogData(data); // first time plugin didnt called deviceDialogData and hence this hack added.
+ }
+ emit deviceDialogClosed();
+ TRACES( RDebug::Print( _L("HbDeviceInputDialogWidget::closeDialog:End") ) );
+ mHack = 0;
+ }