summaryrefslogtreecommitdiff
path: root/daemon/manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/manager.cpp')
-rw-r--r--daemon/manager.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/daemon/manager.cpp b/daemon/manager.cpp
index 739f891..c00694e 100644
--- a/daemon/manager.cpp
+++ b/daemon/manager.cpp
@@ -1,10 +1,20 @@
#include "manager.h"
#include <QDebug>
+#include <QtContacts/QContact>
+#include <QtContacts/QContactPhoneNumber>
Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallManager *voice) :
QObject(0), watch(watch), dbus(dbus), voice(voice)
{
+ // We don't need to handle presence changes, so report them separately and ignore them
+ QMap<QString, QString> parameters;
+ parameters.insert(QString::fromLatin1("mergePresenceChanges"), QString::fromLatin1("false"));
+ contacts = new QContactManager("", parameters, this);
+
+ numberFilter.setDetailType(QContactDetail::TypePhoneNumber, QContactPhoneNumber::FieldNumber);
+ numberFilter.setMatchFlags(QContactFilter::MatchPhoneNumber);
+
connect(voice, SIGNAL(activeVoiceCallChanged()), SLOT(onActiveVoiceCallChanged()));
connect(voice, SIGNAL(error(const QString &)), SLOT(onVoiceError(const QString &)));
@@ -52,12 +62,12 @@ void Manager::onActiveVoiceCallStatusChanged()
case VoiceCallHandler::STATUS_ALERTING:
case VoiceCallHandler::STATUS_DIALING:
qDebug() << "Tell outgoing:" << handler->lineId();
- watch->ring("+48123123123", "person", false);
+ watch->ring(handler->lineId(), findPersonByNumber(handler->lineId()), false);
break;
case VoiceCallHandler::STATUS_INCOMING:
case VoiceCallHandler::STATUS_WAITING:
qDebug() << "Tell incoming:" << handler->lineId();
- watch->ring("+48123123123", "person");
+ watch->ring(handler->lineId(), findPersonByNumber(handler->lineId()));
break;
case VoiceCallHandler::STATUS_NULL:
case VoiceCallHandler::STATUS_DISCONNECTED:
@@ -73,6 +83,18 @@ void Manager::onActiveVoiceCallStatusChanged()
}
}
+QString Manager::findPersonByNumber(QString number)
+{
+ numberFilter.setValue(number);
+
+ const QList<QContact> &found = contacts->contacts(numberFilter);
+ if (found.size() == 1) {
+ return found[0].detail(QContactDetail::TypeDisplayLabel).value(0).toString();
+ }
+
+ return QString();
+}
+
void Manager::onVoiceError(const QString &message)
{
qWarning() << "Error: " << message;