diff -r fa1df4b99609 -r ebe688cedc25 messagingapp/msgnotifications/msgnotifier/src/msgnotifier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgnotifications/msgnotifier/src/msgnotifier.cpp Tue Aug 31 15:11:31 2010 +0300 @@ -0,0 +1,206 @@ +/* + * 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: Notification server main class. + * Handles calling notifications and inidcations + * + */ + +// SYSTEM INCLUDES +#include +#include +#include + +//USER INCLUDES +#include "msgnotifier.h" +#include "msgnotifier_p.h" +#include "msgsimnumberdetector.h" +#include "msgnotificationdialogpluginkeys.h" +#include "msginfodefs.h" +#include "ccsdefs.h" +#include "unidatamodelloader.h" +#include "unidatamodelplugininterface.h" +#include "msgcontacthandler.h" + +#include "debugtraces.h" + +// LOCALIZATION CONSTANTS +#define LOC_RECEIVED_FILES hbTrId("txt_messaging_title_received_files") +#define LOC_BUSINESS_CARD hbTrId("txt_messaging_dpopinfo_business_card") +#define CARD_SEPERATOR "-" +#define LOC_MULTIMEDIA_MSG hbTrId("txt_messaging_dpopinfo_multimedia_message") + +// plugin ids +const QString IndicationsPluginId("com.nokia.messaging.newindicatorplugin"); +const QString PendingMsgPluginId("com.nokia.messaging.pendingindicatorplugin"); +const QString FailedMsgPluginId("com.nokia.messaging.failedindicatorplugin"); +const QString NotificationPluginId("com.nokia.messaging.newmsgnotificationdialog"); + +// ---------------------------------------------------------------------------- +// MsgNotifier::MsgNotifier +// @see MsgNotifier.h +// ---------------------------------------------------------------------------- +MsgNotifier::MsgNotifier(QObject* parent) : + QObject(parent) +{ + QDEBUG_WRITE("MsgNotifier::MsgNotifier : Enter") + + d_ptr = q_check_ptr(new MsgNotifierPrivate(this)); + + mSimHandler = new MsgSimNumDetector(); + + QDEBUG_WRITE("MsgNotifier::MsgNotifier : Exit") +} + +// ---------------------------------------------------------------------------- +// MsgNotifier::~MsgNotifier +// @see MsgNotifier.h +// ---------------------------------------------------------------------------- +MsgNotifier::~MsgNotifier() +{ + QDEBUG_WRITE("MsgNotifier::~MsgNotifier : Enter") + + delete d_ptr; + delete mSimHandler; + + QDEBUG_WRITE("MsgNotifier::~MsgNotifier : Enter") +} + +// ---------------------------------------------------------------------------- +// MsgNotifier::displayNewMessageNotification +// @see MsgNotifier.h +// ---------------------------------------------------------------------------- +void MsgNotifier::displayNewMessageNotification(NotificationData& data) +{ + QDEBUG_WRITE("MsgNotifier::displayNewMessageNotification : Enter") + QDEBUG_WRITE("MsgNotifier::displayNewMessageNotification :" + " Printing notification data") + + QDEBUG_WRITE_FORMAT("Name : ", data.mDisplayName); + QDEBUG_WRITE_FORMAT("Number : ", data.mContactNum); + QDEBUG_WRITE_FORMAT("Description : ", data.mDescription); + QDEBUG_WRITE_FORMAT("Type : ", data.mMsgType); + QDEBUG_WRITE_FORMAT("Conv Id : ", data.mConversationId); + QDEBUG_WRITE_FORMAT("Msv Entry Id : ", data.msvEntryId); + // Fill data to variant map + QVariantMap notificationData; + + //incase of BT messages show filename as description + QString description; + if ( ECsBlueTooth == data.mMsgType) + { + data.mDisplayName = LOC_RECEIVED_FILES; + QFileInfo fileinfo(data.mDescription); + description = fileinfo.fileName(); + } + else if ( ECsBioMsg_VCard == data.mMsgType) + { + UniDataModelLoader* pluginLoader = new UniDataModelLoader; + UniDataModelPluginInterface* bioMsgPlugin = pluginLoader->getDataModelPlugin(ConvergedMessage::BioMsg); + bioMsgPlugin->setMessageId(data.msvEntryId); + if (bioMsgPlugin->attachmentCount() > 0) + { + UniMessageInfoList attList = bioMsgPlugin->attachmentList(); + QString attachmentPath = attList[0]->path(); + description = LOC_BUSINESS_CARD; + description.append(CARD_SEPERATOR); + description.append( + MsgContactHandler::getVCardDisplayName(attachmentPath)); + } + delete pluginLoader; + } + else if( data.mDescription.isEmpty() && (ECsMMS == data.mMsgType || ECsAudio == data.mMsgType) ) + { + description = LOC_MULTIMEDIA_MSG; + } + else + { + description = data.mDescription; + } + + notificationData[QString(KDisplayNameKey)] = data.mDisplayName ; + notificationData[QString(KConversationIdKey)] = data.mConversationId; + notificationData[QString(KMessageTypeKey)] = data.mMsgType; + notificationData[QString(KMessageBodyKey)] = description; + notificationData[QString(KMessageSubjectKey)] = description; + notificationData[QString(KContactAddressKey)] = data.mContactNum; + + // call device dialog to show notification + HbDeviceDialog deviceDialog ; + deviceDialog.show(NotificationPluginId,notificationData); + + QDEBUG_WRITE("MsgNotifier::displayNewMessageNotification : Exit") + } + + +// ---------------------------------------------------------------------------- +// MsgNotifier::updateIndications +// @see MsgNotifier.h +// ---------------------------------------------------------------------------- +void MsgNotifier::updateUnreadIndications(int unreadCount) +{ + QDEBUG_WRITE("MsgNotifier::updateUnreadIndications Enter") + + HbIndicator indicator; + if (unreadCount) { + QByteArray dataArray; + QDataStream messageStream(&dataArray, QIODevice::WriteOnly | QIODevice::Append); + MsgInfo info; + info.mIndicatorType = NewIndicatorPlugin; + + // only the unread count is used for unread indications as of now. + // the other values are not needed. + + info.mMsgCount = unreadCount; + info.mConversationId = -1; + + info.serialize(messageStream); + QVariant parameter(dataArray); + + indicator.activate(IndicationsPluginId, parameter); + QDEBUG_WRITE("MsgNotifier::updateUnreadIndications Indications Activated") + } + else { + indicator.deactivate(IndicationsPluginId); + QDEBUG_WRITE("MsgNotifier::updateUnreadIndications Indications Deactivated") + } + + QDEBUG_WRITE("MsgNotifier::updateUnreadIndications Exit") +} + +// ---------------------------------------------------------------------------- +// MsgNotifier::updateOutboxIndications +// @see MsgNotifier.h +// ---------------------------------------------------------------------------- +void MsgNotifier::updateOutboxIndications(MsgInfo& data) +{ + QDEBUG_WRITE("MsgNotifier::updateOutboxIndications Enter") + + HbIndicator indicator; + if (data.mMsgCount) { + QByteArray dataArray; + QDataStream messageStream(&dataArray, QIODevice::WriteOnly | QIODevice::Append); + data.serialize(messageStream); + QVariant parameter(dataArray); + indicator.activate(indicatorName(data.mIndicatorType), parameter); + QDEBUG_WRITE("MsgNotifier::updateOutboxIndications Indications Activated") + } + else { + indicator.deactivate(indicatorName(data.mIndicatorType)); + QDEBUG_WRITE("MsgNotifier::updateOutboxIndications Indications Deactivated") + } + + QDEBUG_WRITE("MsgNotifier::updateOutboxIndications Exit") +} + +//EOF