--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/satui/satapp/src/satappinputprovider.cpp Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,636 @@
+/*
+* 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: Provides input methods like query dialogs
+*
+*/
+
+// qt
+#include <QTimer>
+#include <QtDebug>
+// hb
+#include <hbglobal.h>
+#include <hbinputdialog.h>
+#include <hbinputeditorinterface.h>
+#include <hbinputstandardfilters.h>
+#include <hbmessagebox.h>
+#include <hblabel.h>
+#include <hbaction.h>
+// satapp
+#include "satappinputprovider.h"
+#include "satappconstant.h"
+#include "satappaction.h"
+
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::SatAppInputProvider
+// ----------------------------------------------------------------------------
+//
+SatAppInputProvider::SatAppInputProvider(QObject *parent)
+ : QObject(parent), mCurrentAction(0), mCurrentDialog(0)
+{
+ qDebug("SATAPP: SatAppInputProvider::SatAppInputProvider >");
+ mDurationTimer = new QTimer(this);
+ qDebug("SATAPP: SatAppInputProvider::SatAppInputProvider <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::~SatAppInputProvider
+// ----------------------------------------------------------------------------
+//
+SatAppInputProvider::~SatAppInputProvider()
+{
+ qDebug("SATAPP: SatAppInputProvider::~SatAppInputProvider >");
+ delete mCurrentDialog;
+ mCurrentDialog = 0;
+ qDebug("SATAPP: SatAppInputProvider::~SatAppInputProvider <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::getInkey
+// requests user to enter a SINGLE key, character or digit
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::getInkey(SatAppAction& action)
+{
+ qDebug("SATAPP: SatAppInputProvider::getInkey >");
+
+ delete mCurrentDialog;
+ mCurrentDialog=0;
+
+ QString heading = action.value(KeyText).toString();
+ qDebug() << "SATAPP: getInkey: heading=" << heading;
+
+ TSatCharacterSet characterSet =
+ static_cast<TSatCharacterSet>(action.value(KeyCharacterSet).toInt());
+
+ qDebug("SATAPP: SatAppInputProvider::getInkey char set %d", characterSet);
+
+ // yes no query must have text.
+ if ((0 == heading.length()) && (ESatYesNo == characterSet)) {
+ action.completeWithFailure();
+ return;
+ }
+
+ // duration
+ int duration = action.value(KeyDuration).toInt();
+ if (duration == 0) {
+ duration = KDefaultSelectionTimeoutMseconds;
+ }
+ qDebug("SATAPP: getInkey: duration=%d", duration);
+ mInputTimer.start();
+
+ if (heading.isEmpty()) {
+ if (ESatDigitOnly == characterSet) {
+ heading = hbTrId("txt_simatk_dialog_entern1_digit_09");
+ } else {
+ // ESatCharSmsDefaultAlphabet or ESatCharUcs2Alphabet
+ heading = hbTrId("txt_simatk_dialog_entern1_character");
+ }
+ }
+ qDebug() << "SATAPP: getInkey: heading=" << heading;
+
+ mCurrentAction = &action;
+ bool immediate = action.value(KeyImmediate).toBool();
+ qDebug() << "SATAPP: getInkey: immediate=" << immediate;
+
+ if (characterSet == ESatYesNo) {
+ //Yes no imediate will be combine with YES no.
+ showGetYesNoQuery(heading, duration);
+ }
+ else if (immediate) {
+ // we only have digit immediate
+ showGetImmediateQuery(heading, duration);
+ }
+ else {
+ // Reminder, there is no default inkey in get inkey
+ // proactive command.
+ showGetInkeyQuery(heading, characterSet, duration);
+ }
+ SAT_ASSERT(connect(mCurrentAction, SIGNAL(actionCompleted(SatAppAction*)),
+ this, SLOT(clearDurationTimer())));
+ qDebug("SATAPP: SatAppInputProvider::getInkey <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::getInput
+// requests user to enter a STRING of free text, number or password etc.
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::getInput(SatAppAction& action)
+{
+ qDebug("SATAPP: SatAppInputProvider::getInput >");
+
+ delete mCurrentDialog;
+ mCurrentDialog=0;
+ // character set
+ TSatCharacterSet characterSet =
+ static_cast<TSatCharacterSet>(action.value(KeyCharacterSet).toInt());
+
+ qDebug("SATAPP: SatAppInputProvider::getInput char set %d", characterSet);
+
+ // heading
+ QString heading = action.value(KeyText).toString();
+ qDebug() << "SATAPP: getInput: heading=" << heading;
+ if (heading.isEmpty()) {
+ if (ESatDigitOnly == characterSet) {
+ heading = hbTrId("txt_simatk_dialog_entern1_digit_09");
+ } else {
+ // ESatCharSmsDefaultAlphabet or ESatCharUcs2Alphabet
+ heading = hbTrId("txt_simatk_dialog_entern1_character");
+ }
+ }
+ qDebug() << "SATAPP: getInput: heading=" << heading;
+
+ // min length
+ int minLength = action.value(KeyMinLength).toInt();
+ if (minLength<0) {
+ minLength=0;
+ }
+ if (minLength>KGetInputStringMaxSize){
+ minLength=KGetInputStringMaxSize;
+ }
+
+ // max length
+ int maxLength = action.value(KeyMaxLength).toInt();
+ if (maxLength<minLength) {
+ maxLength=minLength;
+ }
+ if (maxLength>KGetInputStringMaxSize) {
+ maxLength=KGetInputStringMaxSize;
+ }
+ qDebug("SATAPP: SatAppInputProvider::getInput min %d", minLength);
+ qDebug("SATAPP: SatAppInputProvider::getInput max %d", maxLength);
+
+ // default input text
+ QString inputText = action.value(KeyInputString).toString();
+ if (inputText.length() < minLength || inputText.length() > maxLength){
+ inputText = "";
+ }
+ qDebug() << "SATAPP: getInput: inputText=" << inputText;
+
+ // hide input
+ bool hideInput = action.value(KeyHideInput).toBool();
+ qDebug("SATAPP: SatAppInputProvider::getInput hide %d", hideInput);
+
+ qDebug("SATAPP: getInput: min=%d,max=%d,hide=%d",
+ minLength, maxLength, hideInput);
+
+ mCurrentAction = &action;
+ showGetInputQuery( heading, inputText,
+ characterSet, minLength, maxLength, hideInput);
+
+ SAT_ASSERT(connect(mCurrentAction, SIGNAL(actionCompleted(SatAppAction*)),
+ this, SLOT(clearDurationTimer())));
+ qDebug("SATAPP: SatAppInputProvider::getInput <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::showGetInkeyQuery
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::showGetInkeyQuery(
+ const QString &heading,
+ TSatCharacterSet characterSet,
+ int duration)
+{
+ qDebug("SATAPP: SatAppInputProvider::showGetInkeyQuery >");
+
+ HbInputDialog* inputDialog = new HbInputDialog();
+ mCurrentDialog = inputDialog;
+ // Set PromptText
+ inputDialog->setPromptText(heading);
+ // Set ContentText
+ HbEditorInterface inputMode(inputDialog->lineEdit());
+ inputDialog->lineEdit()->setFocus();
+ if (ESatDigitOnly == characterSet) {
+ // digit mode, digits only (0 9, *, #, and +)
+ inputMode.setFilter(HbPhoneNumberFilter::instance());
+ inputMode.setMode(HbInputModeNumeric);
+ inputMode.setInputConstraints(HbEditorConstraintFixedInputMode);
+ } else {
+ // char mode
+ inputMode.setUpAsLatinAlphabetOnlyEditor();
+ }
+ composeDialog(inputDialog, GetInkey);
+ mCurrentAction->set(KeyMinLength, 1);
+ inputDialog->lineEdit()->setMaxLength(1);
+
+ // when input changed, enable/disable OK button
+ SAT_ASSERT(connect(inputDialog->lineEdit(), SIGNAL(textChanged(QString)),
+ this, SLOT(updateQueryAction(QString))));
+ // when OK pressed, fill in data to action and complete it
+ SAT_ASSERT(connect(inputDialog->actions().at(0), SIGNAL(triggered()),
+ this, SLOT(transmitInkeyFromDialog())));
+ // when cancel pressed, complete action with ESatBackwardModeRequestedByUser
+ SAT_ASSERT(connect(inputDialog->actions().at(1), SIGNAL(triggered()),
+ mCurrentAction, SLOT(completeWithBackRequested())));
+ // after timeout, reset the provider
+ startDurationTimer(duration);
+ // open the dialog. When the dialog closes, reset everything
+ inputDialog->open();
+
+ qDebug("SATAPP: SatAppInputProvider::showGetInkeyQuery <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::showGetImmediateQuery
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::showGetImmediateQuery(
+ const QString &heading,
+ int duration)
+{
+ qDebug("SATAPP: SatAppInputProvider::showGetImmediateQuery >");
+
+ HbInputDialog* inputDialog = new HbInputDialog();
+ mCurrentDialog = inputDialog;
+ // Set PromptText
+ inputDialog->setPromptText(heading);
+ // Set ContentText
+ HbEditorInterface inputMode(inputDialog->lineEdit());
+ inputDialog->lineEdit()->setFocus();
+
+ inputMode.setFilter(HbPhoneNumberFilter::instance());
+ inputMode.setMode(HbInputModeNumeric);
+ inputMode.setInputConstraints(HbEditorConstraintFixedInputMode);
+
+ composeDialog(inputDialog, GetImmediate);
+
+ // when receiving first input character, send it immediately
+ SAT_ASSERT(connect(inputDialog->lineEdit(), SIGNAL(textChanged(QString)),
+ this, SLOT(transmitInkeyImmediately(QString))));
+ // when cancel pressed, complete action with ESatBackwardModeRequestedByUser
+ SAT_ASSERT(connect(inputDialog->actions().at(0), SIGNAL(triggered()),
+ mCurrentAction, SLOT(completeWithBackRequested())));
+ // after timeout, reset the provider
+ startDurationTimer(duration);
+ // open the dialog. When the dialog closes, reset everything
+ inputDialog->open();
+
+ qDebug("SATAPP: SatAppInputProvider::showGetImmediateQuery <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::showGetYesNoQuery
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::showGetYesNoQuery(
+ const QString &text,
+ int duration)
+{
+ qDebug("SATAPP: SatAppInputProvider::showGetYesNoQuery >");
+ HbMessageBox* messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+ mCurrentDialog = messageBox;
+
+ // Set the label as heading widget
+ HbLabel *lHeading = new HbLabel(text, messageBox);
+ messageBox->setHeadingWidget(lHeading);
+ messageBox->setIconVisible(false);
+
+ composeDialog(messageBox, GetYesNo);
+
+ // when YES pressed, complete action with ESatSuccess, inkey set to 1
+ SAT_ASSERT(connect(messageBox->actions().at(0), SIGNAL(triggered()),
+ this, SLOT(transmitInkeyTrue())));
+ // when NO pressed, complete action with ESatSuccess, inkey set to 0
+ SAT_ASSERT(connect(messageBox->actions().at(1), SIGNAL(triggered()),
+ this, SLOT(transmitInkeyFalse())));
+
+ startDurationTimer(duration);
+ // show dialog.
+ messageBox->open();
+
+ qDebug("SATAPP: SatAppInputProvider::showGetYesNoQuery <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::showGetInputQuery
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::showGetInputQuery(
+ const QString& heading,
+ const QString& content,
+ TSatCharacterSet characterSet,
+ int minLength,
+ int maxLength,
+ bool hideInput)
+{
+ Q_UNUSED(minLength);
+ qDebug("SATAPP: SatAppInputProvider::showGetInputQuery >");
+
+ HbInputDialog* inputQuery = new HbInputDialog();
+ mCurrentDialog = inputQuery;
+ inputQuery->setPromptText(heading);
+ inputQuery->setValue(QVariant(content));
+ HbEditorInterface inputMode(inputQuery->lineEdit());
+ inputQuery->lineEdit()->setFocus();
+ if (ESatDigitOnly == characterSet) {
+ // digit mode, digits only (0 9, *, #, and +)
+ inputMode.setFilter(HbPhoneNumberFilter::instance());
+ inputMode.setMode(HbInputModeNumeric);
+ inputMode.setInputConstraints(HbEditorConstraintFixedInputMode);
+ } else {
+ // char mode
+ inputMode.setUpAsLatinAlphabetOnlyEditor();
+ }
+
+ inputQuery->lineEdit()->setMaxLength(maxLength);
+
+ composeDialog(inputQuery, GetInput);
+ // initially set the button states
+ updateQueryAction(inputQuery->value().toString());
+
+ if (hideInput) {
+ inputQuery->lineEdit()->setEchoMode(HbLineEdit::Password);
+ qDebug("SATAPP: showGetInputQuery: hiding input");
+ }
+
+ // when dialog content changes, dim ok button accordingly, use
+ // use contentChanged signal from the base class of the editor
+ // to get the signal when in password mode
+ SAT_ASSERT(connect(inputQuery->lineEdit(), SIGNAL(contentsChanged()),
+ this, SLOT(updateQueryAction())));
+ // transmit the text on OK press
+ SAT_ASSERT(connect(inputQuery->actions().at(0), SIGNAL(triggered()),
+ this, SLOT(transmitStringFromDialog())));
+ // on Cancel key complete action with ESatBackwardModeRequestedByUser
+ SAT_ASSERT(connect(inputQuery->actions().at(1), SIGNAL(triggered()),
+ mCurrentAction, SLOT(completeWithBackRequested())));
+ // after timeout, reset the provider
+ startDurationTimer(KDefaultSelectionTimeoutMseconds);
+ // open dialog. When it closes, reset everything
+ inputQuery->open();
+
+ qDebug("SATAPP: SatAppInputProvider::showGetInputQuery <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::resetState
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::resetState()
+{
+ qDebug("SATAPP: SatAppInputProvider::resetState >");
+ if (mCurrentAction) {
+ qDebug("SATAPP: SatAppInputProvider::resetState action");
+ mCurrentAction->completeWithNoResponse();
+ mCurrentAction = 0;
+ }
+
+ qDebug("SATAPP: SatAppInputProvider::resetState action done");
+
+ delete mCurrentDialog;
+ mCurrentDialog = 0;
+ qDebug("SATAPP: SatAppInputProvider::resetState <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::composeDialog
+// make sure dlg has 2 buttons
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::composeDialog(
+ HbDialog *dlg,
+ DialogMode mode)
+{
+ qDebug("SATAPP: SatAppInputProvider::composeDialog >");
+ Q_ASSERT(mCurrentAction);
+
+ dlg->setModal(true);
+ dlg->setDismissPolicy(HbDialog::NoDismiss);
+
+ dlg->clearActions();
+ HbAction *primaryAction = new HbAction(dlg);
+ dlg->addAction(primaryAction);
+
+ HbAction *secondaryAction = new HbAction(dlg);
+ dlg->addAction(secondaryAction);
+
+ switch(mode){
+ case GetYesNo:
+ {
+ primaryAction->setText(hbTrId("txt_common_button_yes"));
+ secondaryAction->setText(hbTrId("txt_common_button_no"));
+ break;
+ }
+ case GetImmediate:
+ {
+ dlg->removeAction(primaryAction);
+ secondaryAction->setText(hbTrId("txt_common_button_cancel"));
+ break;
+ }
+ default:
+ {
+ primaryAction->setText(hbTrId("txt_common_button_ok"));
+ primaryAction->setEnabled(false);
+ secondaryAction->setText(hbTrId("txt_common_button_cancel"));
+ break;
+ }
+ }
+ qDebug("SATAPP: SatAppInputProvider::composeDialog <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::updateQueryAction
+// Updates dialog's OK button according to input text length limits
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::updateQueryAction()
+{
+ qDebug("SATAPP: SatAppInputProvider::updateQueryAction >");
+ Q_ASSERT(mCurrentDialog);
+ QString content =
+ qobject_cast<HbInputDialog*>(mCurrentDialog)->value().toString();
+ qDebug() << "SATAPP: updateQueryAction: content=" << content;
+ updateQueryAction(content);
+ qDebug("SATAPP: SatAppInputProvider::updateQueryAction >");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::updateQueryAction
+// Updates dialog's OK button according to input text length limits
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::updateQueryAction(QString text)
+{
+ qDebug("SATAPP: SatAppInputProvider::updateQueryAction 2>");
+ Q_ASSERT(mCurrentDialog);
+ qDebug() << "SATAPP: updateQueryAction 2: text=" << text;
+ int min=0;
+ if (mCurrentAction->hasValue(KeyMinLength))
+ min=mCurrentAction->value(KeyMinLength).toInt();
+ int max=10;
+ if (mCurrentAction->hasValue(KeyMaxLength))
+ max=mCurrentAction->value(KeyMaxLength).toInt();
+ if (mCurrentDialog->actions().at(0)) {
+ if (text.length() >= min && text.length() <= max) {
+ mCurrentDialog->actions().at(0)->setEnabled(true);
+ } else {
+ mCurrentDialog->actions().at(0)->setEnabled(false);
+ }
+ }
+ qDebug("SATAPP: SatAppInputProvider::updateQueryAction 2<");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::transmitInkeyFromDialog
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::transmitInkeyFromDialog()
+{
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyFromDialog >");
+ Q_ASSERT(mCurrentDialog);
+ Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
+ // grab the input string
+ HbInputDialog* inkeyQuery = static_cast<HbInputDialog*>(mCurrentDialog);
+ QString inputString = inkeyQuery->value().toString();
+ qDebug() << "SATAPP: transmitInkeyFromDialog: input=" << inputString;
+ transmitInkeyImmediately(inputString);
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyFromDialog <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::transmitInkeyImmediately
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::transmitInkeyImmediately(QString text)
+{
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyImmediately >");
+ transmitInkey((int)text.utf16()[0]);
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyImmediately <");
+}
+
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::transmitInkeyTrue
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::transmitInkeyTrue()
+{
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyTrue >");
+ Q_ASSERT(mCurrentAction);
+ Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
+ Q_ASSERT(mCurrentAction->value(KeyCharacterSet).toInt()==ESatYesNo);
+ transmitInkey(1);
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyTrue <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::transmitInkeyFalse
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::transmitInkeyFalse()
+{
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyFalse >");
+ Q_ASSERT(mCurrentAction);
+ Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
+ Q_ASSERT(mCurrentAction->value(KeyCharacterSet).toInt()==ESatYesNo);
+ transmitInkey(0);
+ qDebug("SATAPP: SatAppInputProvider::transmitInkeyFalse >");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::transmit
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::transmitInkey(int key)
+{
+ qDebug("SATAPP: SatAppInputProvider::transmitInkey >");
+ qDebug("SATAPP: SatAppInputProvider::transmitInkey %d",key);
+ Q_ASSERT(mCurrentAction);
+ Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
+ // write inkey
+ mCurrentAction->set(KeyInKey,key);
+ // overwrite timer duration
+ if (mCurrentAction->hasValue(KeyDuration)) {
+ int newDuration = mInputTimer.elapsed();
+ qDebug("SATAPP: SatAppInputProvider::transmitInkey dur ", newDuration);
+ mCurrentAction->set(KeyDuration, newDuration);
+ }
+ bool immediate = mCurrentAction->value(KeyImmediate).toBool();
+ if(immediate) {
+ mCurrentDialog->close();
+ }
+ mCurrentAction->completeWithSuccess();
+ mCurrentAction = 0;
+ qDebug("SATAPP: SatAppInputProvider::transmitInkey >");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::transmitStringFromDialog
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::transmitStringFromDialog()
+{
+ qDebug("SATAPP: SatAppInputProvider::transmitStringFromDialog >");
+ Q_ASSERT(mCurrentDialog);
+ Q_ASSERT(mCurrentAction);
+ Q_ASSERT(mCurrentAction->action()==ESatGetInputAction);
+ // write input string
+ HbInputDialog* inputQuery = static_cast<HbInputDialog*>(mCurrentDialog);
+ QString inputString = inputQuery->value().toString();
+ qDebug() << "SATAPP: transmitStringFromDialog: string=" << inputString;
+
+ mCurrentAction->set(KeyInputString,inputString);
+ // overwrite timer duration
+ if (mCurrentAction->hasValue(KeyDuration)) {
+ int newDuration = mInputTimer.elapsed();
+ qDebug("SATAPP: SatAppInputProvider::transmitStringFromDialog dur ",
+ newDuration);
+ mCurrentAction->set(KeyDuration, newDuration);
+ }
+ mCurrentAction->completeWithSuccess();
+ mCurrentAction = 0;
+ qDebug("SATAPP: SatAppInputProvider::transmitStringFromDialog >");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::startDurationTimer
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::startDurationTimer(int duration)
+{
+ qDebug("SATAPP: SatAppInputProvider::startDurationTimer %d>", duration);
+ Q_ASSERT(mDurationTimer);
+ if (duration) {
+ mDurationTimer->setSingleShot(true);
+ SAT_ASSERT(connect(mDurationTimer, SIGNAL(timeout()),
+ this, SLOT(resetState())));
+ mDurationTimer->start(duration);
+ }
+ qDebug("SATAPP: SatAppInputProvider::startDurationTimer <");
+}
+
+// ----------------------------------------------------------------------------
+// SatAppInputProvider::clearDurationTimer
+// ----------------------------------------------------------------------------
+//
+void SatAppInputProvider::clearDurationTimer()
+{
+ qDebug("SATAPP: SatAppInputProvider::clearDurationTimer >");
+ Q_ASSERT(mDurationTimer);
+ Q_ASSERT(mCurrentAction);
+
+ bool res = disconnect(mCurrentAction, SIGNAL(actionCompleted(SatAppAction*)),
+ this, SLOT(clearDurationTimer()));
+ qDebug("SATAPP: SatAppInputProvider::clearDurationTimer act %d>", res);
+ res = disconnect(mDurationTimer, SIGNAL(timeout()),
+ this, SLOT(resetState()));
+ qDebug("SATAPP: SatAppInputProvider::clearDurationTimer dur %d>", res);
+
+ mDurationTimer->stop();
+ qDebug("SATAPP: SatAppInputProvider::clearDurationTimer <");
+}
+
+//End of file