From 8b1a1300cf3e7ed540e6f2795afdb5d2b09103f4 Mon Sep 17 00:00:00 2001 From: Martin Klapetek Date: Mon, 29 Jun 2015 20:11:16 +0200 Subject: [PATCH] [dialer] Make the call direction property actually work --- dialer/package/contents/ui/main.qml | 2 +- dialer/src/call-manager.cpp | 4 ++++ dialer/src/dialerutils.cpp | 15 ++++++++++++++- dialer/src/dialerutils.h | 8 +++++++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/dialer/package/contents/ui/main.qml b/dialer/package/contents/ui/main.qml index 6ae11868..c2135b4f 100644 --- a/dialer/package/contents/ui/main.qml +++ b/dialer/package/contents/ui/main.qml @@ -48,7 +48,7 @@ ApplicationWindow { root.visible = true; } onCallEnded: { - insertCallInHistory(callContactNumber, callDuration, incomingCall ? 1 : 2); + insertCallInHistory(callContactNumber, callDuration, isIncomingCall ? 1 : 2); } } diff --git a/dialer/src/call-manager.cpp b/dialer/src/call-manager.cpp index 662c3b68..8b70e89d 100644 --- a/dialer/src/call-manager.cpp +++ b/dialer/src/call-manager.cpp @@ -99,6 +99,10 @@ void CallManager::onCallStateChanged(Tp::CallState state) d->dialerUtils->setCallContactNumber(d->callChannel->targetContact()->id()); } + if (d->callChannel->isValid()) { + d->dialerUtils->setIsIncomingCall(!d->callChannel->isRequested()); + } + switch (state) { case Tp::CallStatePendingInitiator: Q_ASSERT(d->callChannel->isRequested()); diff --git a/dialer/src/dialerutils.cpp b/dialer/src/dialerutils.cpp index ccfece83..ae1c9d01 100644 --- a/dialer/src/dialerutils.cpp +++ b/dialer/src/dialerutils.cpp @@ -122,10 +122,23 @@ void DialerUtils::setCallContactNumber(const QString &contactNumber) } } +bool DialerUtils::isIncomingCall() const +{ + return m_isIncomingCall; +} + +void DialerUtils::setIsIncomingCall(bool isIncomingCall) +{ + if (m_isIncomingCall != isIncomingCall) { + m_isIncomingCall = isIncomingCall; + Q_EMIT isIncomingCallChanged(); + } +} + void DialerUtils::emitCallEnded() { qDebug() << "Call ended:" << m_callContactNumber << m_callDuration; - Q_EMIT callEnded(m_callContactNumber, m_callDuration, true); + Q_EMIT callEnded(m_callContactNumber, m_callDuration, m_isIncomingCall); m_callDuration = 0; m_callContactNumber = QString(); m_callContactAlias = QString(); diff --git a/dialer/src/dialerutils.h b/dialer/src/dialerutils.h index 944a678f..0b51f213 100644 --- a/dialer/src/dialerutils.h +++ b/dialer/src/dialerutils.h @@ -32,6 +32,7 @@ class DialerUtils : public QObject Q_PROPERTY(uint callDuration READ callDuration NOTIFY callDurationChanged); Q_PROPERTY(QString callContactAlias READ callContactAlias NOTIFY callContactAliasChanged); Q_PROPERTY(QString callContactNumber READ callContactNumber NOTIFY callContactNumberChanged); + Q_PROPERTY(bool isIncomingCall READ isIncomingCall NOTIFY isIncomingCallChanged); public: @@ -50,6 +51,9 @@ public: QString callContactNumber() const; void setCallContactNumber(const QString &contactNumber); + bool isIncomingCall() const; + void setIsIncomingCall(bool isIncomingCall); + void emitCallEnded(); Q_INVOKABLE void resetMissedCalls(); @@ -61,10 +65,11 @@ Q_SIGNALS: void callDurationChanged(); void callContactAliasChanged(); void callContactNumberChanged(); + void isIncomingCallChanged(); void acceptCall(); void rejectCall(); void hangUp(); - void callEnded(const QString &callContactNumber, uint callDuration, bool incomingCall); + void callEnded(const QString &callContactNumber, uint callDuration, bool isIncomingCall); private: QPointer m_callsNotification; @@ -75,6 +80,7 @@ private: QString m_callContactAlias; QString m_callContactNumber; uint m_callDuration; + bool m_isIncomingCall; };