From af3b727cefd131f045a9fb412a818be634bff193 Mon Sep 17 00:00:00 2001
From: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
Date: Fri, 18 Sep 2015 16:26:15 -0400
Subject: [PATCH] recentmodel: use qt iterators

make_reverse_iterator is only available in gcc >= 5.0

Issue: #75334
Change-Id: Ieff32adef269e718f74f8b8294a661805ed119e0
---
 src/recentmodel.cpp | 37 +++++++++++++++++++++----------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/src/recentmodel.cpp b/src/recentmodel.cpp
index 40395a6e..07e2782a 100644
--- a/src/recentmodel.cpp
+++ b/src/recentmodel.cpp
@@ -19,6 +19,9 @@
  ***********************************************************************************/
 #include "recentmodel.h"
 
+//std
+#include <algorithm>
+
 //Qt
 #include <QtCore/QCoreApplication>
 
@@ -205,14 +208,15 @@ bool RecentModel::hasActiveCall(const QModelIndex &idx)
       return false;
 
    auto node = static_cast<RecentViewNode*>(idx.internalPointer());
-
-   auto reverseEnd = std::make_reverse_iterator(node->m_lChildren.begin());
-   auto it = std::find_if (std::make_reverse_iterator(node->m_lChildren.end()),
-            reverseEnd, [] (RecentViewNode* child) {
-                     return child->m_Type == RecentViewNode::Type::CALL;
-               });
-
-   return it != reverseEnd;
+   QListIterator<RecentViewNode*> lIterator(node->m_lChildren);
+   lIterator.toBack();
+   while (lIterator.hasPrevious()) {
+      auto child = lIterator.previous();
+      if (child->m_Type == RecentViewNode::Type::CALL) {
+         return  CallModel::instance()->getIndex(child->m_uContent.m_pCall).isValid();
+      }
+   }
+   return false;
 }
 
 /**
@@ -224,14 +228,15 @@ Call* RecentModel::getActiveCall(const QModelIndex &idx)
       return nullptr;
 
    RecentViewNode* node = static_cast<RecentViewNode*>(idx.internalPointer());
-
-   auto reverseEnd = std::make_reverse_iterator(node->m_lChildren.begin());
-   auto it = std::find_if (std::make_reverse_iterator(node->m_lChildren.end()),
-            reverseEnd, [] (RecentViewNode* child) {
-                     return child->m_Type == RecentViewNode::Type::CALL;
-               });
-
-   return it != reverseEnd ? (*it)->m_uContent.m_pCall : nullptr;
+   QListIterator<RecentViewNode*> lIterator(node->m_lChildren);
+   lIterator.toBack();
+   while (lIterator.hasPrevious()) {
+      auto child = lIterator.previous();
+      if (child->m_Type == RecentViewNode::Type::CALL) {
+         return child->m_uContent.m_pCall;
+      }
+   }
+   return nullptr;
 }
 
 QHash<int,QByteArray> RecentModel::roleNames() const
-- 
GitLab