diff -r 52d644758b05 -r 76d2cf7a585e logsui/logsengine/src/logscontact.cpp --- a/logsui/logsengine/src/logscontact.cpp Fri Aug 06 14:57:47 2010 +0300 +++ b/logsui/logsengine/src/logscontact.cpp Mon Aug 23 18:14:51 2010 +0300 @@ -26,8 +26,9 @@ //SYSTEM #include -#include #include +#include +#include // ----------------------------------------------------------------------------- // @@ -36,7 +37,7 @@ LogsContact::LogsContact(LogsEvent& event, LogsDbConnector& dbConnector) : QObject(), mDbConnector(dbConnector), - mService(0), + mAiwRequest(0), mCurrentRequest(TypeLogsContactSave), mContactId(0), mSaveAsOnlineAccount(false) @@ -60,7 +61,7 @@ unsigned int contactId) : QObject(), mDbConnector(dbConnector), - mService(0), + mAiwRequest(0), mCurrentRequest(TypeLogsContactSave), mNumber(number), mContactId(contactId), @@ -76,7 +77,7 @@ LogsContact::~LogsContact() { LOGS_QDEBUG( "logs [ENG] <-> LogsContact::~LogsContact()" ) - delete mService; + delete mAiwRequest; } // ---------------------------------------------------------------------------- @@ -116,9 +117,11 @@ if ( allowedRequestType() == TypeLogsContactOpen ) { mCurrentRequest = TypeLogsContactOpen; + QString interface("com.nokia.symbian.IContactsView"); + QString operation("openContactCard(int)"); QList arguments; arguments.append( QVariant(mContactId) ); - ret = requestFetchService( "open(int)", arguments ); + ret = requestPhonebookService( interface, operation, arguments ); } LOGS_QDEBUG_2( "logs [ENG] <- LogsContact::open(): ", ret ) @@ -160,8 +163,8 @@ void LogsContact::cancelServiceRequest() { LOGS_QDEBUG( "logs [ENG] -> LogsContact::cancelServiceRequest()" ) - delete mService; - mService = 0; + delete mAiwRequest; + mAiwRequest = 0; LOGS_QDEBUG( "logs [ENG] <- LogsContact::cancelServiceRequest()" ) } @@ -169,7 +172,7 @@ // // ---------------------------------------------------------------------------- // -bool LogsContact::save(QString message) +bool LogsContact::save(const QString& operation) { QList arguments; @@ -188,7 +191,8 @@ if ( arguments.count() == 2 ) { mCurrentRequest = TypeLogsContactSave; - ret = requestFetchService( message, arguments ); + QString interface("com.nokia.symbian.IContactsEdit"); + ret = requestPhonebookService( interface, operation, arguments ); } else { LOGS_QDEBUG( "logs [ENG] !No Caller ID, not saving the contact..") } @@ -200,42 +204,58 @@ // // ---------------------------------------------------------------------------- // -bool LogsContact::requestFetchService( QString message, - const QList &arguments, bool sync ) +bool LogsContact::requestPhonebookService(const QString& interface, + const QString& operation, + const QList& arguments) { - QString service("com.nokia.services.phonebookservices.Fetch"); + bool ret = false; cancelServiceRequest(); - mService = new XQServiceRequest(service, message, sync); - connect(mService, SIGNAL(requestCompleted(QVariant)), this, - SLOT(handleRequestCompleted(QVariant))); + XQApplicationManager appMng; + mAiwRequest = appMng.create( interface, operation, true); // embedded + if (mAiwRequest) { + connect(mAiwRequest, SIGNAL(requestOk(const QVariant&)), + this, SLOT(handleRequestCompleted(const QVariant&))); + connect(mAiwRequest, SIGNAL(requestError(int,const QString&)), + this, SLOT(handleError(int,const QString&))); - mService->setArguments(arguments); - XQRequestInfo info; - info.setEmbedded(true); - mService->setInfo(info); - - QVariant retValue; - return mService->send(retValue); + mAiwRequest->setArguments(arguments); + mAiwRequest->setSynchronous(false); + ret = mAiwRequest->send(); + } + return ret; +} + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +void LogsContact::handleError(int errorCode, const QString& errorMessage) +{ + LOGS_QDEBUG_4( "logs [ENG] <-> LogsContact::handleError(): ", errorCode, + " ,msg: ", errorMessage) + cancelServiceRequest(); } // ---------------------------------------------------------------------------- // Phonebookservices define following return values: -// - contact wasn't modified (-2) -// - was deleted (-1) -// - was saved (1) -// - saving failed (0) +// KCntServicesReturnValueContactNotModified = 0; +// KCntServicesReturnValueContactDeleted = -1; +// KCntServicesReturnValueContactSaved = 1; +// KCntServicesTerminated = -2; // ---------------------------------------------------------------------------- // void LogsContact::handleRequestCompleted(const QVariant& result) { - delete mService; - mService = 0; + delete mAiwRequest; + mAiwRequest = 0; bool retValOk = false; int serviceRetVal = result.toInt(&retValOk); LOGS_QDEBUG_3( "logs [ENG] -> LogsContact::handleRequestCompleted(), (retval, is_ok)", serviceRetVal, retValOk ) - bool modified = ( retValOk && serviceRetVal == 1 ); + bool modified = ( retValOk + && (serviceRetVal == KCntServicesReturnValueContactSaved + || serviceRetVal == KCntServicesReturnValueContactDeleted) ); //If existing contact was modified, cached match for the contact should be //cleaned up, since remote party info might have been changed.