phoneuis/ussdeditor/src/ussdeditorquery.cpp
changeset 27 2f8f8080a020
child 45 6b911d05207e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/src/ussdeditorquery.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,144 @@
+/*
+* 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 FILES
+#include <hbinputeditorinterface.h>
+#include <hbaction.h>
+#include <hbinputstandardfilters.h>
+#include <hbinputfilter.h> 
+#include <hbinputstate.h> 
+#include <hbinputvkbhost.h>
+#include <hbapplication.h>
+#include <cphcltussdint.h>
+
+#include "tflogger.h"
+#include "ussdcomms.h"
+#include "ussdeditorquery.h"
+
+// CONSTANTS
+// The maximum number of editor lines method NumberOfEditorLines can return.
+const TInt KUssdMaxNumberOfEditorLines = 16;
+// The maximum length of editor lines.
+const TInt KUssdEditorMaxLength = 182;
+
+// ============================ MEMBER FUNCTIONS ===============================
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::UssdEditorQuery
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+UssdEditorQuery::UssdEditorQuery(CUssdComms &ussd, QGraphicsItem *parent)
+    :HbInputDialog(parent), mComms(ussd)
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::UssdEditorQuery IN")
+    setPromptText(hbTrId("Reply"));
+
+    if (lineEdit()){
+        // Set max length and rows
+        lineEdit()->setMaxLength(KUssdEditorMaxLength);
+        lineEdit()->setMaxRows(KUssdMaxNumberOfEditorLines);
+        lineEdit()->setText(QString());
+
+        // 0-9, *, +, #
+        HbEditorInterface interface(lineEdit());
+        interface.setFilter(HbPhoneNumberFilter::instance());
+        // TODO: cannot open keypad
+        interface.vkbHost()->openKeypad();
+
+        mComms.appStarting();
+        // Disable Ok key by default
+        primaryAction()->setEnabled(false);
+
+        bool ret(false);
+        ret = connect(primaryAction(), SIGNAL(triggered(bool)),
+                      this, SLOT(sendUssdString()));
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::UssdEditorQuery \
+            connect send %d", ret);  
+        
+        ret = connect(lineEdit(), SIGNAL(textChanged(QString)),
+                      this, SLOT(updateButtonVisible(QString)));
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::UssdEditorQuery \
+            connect ok button %d", ret);
+        
+        // Connect cancel
+        ret = connect(secondaryAction(), SIGNAL(triggered(bool)),
+                      this, SLOT(cancelUssdString()));
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::UssdEditorQuery \
+            connect send %d", ret);
+    }
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::UssdEditorQuery OUT")
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::~UssdEditorQuery
+// ~UssdEditorQuery.
+// -----------------------------------------------------------------------------
+//
+UssdEditorQuery::~UssdEditorQuery()
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::~UssdEditorQuery IN-OUT")
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::sendUssdString
+// sendUssdString.
+// -----------------------------------------------------------------------------
+//
+void UssdEditorQuery::sendUssdString()
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::sendUssdString IN"); 
+    if (lineEdit() && 
+        0 < lineEdit()->text().length() &&
+        KUssdEditorMaxLength >= lineEdit()->text().length()) {
+        int ret = mComms.send(lineEdit()->text());
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::sendUssdString %d", ret);
+        mComms.informExitReason(static_cast<int>(EPhCltSendCompleted));
+    }
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::sendUssdString OUT");
+    HbApplication::quit();
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::cancelUssdString
+// cancelUssdString.
+// -----------------------------------------------------------------------------
+//
+void UssdEditorQuery::cancelUssdString()
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::cancelUssdString IN-OUT"); 
+    mComms.informExitReason((EPhCltUserExit));
+    HbApplication::quit();
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::updateButtonVisible
+// updateButtonVisible.
+// -----------------------------------------------------------------------------
+//
+void UssdEditorQuery::updateButtonVisible( const QString &text )
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::updateButtonVisible IN"); 
+    if (text.length() > 0) {
+        primaryAction()->setEnabled(true);
+    } else {
+        primaryAction()->setEnabled(false);
+    }
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::updateOkButton OUT");
+}
+
+// End of file