logsui/logsengine/src/logscontact.cpp
changeset 15 76d2cf7a585e
parent 9 68f3171a5819
child 17 90fe74753f71
--- 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 <QVariant>
-#include <xqservicerequest.h>
 #include <qcontactmanager.h>
+#include <xqappmgr.h>
+#include <cntservicescontact.h>
 
 // -----------------------------------------------------------------------------
 //
@@ -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<QVariant> 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<QVariant> 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<QVariant> &arguments, bool sync )
+bool LogsContact::requestPhonebookService(const QString& interface, 
+                             const QString& operation,
+                             const QList<QVariant>& 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.