diff -r 76d2cf7a585e -r 90fe74753f71 logsui/logsengine/src/logscontact.cpp --- a/logsui/logsengine/src/logscontact.cpp Mon Aug 23 18:14:51 2010 +0300 +++ b/logsui/logsengine/src/logscontact.cpp Fri Sep 03 14:26:05 2010 +0300 @@ -27,6 +27,8 @@ //SYSTEM #include #include +#include +#include #include #include @@ -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 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