satui/satapp/inc/satappinputprovider.h
branchRCL_3
changeset 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/satui/satapp/inc/satappinputprovider.h	Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* 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
+*
+*/
+
+#ifndef SATAPPINPUTPROVIDER_H
+#define SATAPPINPUTPROVIDER_H
+
+// includes
+#include <QObject>
+#include <QTime>
+#include <msatuiobserver.h>
+
+// forward declarations
+class HbDialog;
+class SatAppAction;
+class QTimer;
+
+class SatAppInputProvider : public QObject
+{
+    Q_OBJECT
+
+public:
+    SatAppInputProvider(QObject *parent = 0);
+    virtual ~SatAppInputProvider();
+    
+public slots:
+
+    /** requests user to enter a SINGLE key, character or digit */
+    void getInkey(SatAppAction& action);
+
+    /** requests user to enter a STRING of free text, number or password etc. */
+    void getInput(SatAppAction& action);
+
+    /** Resets the UI state commits pending server requests if any */
+    void resetState();
+    
+private slots:
+
+    /** update the actions when content in getinput changed */
+    void updateQueryAction();
+    /** update the actions according the text */
+    void updateQueryAction(QString text);
+    /** get the input key in get inkey */
+    void transmitInkeyFromDialog();
+    /** get the input key in get inkey immediate */
+    void transmitInkeyImmediately(QString text);
+    /** get the input key in get inkey yesno query */
+    void transmitInkeyTrue();
+    /** get the input key in get inkey yesno query */
+    void transmitInkeyFalse();
+    /** get the get input string */
+    void transmitStringFromDialog();
+    /** clear the query timeout timer */
+    void clearDurationTimer();
+
+private: // private implementation
+
+    /** show get inkey query */
+    void showGetInkeyQuery(const QString &aHeading, 
+        TSatCharacterSet aCharacterSet, int aDuration);
+    /** show get inkey immediate query */    
+    void showGetImmediateQuery(const QString &aHeading, int aDuration);    
+    /** show get inkey yes no query */
+   void showGetYesNoQuery(const QString &aText, int aDuration);
+    
+   /** show get input query */
+    void showGetInputQuery(const QString &heading, const QString &content,
+            TSatCharacterSet characterSet, int minLength, int maxLength,
+            bool aHideInput);
+    /** dialog type */
+    enum DialogMode {
+        GetInkey,
+        GetYesNo,
+        GetImmediate,
+        GetInput};
+    
+    /** update dialog according type */
+    void composeDialog(HbDialog *dlg, DialogMode mode);
+    /** set the get inkey result to action */
+    void transmitInkey(int key);
+    /** start dialog timeout timer */
+    void startDurationTimer(int duration);
+    
+private:
+    /** not own */
+    SatAppAction* mCurrentAction;
+    /** own */
+    HbDialog* mCurrentDialog;
+    /** own */
+    QTime mInputTimer;
+    /** own */
+    QTimer* mDurationTimer;
+
+    /**for unit testing */
+    friend class InputProviderTest;
+};
+
+#endif /* SATAPPINPUTPROVIDER_H */