From: Arun Ravindran <[email protected]>
---
src/backend.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
src/backend.h | 5 ++++-
2 files changed, 55 insertions(+), 1 deletions(-)
diff --git a/src/backend.cpp b/src/backend.cpp
index 14b8703..1cdb922 100644
--- a/src/backend.cpp
+++ b/src/backend.cpp
@@ -248,6 +248,9 @@ void Backend::getPropertiesFinished(QDBusPendingCallWatcher
*call)
if (!mSmsManagerInterface->isValid()) {
qCritical("unable to connect to " TELEPHONY_SMSMGR_INTERFACE);
}
+ // Connect signal for incoming sms
+ connect(mSmsManagerInterface, SIGNAL(IncomingMessage(const QString,
const QVariantMap)), this,
+ SLOT(messageReceived(const
QString , const QVariantMap)));
}
delete call;
}
@@ -367,6 +370,54 @@ void Backend::messagesRemoved(const QMailMessageIdList
&ids)
emit smsRemoved(messageids);
}
+void Backend:: messageReceived(const QString in0, const QVariantMap in1)
+{
+ QStringList keylist = in1.keys();
+ QVariantList valuelist = in1.values();
+ QString sender,time,localtime;
+
+ qDebug()<< "Received sms: " << in0;
+
+ for(int loop=0;loop < keylist.size();loop++) {
+ if(keylist.at(loop) == QString("Sender")) {
+ sender = valuelist.at(loop).toString();
+ } else if(keylist.at(loop) == QString("SentTime")) {
+ time = valuelist.at(loop).toString();
+ } else if(keylist.at(loop) == QString("LocalSentTime")) {
+ localtime = valuelist.at(loop).toString();
+ }
+ } //end for
+
+ QMailMessage *msg = new QMailMessage();
+ msg->setMessageType(QMailMessage::Sms);
+ msg->setParentAccountId(mAccountId);
+ msg->setParentFolderId(QMailFolder::LocalStorageFolderId);
+ msg->setStatus(QMailMessage::Incoming, true);
+ msg->setStatus(QMailMessage::Outgoing, false);
+ msg->setStatus(QMailMessage::Read, false);
+ msg->setStatus(QMailMessage::Draft, false);
+ msg->setFrom(QMailAddress(sender));
+ msg->setBody(QMailMessageBody::fromData(in0,
QMailMessageContentType("text/plain"), QMailMessageBody::NoEncoding));
+ msg->setDate(QMailTimeStamp(time)); //do we neeed to set the local time
+ if (!mMailStore->addMessage(msg)) {
+ qCritical("messageReceived: addMessage failed: %d",
mMailStore->lastError());
+ }
+ //Display sms notification
+ displaySmsNotification(in0,sender);
+}
+
+void Backend::displaySmsNotification(const QString &text, const QString
&sender)
+{
+ QString message;
+ message.append("NewMessage\n");
+ message.append("From: ");
+ message.append(sender);
+ message.append("\nText: ");
+ message.append(text);
+ MMessageBox dialog(message);
+ dialog.exec();
+}
+
void Backend::messagesUpdated(const QMailMessageIdList &ids)
{
QList<SmsData> messages;
diff --git a/src/backend.h b/src/backend.h
index 68637bc..779303b 100644
--- a/src/backend.h
+++ b/src/backend.h
@@ -60,11 +60,14 @@ private slots:
void messagesAdded(const QMailMessageIdList&);
void messagesRemoved(const QMailMessageIdList&);
void messagesUpdated(const QMailMessageIdList&);
-
+ //Process received incoming sms
+ void messageReceived(const QString in0, const QVariantMap in1);
private:
bool isMessageServerRunning();
bool startMessageServer();
void setupAccount();
+ //Incoming sms dialog
+ void displaySmsNotification(const QString&, const QString&);
ManagerInterface *mManagerInterface;
SmsManagerInterface *mSmsManagerInterface;
--
1.7.0.4
_______________________________________________
MeeGo-dev mailing list
[email protected]
http://lists.meego.com/listinfo/meego-dev