diff options
Diffstat (limited to 'daemon/manager.cpp')
| -rw-r--r-- | daemon/manager.cpp | 26 |
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; |
