From 0d723ec1ac5a0635f44ce94185d4ce751c5e3467 Mon Sep 17 00:00:00 2001
From: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
Date: Wed, 23 Sep 2015 14:03:40 -0400
Subject: [PATCH] contactmethod: reactivate roles

Instead of returning 'N/A' return the appropriate data.

Issue: #75334
Change-Id: I071cc8f5fbe621dd2cb69f1977667e931ca01e5b
---
 src/contactmethod.cpp | 18 +++++++++++-------
 src/contactmethod.h   |  6 ++++--
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/contactmethod.cpp b/src/contactmethod.cpp
index 27cd53ce..24bcff75 100644
--- a/src/contactmethod.cpp
+++ b/src/contactmethod.cpp
@@ -19,6 +19,7 @@
 
 //Qt
 #include <QtCore/QCryptographicHash>
+#include <QDateTime>
 
 //Ring daemon
 #include "dbus/configurationmanager.h"
@@ -455,6 +456,9 @@ QHash<QString,int> ContactMethod::alternativeNames() const
 QVariant ContactMethod::roleData(int role) const
 {
    QVariant cat;
+
+   auto lastCall = d_ptr->m_lCalls.last();
+
    switch (role) {
       case static_cast<int>(Call::Role::Name):
          /* the formatted name could be empty either because the name of the contact is actually
@@ -472,25 +476,25 @@ QVariant ContactMethod::roleData(int role) const
       case Qt::EditRole:
       case static_cast<int>(Role::Uri):
       case static_cast<int>(Call::Role::Number):
-         cat = uri();//call->getPeerContactMethod();
+         cat = uri();
          break;
       case static_cast<int>(Call::Role::Direction):
-         cat = tr("N/A");//call->getHistoryState();
+         cat = cat = !lastCall ? QVariant() : QVariant::fromValue(lastCall->direction());
          break;
       case static_cast<int>(Call::Role::Date):
-         cat = tr("N/A");//call->getStartTimeStamp();
+         cat = cat = !lastCall ? QVariant() : QDateTime::fromTime_t(lastCall->startTimeStamp());
          break;
       case static_cast<int>(Call::Role::Length):
-         cat = tr("N/A");//call->getLength();
+         cat = cat = !lastCall ? QVariant() : lastCall->length();
          break;
       case static_cast<int>(Call::Role::FormattedDate):
-         cat = tr("N/A");//QDateTime::fromTime_t(call->getStartTimeStamp().toUInt()).toString();
+         cat = !lastCall ? QVariant() : HistoryTimeCategoryModel::timeToHistoryCategory(lastCall->startTimeStamp());
          break;
       case static_cast<int>(Call::Role::HasAVRecording):
-         cat = false;//call->hasRecording();
+         cat = cat = !lastCall ? QVariant() : lastCall->isAVRecording();
          break;
       case static_cast<int>(Call::Role::FuzzyDate):
-         cat = "N/A";//timeToHistoryCategory(QDateTime::fromTime_t(call->getStartTimeStamp().toUInt()).date());
+         cat = cat = !lastCall ? QVariant() : HistoryTimeCategoryModel::timeToHistoryCategory(lastCall->startTimeStamp());
          break;
       case static_cast<int>(Call::Role::ContactMethod):
       case static_cast<int>(Role::Object):
diff --git a/src/contactmethod.h b/src/contactmethod.h
index 07f2916b..edd78f88 100644
--- a/src/contactmethod.h
+++ b/src/contactmethod.h
@@ -125,7 +125,10 @@ public:
    Media::TextRecording* textRecording   () const;
    Certificate*          certificate  () const;
 
-
+   /*
+    * Returns roles associated on ContactMethod based on Call::Roles
+    * Returns last call info when querying info on call associated to this contact method
+    */
    QVariant roleData(int role) const;
 
    //Setters
@@ -235,4 +238,3 @@ private:
    TemporaryContactMethodPrivate* d_ptr;
    Q_DECLARE_PRIVATE(TemporaryContactMethod)
 };
-
-- 
GitLab