summaryrefslogtreecommitdiff
path: root/daemon/manager.cpp
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2014-06-28 01:17:26 +0200
committerTomasz Sterna <tomek@xiaoka.com>2014-06-28 01:17:26 +0200
commit5e00628e54cc2de39f0f893af01acb4596b501ce (patch)
tree43bcd291de22a48575df927ab2e1c6e2ad1bcb2a /daemon/manager.cpp
parent863a1a085e83780e8f6eff8a19ab4322a7f5e28a (diff)
Implemented messages forwarding
Diffstat (limited to 'daemon/manager.cpp')
-rw-r--r--daemon/manager.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/daemon/manager.cpp b/daemon/manager.cpp
index c00694e..5e09c75 100644
--- a/daemon/manager.cpp
+++ b/daemon/manager.cpp
@@ -15,6 +15,12 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan
numberFilter.setDetailType(QContactDetail::TypePhoneNumber, QContactPhoneNumber::FieldNumber);
numberFilter.setMatchFlags(QContactFilter::MatchPhoneNumber);
+ conversations = new GroupManager(this);
+ connect(conversations, SIGNAL(groupAdded(GroupObject*)), SLOT(onConversationGroupAdded(GroupObject*)));
+ connect(conversations, SIGNAL(groupUpdated(GroupObject*)), SLOT(onConversationGroupUpdated(GroupObject*)));
+ connect(conversations, SIGNAL(groupDeleted(GroupObject*)), SLOT(onConversationGroupDeleted(GroupObject*)));
+ conversations->getGroups();
+
connect(voice, SIGNAL(activeVoiceCallChanged()), SLOT(onActiveVoiceCallChanged()));
connect(voice, SIGNAL(error(const QString &)), SLOT(onVoiceError(const QString &)));
@@ -106,3 +112,38 @@ void Manager::hangupAll()
handler->hangup();
}
}
+
+void Manager::onConversationGroupAdded(GroupObject *group)
+{
+ if (!group) {
+ qWarning() << "Got null conversation group";
+ return;
+ }
+
+ connect(group, SIGNAL(unreadMessagesChanged()), SLOT(onUnreadMessagesChanged()));
+ if (group->unreadMessages()) processUnreadMessages(group);
+}
+
+
+void Manager::onUnreadMessagesChanged()
+{
+ GroupObject *group = qobject_cast<GroupObject*>(sender());
+ if (!group) {
+ qWarning() << "Got unreadMessagesChanged for null group";
+ return;
+ }
+ processUnreadMessages(group);
+}
+
+void Manager::processUnreadMessages(GroupObject *group)
+{
+ if (group->unreadMessages()) {
+ QString name = group->contactName();
+ QString message = group->lastMessageText();
+ qDebug() << "Msg:" << message;
+ qDebug() << "From:" << name;
+ watch->sendSMSNotification(name.isEmpty()?"Unknown":name, message);
+ } else {
+ qWarning() << "Got processUnreadMessages for group with no new messages";
+ }
+}