diff -r 4697dfb2d7ad -r 238255e8b033 messagingapp/msgnotifications/msgnotifier/src/msgnotifier_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgnotifications/msgnotifier/src/msgnotifier_p.cpp Fri Apr 16 14:56:15 2010 +0300 @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2009 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: Listen to conversation server events and parse the + * events. These parse infomation passed to notifications and indications. + * + */ + +// SYSTEM INCLUDES +#include +#include +#include +#include + +//USER INCLUDES +#include "msgnotifier.h" +#include "msgnotifier_p.h" +#include "s60qconversions.h" + +#include + +#define QDEBUG_WRITE(str) {qDebug() << str;} +#define QDEBUG_WRITE_FORMAT(str, val) {qDebug() << str << val;} +#define QCRITICAL_WRITE(str) {qCritical() << str;} +#define QCRITICAL_WRITE_FORMAT(str, val) {qCritical() << str << val;} + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::MsgNotifierPrivate +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +MsgNotifierPrivate::MsgNotifierPrivate(MsgNotifier* MsgNotifier): +q_ptr(MsgNotifier), +mCvServer(NULL) +{ +QDEBUG_WRITE("MsgNotifierPrivate::MsgNotifierPrivate : Enter") +TRAP_IGNORE(initL()); +QDEBUG_WRITE("MsgNotifierPrivate::MsgNotifierPrivate : Exit") +} + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::~MsgNotifierPrivate +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +MsgNotifierPrivate::~MsgNotifierPrivate() +{ +QDEBUG_WRITE("MsgNotifierPrivate::~MsgNotifierPrivate : Enter") +if(mCvServer) + { + mCvServer->RemoveConversationListChangeEventL (this); + delete mCvServer; + mCvServer = NULL; + } +QDEBUG_WRITE("MsgNotifierPrivate::~MsgNotifierPrivate : Exit") +} + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::initL +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +void MsgNotifierPrivate::initL() + { + QDEBUG_WRITE("MsgNotifierPrivate::initL : Enter") + + mCvServer = CCSRequestHandler::NewL(); + mCvServer->RequestConversationListChangeEventL(this); + updateIndications(); + + QDEBUG_WRITE("MsgNotifierPrivate::initL : Exit") + } + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::AddConversationList +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +void MsgNotifierPrivate::AddConversationList( + const CCsClientConversation& aClientConversation) + { + QDEBUG_WRITE("MsgNotifierPrivate::AddConversationList : Enter") + + processListEntry(aClientConversation); + updateIndications(); + + QDEBUG_WRITE("MsgNotifierPrivate::AddConversationList : Exit") + } + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::DeleteConversationList +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +void MsgNotifierPrivate::DeleteConversationList( + const CCsClientConversation& /*aClientConversation*/) + { + QDEBUG_WRITE("MsgNotifierPrivate::DeleteConversationList : Enter") + updateIndications(); + QDEBUG_WRITE("MsgNotifierPrivate::DeleteConversationList : Exit") + } + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::ModifyConversationList +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +void MsgNotifierPrivate:: ModifyConversationList( + const CCsClientConversation& aClientConversation) + { + QDEBUG_WRITE("MsgNotifierPrivate::ModifyConversationList : Enter") + + processListEntry(aClientConversation); + updateIndications(); + + QDEBUG_WRITE("MsgNotifierPrivate::ModifyConversationList : Exit") + } + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::RefreshConversationList +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +void MsgNotifierPrivate::RefreshConversationList() + { + + } + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::processListEntry +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +void MsgNotifierPrivate::processListEntry( + const CCsClientConversation& aClientConversation) + { + QDEBUG_WRITE("MsgNotifierPrivate::processListEntry : Enter") + + CCsConversationEntry* convEntry = + aClientConversation.GetConversationEntry(); + + QDEBUG_WRITE_FORMAT("MsgNotifierPrivate::processListEntry Direction", + convEntry->ConversationDir()) + QDEBUG_WRITE_FORMAT("MsgNotifierPrivate::processListEntry New Entry Attribute", + convEntry->IsAttributeSet(ECsAttributeNewEntryAdded)) + QDEBUG_WRITE_FORMAT("MsgNotifierPrivate::processListEntry Unread Attribute", + convEntry->IsAttributeSet(ECsAttributeUnread)) + + bool newFlag=convEntry->IsAttributeSet(ECsAttributeNewEntryAdded); + + if((convEntry->ConversationDir() == ECsDirectionIncoming) + && convEntry->IsAttributeSet(ECsAttributeNewEntryAdded) + && convEntry->IsAttributeSet(ECsAttributeUnread)) + { + QDEBUG_WRITE("processListEntry : Processing data for Notification") + + NotificationData notifData; + + notifData.mConversationId = aClientConversation.GetConversationEntryId(); + notifData.mMsgType = convEntry->GetType(); + + HBufC* firstName = aClientConversation.GetFirstName(); + HBufC* lastName = aClientConversation.GetLastName(); + HBufC* number = convEntry->Contact(); + HBufC* descrp = convEntry->Description(); + + if(firstName) + { + notifData.mFirstName = + S60QConversions::s60DescToQString(*firstName); + } + if(lastName) + { + notifData.mLastName = S60QConversions::s60DescToQString(*lastName); + } + if(number) + { + notifData.mContactNum = S60QConversions::s60DescToQString(*number); + } + if(descrp) + { + notifData.mDescription = S60QConversions::s60DescToQString(*descrp); + } + + q_ptr->displayNewMessageNotification(notifData); + + QDEBUG_WRITE("processListEntry : Notification display called") + } + + QDEBUG_WRITE("MsgNotifierPrivate::processListEntry : Exit") + } + +// ---------------------------------------------------------------------------- +// MsgNotifierPrivate::updateIndications +// @see MsgNotifierPrivate.h +// ---------------------------------------------------------------------------- +void MsgNotifierPrivate::updateIndications() + { + QDEBUG_WRITE("MsgNotifierPrivate::updateIndicationsL : Enter") + + int unreadCount(0); + TRAP_IGNORE(unreadCount = mCvServer->GetTotalUnreadCountL()); + + QDEBUG_WRITE_FORMAT("MsgNotifierPrivate::" + "updateIndications unreadCount = ",unreadCount ); + + //activate or deactivate indications based on unread count + q_ptr->updateIndications(unreadCount); + + QDEBUG_WRITE("MsgNotifierPrivate::updateIndicationsL : Exit") + } +//EOF