diff options
| author | Tomasz Sterna <tomek@xiaoka.com> | 2014-06-28 01:17:26 +0200 |
|---|---|---|
| committer | Tomasz Sterna <tomek@xiaoka.com> | 2014-06-28 01:17:26 +0200 |
| commit | 5e00628e54cc2de39f0f893af01acb4596b501ce (patch) | |
| tree | 43bcd291de22a48575df927ab2e1c6e2ad1bcb2a /daemon/manager.cpp | |
| parent | 863a1a085e83780e8f6eff8a19ab4322a7f5e28a (diff) | |
Implemented messages forwarding
Diffstat (limited to 'daemon/manager.cpp')
| -rw-r--r-- | daemon/manager.cpp | 41 |
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"; + } +} |
