logsui/logsengine/src/logscontact.cpp
changeset 19 e4c884866116
parent 16 c5af8598d22c
child 21 2f0af9ba7665
--- a/logsui/logsengine/src/logscontact.cpp	Thu Sep 02 20:27:05 2010 +0300
+++ b/logsui/logsengine/src/logscontact.cpp	Fri Sep 17 08:29:34 2010 +0300
@@ -27,6 +27,8 @@
 //SYSTEM
 #include <QVariant>
 #include <qcontactmanager.h>
+#include <qcontactonlineaccount.h>
+#include <qcontactphonenumber.h>
 #include <xqappmgr.h>
 #include <cntservicescontact.h>
 
@@ -90,7 +92,13 @@
     LogsContact::RequestType type = TypeLogsContactSave;
     
     if ( isContactInPhonebook() ) {
-        type = TypeLogsContactOpen;
+        if (isContactGroup()) {
+            type = TypeLogsContactOpenGroup;
+            LOGS_QDEBUG( "logs [ENG] -> TypeLogsContactOpenGroup" )
+        } else {
+            type = TypeLogsContactOpen;
+            LOGS_QDEBUG( "logs [ENG] -> TypeLogsContactOpenGroup" )
+        }
     }
     
     LOGS_QDEBUG_2( "logs [ENG] <- LogsContact::allowedRequestType(): ", type )
@@ -114,11 +122,14 @@
 {
     LOGS_QDEBUG( "logs [ENG] -> LogsContact::open()")
     bool ret = false;
-    if ( allowedRequestType() == TypeLogsContactOpen ) {
-        mCurrentRequest = TypeLogsContactOpen;
-
+    LogsContact::RequestType type = allowedRequestType();
+    if ( type == TypeLogsContactOpen || type == TypeLogsContactOpenGroup) {
+        mCurrentRequest = type;
         QString interface("com.nokia.symbian.IContactsView");
         QString operation("openContactCard(int)");
+        if (type == TypeLogsContactOpenGroup) {
+            operation = "openGroup(int)";
+        }
         QList<QVariant> arguments;
         arguments.append( QVariant(mContactId) );
         ret = requestPhonebookService( interface, operation, arguments );
@@ -168,6 +179,19 @@
     LOGS_QDEBUG( "logs [ENG] <- LogsContact::cancelServiceRequest()" )
 }
 
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+bool LogsContact::isContactGroup()
+{
+    bool isGroup = (mContact.type() == QContactType::TypeGroup);    
+    LOGS_QDEBUG_2( "logs [ENG] <-> LogsContact::isContactGroup(): ", isGroup )
+    return isGroup;
+}
+
+
 // ----------------------------------------------------------------------------
 //
 // ----------------------------------------------------------------------------
@@ -261,7 +285,8 @@
     //cleaned up, since remote party info might have been changed.
     //However, if remote party info is taken from symbian DB, it won't be 
     //updated
-    bool clearCached = ( mCurrentRequest == TypeLogsContactOpen );
+    bool clearCached = ( mCurrentRequest == TypeLogsContactOpen
+                         || mCurrentRequest == TypeLogsContactOpenGroup ); 
     if ( modified ) {
         mContact = contact();
         mDbConnector.updateDetails(clearCached);
@@ -293,8 +318,7 @@
 //
 bool LogsContact::isContactInPhonebook()
 {
-    QContactLocalId localId = mContactId;    
-    return ( localId && localId == mContact.localId() );
+    return ( mContactId && mContactId == mContact.localId() );
 }
 
 // End of file