diff --git a/src/gui/tray/activitylistmodel.cpp b/src/gui/tray/activitylistmodel.cpp index c9bdaa1003..8a716d816a 100644 --- a/src/gui/tray/activitylistmodel.cpp +++ b/src/gui/tray/activitylistmodel.cpp @@ -532,15 +532,13 @@ void ActivityListModel::addEntriesToActivityList(const ActivityList &activityLis beginInsertRows({}, startRow, startRow + activityList.count() - 1); for(const auto &activity : activityList) { _finalList.append(activity); + if (activity._syncFileItemStatus == SyncFileItem::Conflict) { + _conflictsList.push_back(activity); + } } endInsertRows(); - const auto deselectedConflictIt = std::find_if(_finalList.constBegin(), _finalList.constEnd(), [] (const auto &activity) { - return activity._syncFileItemStatus == SyncFileItem::Conflict; - }); - const auto conflictsFound = (deselectedConflictIt != _finalList.constEnd()); - - setHasSyncConflicts(conflictsFound); + setHasSyncConflicts(!_conflictsList.isEmpty()); } void ActivityListModel::accountStateHasChanged() @@ -625,6 +623,10 @@ void ActivityListModel::removeActivityFromActivityList(const Activity &activity) endRemoveRows(); } + if (activity._syncFileItemStatus == SyncFileItem::Conflict) { + _conflictsList.removeOne(activity); + } + if (activity._type != Activity::ActivityType && activity._type != Activity::DummyFetchingActivityType && activity._type != Activity::DummyMoreActivitiesAvailableType && @@ -925,6 +927,7 @@ void ActivityListModel::slotRefreshActivityInitial() void ActivityListModel::slotRemoveAccount() { _finalList.clear(); + _conflictsList.clear(); _activityLists.clear(); _presentedActivities.clear(); setAndRefreshCurrentlyFetching(false); @@ -957,15 +960,7 @@ bool ActivityListModel::hasSyncConflicts() const ActivityList ActivityListModel::allConflicts() const { - auto result = ActivityList{}; - - for(const auto &activity : _finalList) { - if (activity._syncFileItemStatus == SyncFileItem::Conflict) { - result.push_back(activity); - } - } - - return result; + return _conflictsList; } } diff --git a/src/gui/tray/activitylistmodel.h b/src/gui/tray/activitylistmodel.h index 771d7e34fe..b037cdf6fb 100644 --- a/src/gui/tray/activitylistmodel.h +++ b/src/gui/tray/activitylistmodel.h @@ -183,6 +183,7 @@ private: ActivityList _notificationLists; ActivityList _listOfIgnoredFiles; ActivityList _notificationErrorsLists; + ActivityList _conflictsList; ActivityList _finalList; QSet _presentedActivities;