diff -r 2eacb6118286 -r ba76fc04e6c2 phoneengine/parserrecognizer/src/parserrecognizer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneengine/parserrecognizer/src/parserrecognizer.cpp Fri Jun 04 10:19:18 2010 +0100 @@ -0,0 +1,127 @@ +/*! +* Copyright (c) 2009-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: Recognizes the parser messages that needs to be notified to +* the world using QtHighway. +*/ + +#include +#include +#include "parserrecognizer.h" +#include "qtphonelog.h" + +ParserRecognizer::ParserRecognizer(QObject* parent) + : + QObject(parent), + m_currentRequest(0) +{ +} + +ParserRecognizer::~ParserRecognizer() +{ + delete m_currentRequest; +} + +void ParserRecognizer::sendMessage(const int message, const int callId) +{ + Q_UNUSED(callId); // for now + PHONE_DEBUG2("ParserRecognizer::sendMessage message:", message); + QString api; + QString method; + bool recognized = true; + + switch(message) { + case MEngineMonitor::EPEMessageActivateRfsDeep: + api = "com.nokia.services.telephony"; + method = "activateDeepRestoreFactorySettings()"; + break; + + case MEngineMonitor::EPEMessageActivateRfsNormal: + api = "com.nokia.services.telephony"; + method = "activateNormalRestoreFactorySettings()"; + break; + + case MEngineMonitor::EPEMessageShowBTDeviceAddress: + api = "com.nokia.services.bluetooth"; + method = "showBluetoothDeviceAddress()"; + break; + + case MEngineMonitor::EPEMessageShowBTLoopback: + api = "com.nokia.services.bluetooth"; + method = "showBluetoothLoopback()"; + break; + + case MEngineMonitor::EPEMessageBTDebugMode: + api = "com.nokia.services.bluetooth"; + method = "activateBluetoothDebugMode()"; + break; + + case MEngineMonitor::EPEMessageShowVersion: + api = "com.nokia.services.devicemanager"; + method = "showVersionNumber()"; + break; + + case MEngineMonitor::EPEMessageSSRequestFailed: + api = "com.nokia.services.telephony"; + method = "supplementaryServiceRequestFailed()"; + break; + + default: + recognized = false; + break; + } + + if (recognized && (!m_currentRequest)) { + PHONE_DEBUG2("ParserRecognizer::sendMessage api:", api); + PHONE_DEBUG2("ParserRecognizer::sendMessage method:", method); + m_currentRequest = new XQServiceRequest(api, method, false); + // Due to a Qt Highway bug in assignment operator implementation we + // need to set request as asynchronous with a setter function. + m_currentRequest->setSynchronous(false); + connect( + m_currentRequest, SIGNAL(requestCompleted(const QVariant &)), + this, SLOT(requestCompleted(const QVariant &))); + connect( + m_currentRequest, SIGNAL(requestError(int)), + this, SLOT(requestError(int))); + + int exceptionAsError = 0; + bool requestOk = false; + QT_TRYCATCH_ERROR( + exceptionAsError, requestOk = m_currentRequest->send()); + if ((0 != exceptionAsError) || (!requestOk)) { + PHONE_DEBUG2("ParserRecognizer::sendMessage exceptionAsError:", + exceptionAsError); + PHONE_DEBUG2("ParserRecognizer::sendMessage requestOk:", + requestOk); + requestCompleted(QVariant()); + } + } +} + +void ParserRecognizer::requestCompleted(const QVariant &returnValue) +{ + PHONE_DEBUG("ParserRecognizer::requestCompleted"); + Q_UNUSED(returnValue); + + delete m_currentRequest; + m_currentRequest = NULL; +} + +void ParserRecognizer::requestError(int error) +{ + PHONE_DEBUG2("ParserRecognizer::requestError", error); + + delete m_currentRequest; + m_currentRequest = NULL; +}