--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgnotifications/msgindicatorplugin/src/msgindicator.cpp Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,218 @@
+/*
+ * 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:
+ *
+ */
+#include "msgindicator.h"
+#include "msgindicator_p.h"
+
+#include <QThreadPool>
+#include <QRunnable>
+#include <QByteArray>
+#include <QProcess>
+#include "debugtraces.h"
+
+#include <xqservicerequest.h>
+
+//Localized Constants
+#define LOC_UNREAD_MESSAGES hbTrId("txt_messaging_list_ln")
+#define LOC_NEW_MESSAGES hbTrId("txt_common_opt_ln_new_messages")
+
+//----------------------------------------------------------------------
+class ServiceRequestSenderTask : public QRunnable
+ {
+public:
+ ServiceRequestSenderTask(qint64 conversationId):mConvId(conversationId) {}
+
+ void run()
+ {
+ XQServiceRequest snd(
+ "com.nokia.services.hbserviceprovider.conversationview",
+ "open(qint64)",false);
+ snd << mConvId;
+ bool res=snd.send();
+ }
+
+ ~ServiceRequestSenderTask()
+ {
+ }
+
+ private:
+ qint64 mConvId;
+ };
+
+//----------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------------
+// MsgIndicator::MsgIndicator
+// @see msgindicator.h
+// ----------------------------------------------------------------------------
+MsgIndicator::MsgIndicator(const QString &indicatorType) :
+HbIndicatorInterface(indicatorType,
+ HbIndicatorInterface::GroupPriorityHigh,
+ InteractionActivated)
+ {
+ d_ptr = new MsgIndicatorPrivate(this);
+ }
+
+// ----------------------------------------------------------------------------
+// MsgIndicator::~MsgIndicator
+// @see msgindicator.h
+// ----------------------------------------------------------------------------
+MsgIndicator::~MsgIndicator()
+ {
+ delete d_ptr;
+ }
+
+// ----------------------------------------------------------------------------
+// MsgIndicator::handleInteraction
+// @see msgindicator.h
+// ----------------------------------------------------------------------------
+bool MsgIndicator::handleInteraction(InteractionType type)
+ {
+ bool handled = false;
+ if (type == InteractionActivated)
+ {
+ QThreadPool::globalInstance()->start(
+ new ServiceRequestSenderTask(mConversationId));
+ handled = true;
+ }
+ return handled;
+ }
+
+// ----------------------------------------------------------------------------
+// MsgIndicator::indicatorData
+// @see msgindicator.h
+// ----------------------------------------------------------------------------
+QVariant MsgIndicator::indicatorData(int role) const
+{
+switch(role)
+ {
+ case TextRole:
+ {
+ mConversationId = -100;
+
+ IndicatorData data;
+ d_ptr->getIndicatorInfo(data);
+
+ mConversationFromSingleContact = data.mFromSingle;
+ mBodyText = data.mDescription;
+
+ if (mConversationFromSingleContact)
+ {
+ mConversationId = (int)data.mConversationId;
+ QString name = prepareDisplayName(data);
+ name.append(QString(" (%1)").arg(data.mUnreadMsgCount));
+ return name;
+ }
+ else
+ {
+ QString text = QString("%1 new messages").arg(data.mUnreadMsgCount);
+ return text;
+ }
+ }
+ case SecondaryTextRole:
+ {
+ if (mConversationFromSingleContact)
+ {
+ return mBodyText;
+ }
+ else
+ {
+ return QString();
+ }
+ }
+ case IconNameRole:
+ {
+ QString iconName("z:/resource/messaging/message.svg");
+ return iconName;
+ }
+ default:
+ return QVariant();
+ }
+}
+
+// ----------------------------------------------------------------------------
+// MsgIndicator::handleClientRequest
+// @see msgindicator.h
+// ----------------------------------------------------------------------------
+bool MsgIndicator::handleClientRequest( RequestType type,
+ const QVariant ¶meter)
+ {
+ Q_UNUSED(parameter);
+ bool handled(false);
+ switch (type) {
+ case RequestActivate:
+ {
+ emit dataChanged();
+ handled = true;
+ }
+
+ break;
+ case RequestDeactivate:
+ {
+ // reset data
+ mConversationId = -100;
+ mBodyText = QString();
+ emit deactivate();
+ }
+ break;
+ default:
+ break;
+ }
+
+ return handled;
+ }
+
+// ----------------------------------------------------------------------------
+// MsgIndicator::prepareDisplayName
+// @see msgindicator.h
+// ----------------------------------------------------------------------------
+QString MsgIndicator::prepareDisplayName(IndicatorData& indicatorData) const
+
+ {
+ //Set the Contact Name/Number
+ QString firstName(indicatorData.mFirstName);
+ QString lastName(indicatorData.mLastName);
+ QString contactAddress(indicatorData.mContactNum);
+ QString nickName(indicatorData.mNickName);
+
+ QString displayName;
+
+ if (!nickName.isEmpty())
+ {
+ displayName.append(nickName);
+ }
+ else if ( firstName.isEmpty() && lastName.isEmpty())
+ {
+ displayName.append(contactAddress);
+ }
+ else if (lastName.isEmpty() && !firstName.isEmpty())
+ {
+ displayName.append(firstName);
+ }
+ else if (firstName.isEmpty() && !lastName.isEmpty())
+ {
+ displayName.append(lastName);
+ }
+ else
+ {
+ // If both first Name and last name are present
+ displayName.append(firstName);
+ displayName.append(" ");
+ displayName.append(lastName);
+ }
+ return displayName;
+ }