--- /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 <hbdevicedialog.h>
+#include <hbindicator.h>
+#include <qfileinfo.h>
+
+//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