diff -r 594d59766373 -r 7d48bed6ce0c telutils/dialpad/src/dialpadmailboxeventfilterbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telutils/dialpad/src/dialpadmailboxeventfilterbase.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,105 @@ +/* +* 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 +#include +#include +#include +#include "dialpadmailboxeventfilterbase.h" +#include "dialpadsymbianwrapper.h" +#include "dialpad.h" +#include "qtphonesrvlog.h" + +#ifdef Q_OS_SYMBIAN +#include +#include +#endif //Q_OS_SYMBIAN + +const int DialpadLongKeyPressButtonCount(3); +static const int DialpadLongKeyPressSupportingButtons[DialpadLongKeyPressButtonCount] = +{ Qt::Key_1, Qt::Key_2, Qt::Key_NumberSign }; + + +DialpadMailboxEventFilterBase::DialpadMailboxEventFilterBase(Dialpad* dialpad, QObject* parent) : + QObject(parent), mDialpad(dialpad), mKeyEvent(NULL) +{ + PHONE_TRACE; + mLongPressTimer = new QTimer(this); + mLongPressTimer->setSingleShot(true); + connect(mLongPressTimer,SIGNAL(timeout()),this,SLOT(handleLongKeyPress())); + mSymbianWrapper = new DialpadSymbianWrapper(this); +} + +DialpadMailboxEventFilterBase::~DialpadMailboxEventFilterBase() +{ +} + +bool DialpadMailboxEventFilterBase::checkIfSendEventAndConsumeEvent(const int pressedKey, const int eventType) +{ + PHONE_TRACE4("pressedKey:", pressedKey, "eventType:", eventType); + bool sendKeyHandled(false); + // first check that pressed key is send key. + if (pressedKey == Qt::Key_Yes || + pressedKey == Qt::Key_Enter) { + if (eventType == QEvent::KeyPress) { + sendKeyHandled = handleCallButtonPress(); + } else if ((eventType == QEvent::KeyRelease) && + (!mDialpad->editor().text().isEmpty())) { + sendKeyHandled = true; + } + } + return sendKeyHandled; +} + +bool DialpadMailboxEventFilterBase::isLongKeyPressSupported(const int key) +{ + PHONE_TRACE2("key:", key); + bool longKeySupport(false); + // check if dialpad button is pressed. + for (int i = 0; i < DialpadLongKeyPressButtonCount; i++) { + if (key==DialpadLongKeyPressSupportingButtons[i]) { + longKeySupport = true; + // Save key code for handleCallButtonPress. + mKeyEvent = key; + } + } + return longKeySupport; +} + +void DialpadMailboxEventFilterBase::clearEditor() +{ + PHONE_TRACE; + // Erase data from dialpad editor. + mDialpad->editor().setText(QString("")); +} + +void DialpadMailboxEventFilterBase::createCall(const QString &phoneNumber, bool createVideoCall) +{ + PHONE_TRACE2("phoneNumber:", phoneNumber); +#ifdef Q_OS_SYMBIAN + if(createVideoCall) { + XQServiceRequest snd("com.nokia.symbian.ICallDial","dialVideo(QString)", false); + snd << phoneNumber; + QVariant retValue; + snd.send(retValue); + } else { + XQServiceRequest snd("com.nokia.symbian.ICallDial","dial(QString)", false); + snd << phoneNumber; + QVariant retValue; + snd.send(retValue); + } +#endif // Q_OS_SYMBIAN +}