33
|
1 |
/*
|
|
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
3 |
* All rights reserved.
|
|
4 |
* This component and the accompanying materials are made available
|
|
5 |
* under the terms of "Eclipse Public License v1.0"
|
|
6 |
* which accompanies this distribution, and is available
|
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
8 |
*
|
|
9 |
* Initial Contributors:
|
|
10 |
* Nokia Corporation - initial contribution.
|
|
11 |
*
|
|
12 |
* Contributors:
|
|
13 |
*
|
|
14 |
* Description: Provides input methods like query dialogs
|
|
15 |
*
|
|
16 |
*/
|
|
17 |
|
|
18 |
// qt
|
|
19 |
#include <QTimer>
|
|
20 |
#include <QtDebug>
|
|
21 |
// hb
|
|
22 |
#include <hbglobal.h>
|
|
23 |
#include <hbinputdialog.h>
|
|
24 |
#include <hbinputeditorinterface.h>
|
|
25 |
#include <hbinputstandardfilters.h>
|
|
26 |
#include <hbmessagebox.h>
|
|
27 |
#include <hblabel.h>
|
|
28 |
#include <hbaction.h>
|
|
29 |
// satapp
|
|
30 |
#include "satappinputprovider.h"
|
|
31 |
#include "satappconstant.h"
|
|
32 |
#include "satappaction.h"
|
|
33 |
|
|
34 |
|
|
35 |
// ----------------------------------------------------------------------------
|
|
36 |
// SatAppInputProvider::SatAppInputProvider
|
|
37 |
// ----------------------------------------------------------------------------
|
|
38 |
//
|
|
39 |
SatAppInputProvider::SatAppInputProvider(QObject *parent)
|
|
40 |
: QObject(parent), mCurrentAction(0), mCurrentDialog(0)
|
|
41 |
{
|
|
42 |
qDebug("SATAPP: SatAppInputProvider::SatAppInputProvider >");
|
|
43 |
mDurationTimer = new QTimer(this);
|
|
44 |
qDebug("SATAPP: SatAppInputProvider::SatAppInputProvider <");
|
|
45 |
}
|
|
46 |
|
|
47 |
// ----------------------------------------------------------------------------
|
|
48 |
// SatAppInputProvider::~SatAppInputProvider
|
|
49 |
// ----------------------------------------------------------------------------
|
|
50 |
//
|
|
51 |
SatAppInputProvider::~SatAppInputProvider()
|
|
52 |
{
|
|
53 |
qDebug("SATAPP: SatAppInputProvider::~SatAppInputProvider >");
|
35
|
54 |
delete mCurrentDialog;
|
|
55 |
mCurrentDialog = 0;
|
33
|
56 |
qDebug("SATAPP: SatAppInputProvider::~SatAppInputProvider <");
|
|
57 |
}
|
|
58 |
|
|
59 |
// ----------------------------------------------------------------------------
|
|
60 |
// SatAppInputProvider::getInkey
|
|
61 |
// requests user to enter a SINGLE key, character or digit
|
|
62 |
// ----------------------------------------------------------------------------
|
|
63 |
//
|
|
64 |
void SatAppInputProvider::getInkey(SatAppAction& action)
|
|
65 |
{
|
|
66 |
qDebug("SATAPP: SatAppInputProvider::getInkey >");
|
|
67 |
|
|
68 |
delete mCurrentDialog;
|
|
69 |
mCurrentDialog=0;
|
|
70 |
|
|
71 |
QString heading = action.value(KeyText).toString();
|
|
72 |
qDebug() << "SATAPP: getInkey: heading=" << heading;
|
|
73 |
|
|
74 |
TSatCharacterSet characterSet =
|
|
75 |
static_cast<TSatCharacterSet>(action.value(KeyCharacterSet).toInt());
|
|
76 |
|
|
77 |
qDebug("SATAPP: SatAppInputProvider::getInkey char set %d", characterSet);
|
|
78 |
|
|
79 |
// yes no query must have text.
|
|
80 |
if ((0 == heading.length()) && (ESatYesNo == characterSet)) {
|
|
81 |
action.completeWithFailure();
|
|
82 |
return;
|
|
83 |
}
|
|
84 |
|
|
85 |
// duration
|
|
86 |
int duration = action.value(KeyDuration).toInt();
|
|
87 |
if (duration == 0) {
|
|
88 |
duration = KDefaultSelectionTimeoutMseconds;
|
|
89 |
}
|
|
90 |
qDebug("SATAPP: getInkey: duration=%d", duration);
|
|
91 |
mInputTimer.start();
|
|
92 |
|
|
93 |
if (heading.isEmpty()) {
|
|
94 |
if (ESatDigitOnly == characterSet) {
|
|
95 |
heading = hbTrId("txt_simatk_dialog_entern1_digit_09");
|
|
96 |
} else {
|
|
97 |
// ESatCharSmsDefaultAlphabet or ESatCharUcs2Alphabet
|
|
98 |
heading = hbTrId("txt_simatk_dialog_entern1_character");
|
|
99 |
}
|
|
100 |
}
|
|
101 |
qDebug() << "SATAPP: getInkey: heading=" << heading;
|
|
102 |
|
|
103 |
mCurrentAction = &action;
|
|
104 |
bool immediate = action.value(KeyImmediate).toBool();
|
|
105 |
qDebug() << "SATAPP: getInkey: immediate=" << immediate;
|
|
106 |
|
|
107 |
if (characterSet == ESatYesNo) {
|
|
108 |
//Yes no imediate will be combine with YES no.
|
|
109 |
showGetYesNoQuery(heading, duration);
|
|
110 |
}
|
|
111 |
else if (immediate) {
|
|
112 |
// we only have digit immediate
|
|
113 |
showGetImmediateQuery(heading, duration);
|
|
114 |
}
|
|
115 |
else {
|
|
116 |
// Reminder, there is no default inkey in get inkey
|
|
117 |
// proactive command.
|
|
118 |
showGetInkeyQuery(heading, characterSet, duration);
|
|
119 |
}
|
|
120 |
SAT_ASSERT(connect(mCurrentAction, SIGNAL(actionCompleted(SatAppAction*)),
|
|
121 |
this, SLOT(clearDurationTimer())));
|
|
122 |
qDebug("SATAPP: SatAppInputProvider::getInkey <");
|
|
123 |
}
|
|
124 |
|
|
125 |
// ----------------------------------------------------------------------------
|
|
126 |
// SatAppInputProvider::getInput
|
|
127 |
// requests user to enter a STRING of free text, number or password etc.
|
|
128 |
// ----------------------------------------------------------------------------
|
|
129 |
//
|
|
130 |
void SatAppInputProvider::getInput(SatAppAction& action)
|
|
131 |
{
|
|
132 |
qDebug("SATAPP: SatAppInputProvider::getInput >");
|
|
133 |
|
|
134 |
delete mCurrentDialog;
|
|
135 |
mCurrentDialog=0;
|
|
136 |
// character set
|
|
137 |
TSatCharacterSet characterSet =
|
|
138 |
static_cast<TSatCharacterSet>(action.value(KeyCharacterSet).toInt());
|
|
139 |
|
|
140 |
qDebug("SATAPP: SatAppInputProvider::getInput char set %d", characterSet);
|
|
141 |
|
|
142 |
// heading
|
|
143 |
QString heading = action.value(KeyText).toString();
|
|
144 |
qDebug() << "SATAPP: getInput: heading=" << heading;
|
|
145 |
if (heading.isEmpty()) {
|
|
146 |
if (ESatDigitOnly == characterSet) {
|
|
147 |
heading = hbTrId("txt_simatk_dialog_entern1_digit_09");
|
|
148 |
} else {
|
|
149 |
// ESatCharSmsDefaultAlphabet or ESatCharUcs2Alphabet
|
|
150 |
heading = hbTrId("txt_simatk_dialog_entern1_character");
|
|
151 |
}
|
|
152 |
}
|
|
153 |
qDebug() << "SATAPP: getInput: heading=" << heading;
|
|
154 |
|
|
155 |
// min length
|
|
156 |
int minLength = action.value(KeyMinLength).toInt();
|
|
157 |
if (minLength<0) {
|
|
158 |
minLength=0;
|
|
159 |
}
|
|
160 |
if (minLength>KGetInputStringMaxSize){
|
|
161 |
minLength=KGetInputStringMaxSize;
|
|
162 |
}
|
|
163 |
|
|
164 |
// max length
|
|
165 |
int maxLength = action.value(KeyMaxLength).toInt();
|
|
166 |
if (maxLength<minLength) {
|
|
167 |
maxLength=minLength;
|
|
168 |
}
|
|
169 |
if (maxLength>KGetInputStringMaxSize) {
|
|
170 |
maxLength=KGetInputStringMaxSize;
|
|
171 |
}
|
|
172 |
qDebug("SATAPP: SatAppInputProvider::getInput min %d", minLength);
|
|
173 |
qDebug("SATAPP: SatAppInputProvider::getInput max %d", maxLength);
|
|
174 |
|
|
175 |
// default input text
|
|
176 |
QString inputText = action.value(KeyInputString).toString();
|
|
177 |
if (inputText.length() < minLength || inputText.length() > maxLength){
|
|
178 |
inputText = "";
|
|
179 |
}
|
|
180 |
qDebug() << "SATAPP: getInput: inputText=" << inputText;
|
|
181 |
|
|
182 |
// hide input
|
|
183 |
bool hideInput = action.value(KeyHideInput).toBool();
|
|
184 |
qDebug("SATAPP: SatAppInputProvider::getInput hide %d", hideInput);
|
|
185 |
|
|
186 |
qDebug("SATAPP: getInput: min=%d,max=%d,hide=%d",
|
|
187 |
minLength, maxLength, hideInput);
|
|
188 |
|
|
189 |
mCurrentAction = &action;
|
|
190 |
showGetInputQuery( heading, inputText,
|
|
191 |
characterSet, minLength, maxLength, hideInput);
|
|
192 |
|
|
193 |
SAT_ASSERT(connect(mCurrentAction, SIGNAL(actionCompleted(SatAppAction*)),
|
|
194 |
this, SLOT(clearDurationTimer())));
|
|
195 |
qDebug("SATAPP: SatAppInputProvider::getInput <");
|
|
196 |
}
|
|
197 |
|
|
198 |
// ----------------------------------------------------------------------------
|
|
199 |
// SatAppInputProvider::showGetInkeyQuery
|
|
200 |
// ----------------------------------------------------------------------------
|
|
201 |
//
|
|
202 |
void SatAppInputProvider::showGetInkeyQuery(
|
|
203 |
const QString &heading,
|
|
204 |
TSatCharacterSet characterSet,
|
|
205 |
int duration)
|
|
206 |
{
|
|
207 |
qDebug("SATAPP: SatAppInputProvider::showGetInkeyQuery >");
|
|
208 |
|
|
209 |
HbInputDialog* inputDialog = new HbInputDialog();
|
|
210 |
mCurrentDialog = inputDialog;
|
|
211 |
// Set PromptText
|
|
212 |
inputDialog->setPromptText(heading);
|
|
213 |
// Set ContentText
|
|
214 |
inputDialog->lineEdit()->setFocus();
|
|
215 |
if (ESatDigitOnly == characterSet) {
|
|
216 |
// digit mode, digits only (0 9, *, #, and +)
|
53
|
217 |
inputDialog->lineEdit()->setInputMethodHints(
|
|
218 |
Qt::ImhDialableCharactersOnly);
|
33
|
219 |
}
|
|
220 |
composeDialog(inputDialog, GetInkey);
|
|
221 |
mCurrentAction->set(KeyMinLength, 1);
|
|
222 |
inputDialog->lineEdit()->setMaxLength(1);
|
|
223 |
|
|
224 |
// when input changed, enable/disable OK button
|
|
225 |
SAT_ASSERT(connect(inputDialog->lineEdit(), SIGNAL(textChanged(QString)),
|
|
226 |
this, SLOT(updateQueryAction(QString))));
|
|
227 |
// when OK pressed, fill in data to action and complete it
|
|
228 |
SAT_ASSERT(connect(inputDialog->actions().at(0), SIGNAL(triggered()),
|
|
229 |
this, SLOT(transmitInkeyFromDialog())));
|
|
230 |
// when cancel pressed, complete action with ESatBackwardModeRequestedByUser
|
|
231 |
SAT_ASSERT(connect(inputDialog->actions().at(1), SIGNAL(triggered()),
|
|
232 |
mCurrentAction, SLOT(completeWithBackRequested())));
|
|
233 |
// after timeout, reset the provider
|
|
234 |
startDurationTimer(duration);
|
|
235 |
// open the dialog. When the dialog closes, reset everything
|
|
236 |
inputDialog->open();
|
|
237 |
|
|
238 |
qDebug("SATAPP: SatAppInputProvider::showGetInkeyQuery <");
|
|
239 |
}
|
|
240 |
|
|
241 |
// ----------------------------------------------------------------------------
|
|
242 |
// SatAppInputProvider::showGetImmediateQuery
|
|
243 |
// ----------------------------------------------------------------------------
|
|
244 |
//
|
|
245 |
void SatAppInputProvider::showGetImmediateQuery(
|
|
246 |
const QString &heading,
|
|
247 |
int duration)
|
|
248 |
{
|
|
249 |
qDebug("SATAPP: SatAppInputProvider::showGetImmediateQuery >");
|
|
250 |
|
|
251 |
HbInputDialog* inputDialog = new HbInputDialog();
|
|
252 |
mCurrentDialog = inputDialog;
|
|
253 |
// Set PromptText
|
|
254 |
inputDialog->setPromptText(heading);
|
|
255 |
// Set ContentText
|
|
256 |
inputDialog->lineEdit()->setFocus();
|
53
|
257 |
inputDialog->lineEdit()->setInputMethodHints(
|
|
258 |
Qt::ImhDialableCharactersOnly);
|
33
|
259 |
|
|
260 |
composeDialog(inputDialog, GetImmediate);
|
|
261 |
|
|
262 |
// when receiving first input character, send it immediately
|
|
263 |
SAT_ASSERT(connect(inputDialog->lineEdit(), SIGNAL(textChanged(QString)),
|
|
264 |
this, SLOT(transmitInkeyImmediately(QString))));
|
|
265 |
// when cancel pressed, complete action with ESatBackwardModeRequestedByUser
|
|
266 |
SAT_ASSERT(connect(inputDialog->actions().at(0), SIGNAL(triggered()),
|
|
267 |
mCurrentAction, SLOT(completeWithBackRequested())));
|
|
268 |
// after timeout, reset the provider
|
|
269 |
startDurationTimer(duration);
|
|
270 |
// open the dialog. When the dialog closes, reset everything
|
|
271 |
inputDialog->open();
|
|
272 |
|
|
273 |
qDebug("SATAPP: SatAppInputProvider::showGetImmediateQuery <");
|
|
274 |
}
|
|
275 |
|
|
276 |
// ----------------------------------------------------------------------------
|
|
277 |
// SatAppInputProvider::showGetYesNoQuery
|
|
278 |
// ----------------------------------------------------------------------------
|
|
279 |
//
|
|
280 |
void SatAppInputProvider::showGetYesNoQuery(
|
|
281 |
const QString &text,
|
|
282 |
int duration)
|
|
283 |
{
|
|
284 |
qDebug("SATAPP: SatAppInputProvider::showGetYesNoQuery >");
|
|
285 |
HbMessageBox* messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
|
|
286 |
mCurrentDialog = messageBox;
|
|
287 |
|
|
288 |
// Set the label as heading widget
|
|
289 |
HbLabel *lHeading = new HbLabel(text, messageBox);
|
|
290 |
messageBox->setHeadingWidget(lHeading);
|
|
291 |
messageBox->setIconVisible(false);
|
|
292 |
|
|
293 |
composeDialog(messageBox, GetYesNo);
|
|
294 |
|
|
295 |
// when YES pressed, complete action with ESatSuccess, inkey set to 1
|
|
296 |
SAT_ASSERT(connect(messageBox->actions().at(0), SIGNAL(triggered()),
|
|
297 |
this, SLOT(transmitInkeyTrue())));
|
|
298 |
// when NO pressed, complete action with ESatSuccess, inkey set to 0
|
|
299 |
SAT_ASSERT(connect(messageBox->actions().at(1), SIGNAL(triggered()),
|
|
300 |
this, SLOT(transmitInkeyFalse())));
|
|
301 |
|
|
302 |
startDurationTimer(duration);
|
|
303 |
// show dialog.
|
|
304 |
messageBox->open();
|
|
305 |
|
|
306 |
qDebug("SATAPP: SatAppInputProvider::showGetYesNoQuery <");
|
|
307 |
}
|
|
308 |
|
|
309 |
// ----------------------------------------------------------------------------
|
|
310 |
// SatAppInputProvider::showGetInputQuery
|
|
311 |
// ----------------------------------------------------------------------------
|
|
312 |
//
|
|
313 |
void SatAppInputProvider::showGetInputQuery(
|
|
314 |
const QString& heading,
|
|
315 |
const QString& content,
|
|
316 |
TSatCharacterSet characterSet,
|
|
317 |
int minLength,
|
|
318 |
int maxLength,
|
|
319 |
bool hideInput)
|
|
320 |
{
|
|
321 |
Q_UNUSED(minLength);
|
|
322 |
qDebug("SATAPP: SatAppInputProvider::showGetInputQuery >");
|
|
323 |
|
|
324 |
HbInputDialog* inputQuery = new HbInputDialog();
|
|
325 |
mCurrentDialog = inputQuery;
|
|
326 |
inputQuery->setPromptText(heading);
|
|
327 |
inputQuery->setValue(QVariant(content));
|
|
328 |
inputQuery->lineEdit()->setFocus();
|
|
329 |
if (ESatDigitOnly == characterSet) {
|
|
330 |
// digit mode, digits only (0 9, *, #, and +)
|
53
|
331 |
inputQuery->lineEdit()->setInputMethodHints(
|
|
332 |
Qt::ImhDialableCharactersOnly);
|
33
|
333 |
}
|
|
334 |
|
|
335 |
inputQuery->lineEdit()->setMaxLength(maxLength);
|
|
336 |
|
|
337 |
composeDialog(inputQuery, GetInput);
|
|
338 |
// initially set the button states
|
|
339 |
updateQueryAction(inputQuery->value().toString());
|
|
340 |
|
|
341 |
if (hideInput) {
|
|
342 |
inputQuery->lineEdit()->setEchoMode(HbLineEdit::Password);
|
|
343 |
qDebug("SATAPP: showGetInputQuery: hiding input");
|
|
344 |
}
|
|
345 |
|
|
346 |
// when dialog content changes, dim ok button accordingly, use
|
|
347 |
// use contentChanged signal from the base class of the editor
|
|
348 |
// to get the signal when in password mode
|
|
349 |
SAT_ASSERT(connect(inputQuery->lineEdit(), SIGNAL(contentsChanged()),
|
|
350 |
this, SLOT(updateQueryAction())));
|
|
351 |
// transmit the text on OK press
|
|
352 |
SAT_ASSERT(connect(inputQuery->actions().at(0), SIGNAL(triggered()),
|
|
353 |
this, SLOT(transmitStringFromDialog())));
|
|
354 |
// on Cancel key complete action with ESatBackwardModeRequestedByUser
|
|
355 |
SAT_ASSERT(connect(inputQuery->actions().at(1), SIGNAL(triggered()),
|
|
356 |
mCurrentAction, SLOT(completeWithBackRequested())));
|
|
357 |
// after timeout, reset the provider
|
|
358 |
startDurationTimer(KDefaultSelectionTimeoutMseconds);
|
|
359 |
// open dialog. When it closes, reset everything
|
|
360 |
inputQuery->open();
|
|
361 |
|
|
362 |
qDebug("SATAPP: SatAppInputProvider::showGetInputQuery <");
|
|
363 |
}
|
|
364 |
|
|
365 |
// ----------------------------------------------------------------------------
|
|
366 |
// SatAppInputProvider::resetState
|
|
367 |
// ----------------------------------------------------------------------------
|
|
368 |
//
|
|
369 |
void SatAppInputProvider::resetState()
|
|
370 |
{
|
|
371 |
qDebug("SATAPP: SatAppInputProvider::resetState >");
|
|
372 |
if (mCurrentAction) {
|
|
373 |
qDebug("SATAPP: SatAppInputProvider::resetState action");
|
|
374 |
mCurrentAction->completeWithNoResponse();
|
|
375 |
mCurrentAction = 0;
|
|
376 |
}
|
|
377 |
|
|
378 |
qDebug("SATAPP: SatAppInputProvider::resetState action done");
|
|
379 |
|
|
380 |
delete mCurrentDialog;
|
|
381 |
mCurrentDialog = 0;
|
|
382 |
qDebug("SATAPP: SatAppInputProvider::resetState <");
|
|
383 |
}
|
|
384 |
|
|
385 |
// ----------------------------------------------------------------------------
|
|
386 |
// SatAppInputProvider::composeDialog
|
|
387 |
// make sure dlg has 2 buttons
|
|
388 |
// ----------------------------------------------------------------------------
|
|
389 |
//
|
|
390 |
void SatAppInputProvider::composeDialog(
|
|
391 |
HbDialog *dlg,
|
|
392 |
DialogMode mode)
|
|
393 |
{
|
|
394 |
qDebug("SATAPP: SatAppInputProvider::composeDialog >");
|
|
395 |
Q_ASSERT(mCurrentAction);
|
|
396 |
|
|
397 |
dlg->setModal(true);
|
|
398 |
dlg->setDismissPolicy(HbDialog::NoDismiss);
|
|
399 |
|
|
400 |
dlg->clearActions();
|
|
401 |
HbAction *primaryAction = new HbAction(dlg);
|
|
402 |
dlg->addAction(primaryAction);
|
|
403 |
|
|
404 |
HbAction *secondaryAction = new HbAction(dlg);
|
|
405 |
dlg->addAction(secondaryAction);
|
|
406 |
|
|
407 |
switch(mode){
|
|
408 |
case GetYesNo:
|
|
409 |
{
|
|
410 |
primaryAction->setText(hbTrId("txt_common_button_yes"));
|
|
411 |
secondaryAction->setText(hbTrId("txt_common_button_no"));
|
|
412 |
break;
|
|
413 |
}
|
|
414 |
case GetImmediate:
|
|
415 |
{
|
|
416 |
dlg->removeAction(primaryAction);
|
|
417 |
secondaryAction->setText(hbTrId("txt_common_button_cancel"));
|
|
418 |
break;
|
|
419 |
}
|
|
420 |
default:
|
|
421 |
{
|
|
422 |
primaryAction->setText(hbTrId("txt_common_button_ok"));
|
|
423 |
primaryAction->setEnabled(false);
|
|
424 |
secondaryAction->setText(hbTrId("txt_common_button_cancel"));
|
|
425 |
break;
|
|
426 |
}
|
|
427 |
}
|
|
428 |
qDebug("SATAPP: SatAppInputProvider::composeDialog <");
|
|
429 |
}
|
|
430 |
|
|
431 |
// ----------------------------------------------------------------------------
|
|
432 |
// SatAppInputProvider::updateQueryAction
|
|
433 |
// Updates dialog's OK button according to input text length limits
|
|
434 |
// ----------------------------------------------------------------------------
|
|
435 |
//
|
|
436 |
void SatAppInputProvider::updateQueryAction()
|
|
437 |
{
|
|
438 |
qDebug("SATAPP: SatAppInputProvider::updateQueryAction >");
|
|
439 |
Q_ASSERT(mCurrentDialog);
|
|
440 |
QString content =
|
|
441 |
qobject_cast<HbInputDialog*>(mCurrentDialog)->value().toString();
|
|
442 |
qDebug() << "SATAPP: updateQueryAction: content=" << content;
|
|
443 |
updateQueryAction(content);
|
|
444 |
qDebug("SATAPP: SatAppInputProvider::updateQueryAction >");
|
|
445 |
}
|
|
446 |
|
|
447 |
// ----------------------------------------------------------------------------
|
|
448 |
// SatAppInputProvider::updateQueryAction
|
|
449 |
// Updates dialog's OK button according to input text length limits
|
|
450 |
// ----------------------------------------------------------------------------
|
|
451 |
//
|
|
452 |
void SatAppInputProvider::updateQueryAction(QString text)
|
|
453 |
{
|
|
454 |
qDebug("SATAPP: SatAppInputProvider::updateQueryAction 2>");
|
|
455 |
Q_ASSERT(mCurrentDialog);
|
|
456 |
qDebug() << "SATAPP: updateQueryAction 2: text=" << text;
|
|
457 |
int min=0;
|
|
458 |
if (mCurrentAction->hasValue(KeyMinLength))
|
|
459 |
min=mCurrentAction->value(KeyMinLength).toInt();
|
|
460 |
int max=10;
|
|
461 |
if (mCurrentAction->hasValue(KeyMaxLength))
|
|
462 |
max=mCurrentAction->value(KeyMaxLength).toInt();
|
|
463 |
if (mCurrentDialog->actions().at(0)) {
|
|
464 |
if (text.length() >= min && text.length() <= max) {
|
|
465 |
mCurrentDialog->actions().at(0)->setEnabled(true);
|
|
466 |
} else {
|
|
467 |
mCurrentDialog->actions().at(0)->setEnabled(false);
|
|
468 |
}
|
|
469 |
}
|
|
470 |
qDebug("SATAPP: SatAppInputProvider::updateQueryAction 2<");
|
|
471 |
}
|
|
472 |
|
|
473 |
// ----------------------------------------------------------------------------
|
|
474 |
// SatAppInputProvider::transmitInkeyFromDialog
|
|
475 |
// ----------------------------------------------------------------------------
|
|
476 |
//
|
|
477 |
void SatAppInputProvider::transmitInkeyFromDialog()
|
|
478 |
{
|
|
479 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyFromDialog >");
|
|
480 |
Q_ASSERT(mCurrentDialog);
|
|
481 |
Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
|
|
482 |
// grab the input string
|
|
483 |
HbInputDialog* inkeyQuery = static_cast<HbInputDialog*>(mCurrentDialog);
|
|
484 |
QString inputString = inkeyQuery->value().toString();
|
|
485 |
qDebug() << "SATAPP: transmitInkeyFromDialog: input=" << inputString;
|
|
486 |
transmitInkeyImmediately(inputString);
|
|
487 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyFromDialog <");
|
|
488 |
}
|
|
489 |
|
|
490 |
// ----------------------------------------------------------------------------
|
|
491 |
// SatAppInputProvider::transmitInkeyImmediately
|
|
492 |
// ----------------------------------------------------------------------------
|
|
493 |
//
|
|
494 |
void SatAppInputProvider::transmitInkeyImmediately(QString text)
|
|
495 |
{
|
|
496 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyImmediately >");
|
|
497 |
transmitInkey((int)text.utf16()[0]);
|
|
498 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyImmediately <");
|
|
499 |
}
|
|
500 |
|
|
501 |
|
|
502 |
// ----------------------------------------------------------------------------
|
|
503 |
// SatAppInputProvider::transmitInkeyTrue
|
|
504 |
// ----------------------------------------------------------------------------
|
|
505 |
//
|
|
506 |
void SatAppInputProvider::transmitInkeyTrue()
|
|
507 |
{
|
|
508 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyTrue >");
|
|
509 |
Q_ASSERT(mCurrentAction);
|
|
510 |
Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
|
|
511 |
Q_ASSERT(mCurrentAction->value(KeyCharacterSet).toInt()==ESatYesNo);
|
|
512 |
transmitInkey(1);
|
|
513 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyTrue <");
|
|
514 |
}
|
|
515 |
|
|
516 |
// ----------------------------------------------------------------------------
|
|
517 |
// SatAppInputProvider::transmitInkeyFalse
|
|
518 |
// ----------------------------------------------------------------------------
|
|
519 |
//
|
|
520 |
void SatAppInputProvider::transmitInkeyFalse()
|
|
521 |
{
|
|
522 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyFalse >");
|
|
523 |
Q_ASSERT(mCurrentAction);
|
|
524 |
Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
|
|
525 |
Q_ASSERT(mCurrentAction->value(KeyCharacterSet).toInt()==ESatYesNo);
|
|
526 |
transmitInkey(0);
|
|
527 |
qDebug("SATAPP: SatAppInputProvider::transmitInkeyFalse >");
|
|
528 |
}
|
|
529 |
|
|
530 |
// ----------------------------------------------------------------------------
|
|
531 |
// SatAppInputProvider::transmit
|
|
532 |
// ----------------------------------------------------------------------------
|
|
533 |
//
|
|
534 |
void SatAppInputProvider::transmitInkey(int key)
|
|
535 |
{
|
|
536 |
qDebug("SATAPP: SatAppInputProvider::transmitInkey >");
|
|
537 |
qDebug("SATAPP: SatAppInputProvider::transmitInkey %d",key);
|
|
538 |
Q_ASSERT(mCurrentAction);
|
|
539 |
Q_ASSERT(mCurrentAction->action()==ESatGetInkeyAction);
|
|
540 |
// write inkey
|
|
541 |
mCurrentAction->set(KeyInKey,key);
|
|
542 |
// overwrite timer duration
|
|
543 |
if (mCurrentAction->hasValue(KeyDuration)) {
|
|
544 |
int newDuration = mInputTimer.elapsed();
|
|
545 |
qDebug("SATAPP: SatAppInputProvider::transmitInkey dur ", newDuration);
|
|
546 |
mCurrentAction->set(KeyDuration, newDuration);
|
|
547 |
}
|
|
548 |
bool immediate = mCurrentAction->value(KeyImmediate).toBool();
|
|
549 |
if(immediate) {
|
|
550 |
mCurrentDialog->close();
|
|
551 |
}
|
|
552 |
mCurrentAction->completeWithSuccess();
|
|
553 |
mCurrentAction = 0;
|
|
554 |
qDebug("SATAPP: SatAppInputProvider::transmitInkey >");
|
|
555 |
}
|
|
556 |
|
|
557 |
// ----------------------------------------------------------------------------
|
|
558 |
// SatAppInputProvider::transmitStringFromDialog
|
|
559 |
// ----------------------------------------------------------------------------
|
|
560 |
//
|
|
561 |
void SatAppInputProvider::transmitStringFromDialog()
|
|
562 |
{
|
|
563 |
qDebug("SATAPP: SatAppInputProvider::transmitStringFromDialog >");
|
|
564 |
Q_ASSERT(mCurrentDialog);
|
|
565 |
Q_ASSERT(mCurrentAction);
|
|
566 |
Q_ASSERT(mCurrentAction->action()==ESatGetInputAction);
|
|
567 |
// write input string
|
|
568 |
HbInputDialog* inputQuery = static_cast<HbInputDialog*>(mCurrentDialog);
|
|
569 |
QString inputString = inputQuery->value().toString();
|
|
570 |
qDebug() << "SATAPP: transmitStringFromDialog: string=" << inputString;
|
|
571 |
|
|
572 |
mCurrentAction->set(KeyInputString,inputString);
|
|
573 |
// overwrite timer duration
|
|
574 |
if (mCurrentAction->hasValue(KeyDuration)) {
|
|
575 |
int newDuration = mInputTimer.elapsed();
|
|
576 |
qDebug("SATAPP: SatAppInputProvider::transmitStringFromDialog dur ",
|
|
577 |
newDuration);
|
|
578 |
mCurrentAction->set(KeyDuration, newDuration);
|
|
579 |
}
|
|
580 |
mCurrentAction->completeWithSuccess();
|
|
581 |
mCurrentAction = 0;
|
53
|
582 |
qDebug("SATAPP: SatAppInputProvider::transmitStringFromDialog <");
|
33
|
583 |
}
|
|
584 |
|
|
585 |
// ----------------------------------------------------------------------------
|
|
586 |
// SatAppInputProvider::startDurationTimer
|
|
587 |
// ----------------------------------------------------------------------------
|
|
588 |
//
|
|
589 |
void SatAppInputProvider::startDurationTimer(int duration)
|
|
590 |
{
|
|
591 |
qDebug("SATAPP: SatAppInputProvider::startDurationTimer %d>", duration);
|
|
592 |
Q_ASSERT(mDurationTimer);
|
|
593 |
if (duration) {
|
|
594 |
mDurationTimer->setSingleShot(true);
|
|
595 |
SAT_ASSERT(connect(mDurationTimer, SIGNAL(timeout()),
|
|
596 |
this, SLOT(resetState())));
|
|
597 |
mDurationTimer->start(duration);
|
|
598 |
}
|
|
599 |
qDebug("SATAPP: SatAppInputProvider::startDurationTimer <");
|
|
600 |
}
|
|
601 |
|
|
602 |
// ----------------------------------------------------------------------------
|
|
603 |
// SatAppInputProvider::clearDurationTimer
|
|
604 |
// ----------------------------------------------------------------------------
|
|
605 |
//
|
|
606 |
void SatAppInputProvider::clearDurationTimer()
|
|
607 |
{
|
|
608 |
qDebug("SATAPP: SatAppInputProvider::clearDurationTimer >");
|
|
609 |
Q_ASSERT(mDurationTimer);
|
|
610 |
Q_ASSERT(mCurrentAction);
|
|
611 |
|
|
612 |
bool res = disconnect(mCurrentAction, SIGNAL(actionCompleted(SatAppAction*)),
|
|
613 |
this, SLOT(clearDurationTimer()));
|
|
614 |
qDebug("SATAPP: SatAppInputProvider::clearDurationTimer act %d>", res);
|
|
615 |
res = disconnect(mDurationTimer, SIGNAL(timeout()),
|
|
616 |
this, SLOT(resetState()));
|
|
617 |
qDebug("SATAPP: SatAppInputProvider::clearDurationTimer dur %d>", res);
|
|
618 |
|
|
619 |
mDurationTimer->stop();
|
|
620 |
qDebug("SATAPP: SatAppInputProvider::clearDurationTimer <");
|
|
621 |
}
|
|
622 |
|
|
623 |
//End of file
|