summaryrefslogtreecommitdiff
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
parent863a1a085e83780e8f6eff8a19ab4322a7f5e28a (diff)
Implemented messages forwarding
-rw-r--r--daemon/daemon.pro2
-rw-r--r--daemon/manager.cpp41
-rw-r--r--daemon/manager.h6
-rw-r--r--rpm/pebble.yaml1
4 files changed, 50 insertions, 0 deletions
diff --git a/daemon/daemon.pro b/daemon/daemon.pro
index 01ea8d1..ca7fd70 100644
--- a/daemon/daemon.pro
+++ b/daemon/daemon.pro
@@ -2,12 +2,14 @@ TARGET = pebbled
CONFIG += console
CONFIG -= app_bundle
+CONFIG += link_pkgconfig
QT -= gui
INCLUDEPATH += ../lib
LIBS += -L$$OUT_PWD/../lib -lpebble
QT += bluetooth dbus contacts
+PKGCONFIG += commhistory-qt5
QMAKE_CXXFLAGS += -std=c++0x
SOURCES += \
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";
+ }
+}
diff --git a/daemon/manager.h b/daemon/manager.h
index dae33fe..0d6e8ac 100644
--- a/daemon/manager.h
+++ b/daemon/manager.h
@@ -9,8 +9,10 @@
#include <QBluetoothLocalDevice>
#include <QtContacts/QContactManager>
#include <QtContacts/QContactDetailFilter>
+#include <CommHistory/GroupModel>
using namespace QtContacts;
+using namespace CommHistory;
class Manager : public QObject
{
@@ -24,11 +26,13 @@ class Manager : public QObject
QContactManager *contacts;
QContactDetailFilter numberFilter;
+ GroupManager *conversations;
public:
explicit Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallManager *voice);
Q_INVOKABLE QString findPersonByNumber(QString number);
+ Q_INVOKABLE void processUnreadMessages(GroupObject *group);
signals:
@@ -39,6 +43,8 @@ protected slots:
void onActiveVoiceCallChanged();
void onVoiceError(const QString &message);
void onActiveVoiceCallStatusChanged();
+ void onConversationGroupAdded(GroupObject *group);
+ void onUnreadMessagesChanged();
};
diff --git a/rpm/pebble.yaml b/rpm/pebble.yaml
index 7495643..bc5ee9b 100644
--- a/rpm/pebble.yaml
+++ b/rpm/pebble.yaml
@@ -18,6 +18,7 @@ PkgConfigBR:
- Qt5Quick
- Qt5Qml
- Qt5Core
+- commhistory-qt5
- sailfishapp >= 0.0.10
Requires:
- sailfishsilica-qt5 >= 0.10.9