From dc10442a556f2c7c97d9a9930633b976a88f02d1 Mon Sep 17 00:00:00 2001 From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> Date: Tue, 9 Sep 2014 18:20:25 +0200 Subject: [PATCH] [ #53051 ] Fix multiple history issues --- src/call.cpp | 19 ++++++++++++++----- src/call.h | 4 ++++ src/sflphone_const.h | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/call.cpp b/src/call.cpp index dc5abead..591fb769 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -117,8 +117,8 @@ const TypedStateMachine< TypedStateMachine< Call::State , Call::DaemonState> , C const TypedStateMachine< TypedStateMachine< function , Call::DaemonState > , Call::State > Call::stateChangedFunctionMap = {{ // RINGING CURRENT BUSY HOLD HUNGUP FAILURE /**/ -/*INCOMING */ {{&Call::nothing , &Call::start , &Call::startWeird , &Call::startWeird , &Call::startStop , &Call::start }},/**/ -/*RINGING */ {{&Call::nothing , &Call::start , &Call::start , &Call::start , &Call::startStop , &Call::start }},/**/ +/*INCOMING */ {{&Call::nothing , &Call::start , &Call::startWeird , &Call::startWeird , &Call::startStop , &Call::failure }},/**/ +/*RINGING */ {{&Call::nothing , &Call::start , &Call::start , &Call::start , &Call::startStop , &Call::failure }},/**/ /*CURRENT */ {{&Call::nothing , &Call::nothing , &Call::warning , &Call::nothing , &Call::stop , &Call::nothing }},/**/ /*DIALING */ {{&Call::nothing , &Call::warning , &Call::warning , &Call::warning , &Call::stop , &Call::warning }},/**/ /*HOLD */ {{&Call::nothing , &Call::nothing , &Call::warning , &Call::nothing , &Call::stop , &Call::nothing }},/**/ @@ -370,7 +370,7 @@ Call* Call::buildHistoryCall(const QMap<QString,QString>& hc) const QString& number = hc[ Call::HistoryMapFields::PEER_NUMBER ] ; const QString& type = hc[ Call::HistoryMapFields::STATE ] ; const QString& direction = hc[ Call::HistoryMapFields::DIRECTION ] ; - const bool missed = hc[ Call::HistoryMapFields::MISSED ] == "true"; + const bool missed = hc[ Call::HistoryMapFields::MISSED ] == "1"; time_t startTimeStamp = hc[ Call::HistoryMapFields::TIMESTAMP_START ].toUInt() ; time_t stopTimeStamp = hc[ Call::HistoryMapFields::TIMESTAMP_STOP ].toUInt() ; QString accId = hc[ Call::HistoryMapFields::ACCOUNT_ID ] ; @@ -681,7 +681,7 @@ bool Call::isHistory() ///Is this call missed bool Call::isMissed() const { - return m_Missed; + return m_Missed || m_HistoryState == Call::LegacyHistoryState::MISSED; } ///Is the call incoming or outgoing @@ -1055,6 +1055,15 @@ void Call::error() https://projects.savoirfairelinux.com/projects/sflphone/issues"); } +///Change history state to failure +void Call::failure() +{ + m_Missed = true; + //This is how it always was done + //The main point is to leave the call in the CallList + start(); +} + ///Accept the call void Call::accept() { @@ -1673,7 +1682,7 @@ QVariant Call::roleData(int role) const return property("dropState"); break; case Call::Role::Missed: - return m_Missed; + return isMissed(); case Call::Role::CallLifeCycleState: return static_cast<int>(lifeCycleState()); //TODO Qt5, use the Q_ENUM case Call::Role::DTMFAnimState: diff --git a/src/call.h b/src/call.h index 3a981fba..480c1e20 100644 --- a/src/call.h +++ b/src/call.h @@ -279,6 +279,9 @@ public: /** @enum Call::LifeCycleState * This enum help track the call meta state + * @todo Eventually add a meta state between progress and finished for + * calls that are still relevant enough to be in the main UI, such + * as BUSY OR FAILURE while also finished */ enum class LifeCycleState { INITIALIZATION = 0, /** Anything before the media transfer start */ @@ -460,6 +463,7 @@ private: // to know when it is called. void nothing () __attribute__ ((const)); void error () __attribute__ ((noreturn)); + void failure (); void accept (); void refuse (); void acceptTransf (); diff --git a/src/sflphone_const.h b/src/sflphone_const.h index 3312859d..8b24f38b 100644 --- a/src/sflphone_const.h +++ b/src/sflphone_const.h @@ -48,6 +48,7 @@ #define ICON_HISTORY_INCOMING ":/images/icons/incoming.svg" #define ICON_HISTORY_OUTGOING ":/images/icons/outgoing.svg" #define ICON_HISTORY_MISSED ":/images/icons/missed.svg" +#define ICON_HISTORY_MISSED_OUT ":/images/icons/missed_out.svg" #define ICON_SFLPHONE ":/images/icons/sflphone.svg" // #define ACCOUNT_TYPES_TAB {QString(Account::ProtocolName::SIP), QString(Account::ProtocolName::IAX)} -- GitLab