From 5966c84b8473c9bbfd124795f79f9368af8d69e9 Mon Sep 17 00:00:00 2001
From: Diadlo <polsha3@gmail.com>
Date: Thu, 21 Apr 2016 01:31:42 +0300
Subject: [PATCH] refactor(settings): Deleted unreadFriendRequests field

Replaced unreadFriendRequests on work with "read" field of struct Request
---
 src/persistence/settings.cpp | 18 ++++++++++++++----
 src/persistence/settings.h   |  2 +-
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/persistence/settings.cpp b/src/persistence/settings.cpp
index acba0ba28..c25e2abfc 100644
--- a/src/persistence/settings.cpp
+++ b/src/persistence/settings.cpp
@@ -326,7 +326,6 @@ void Settings::loadPersonal(Profile* profile)
     ps.endGroup();
 
     ps.beginGroup("Requests");
-        unreadFriendRequests = ps.value("unread", 0).toUInt();
         size = ps.beginReadArray("Request");
         friendRequests.clear();
         friendRequests.reserve(size);
@@ -527,7 +526,6 @@ void Settings::savePersonal(QString profileName, QString password)
     ps.endGroup();
 
     ps.beginGroup("Requests");
-        ps.setValue("unread", unreadFriendRequests);
         ps.beginWriteArray("Request", friendRequests.size());
         index = 0;
         for (auto& request : friendRequests)
@@ -1690,13 +1688,17 @@ bool Settings::addFriendRequest(const QString &friendAddress, const QString &mes
     request.read = false;
 
     friendRequests.push_back(request);
-    ++unreadFriendRequests;
     return true;
 }
 
 unsigned int Settings::getUnreadFriendRequests() const
 {
     QMutexLocker locker{&bigLock};
+    unsigned int unreadFriendRequests = 0;
+    for (auto request : friendRequests)
+        if (!request.read)
+            unreadFriendRequests++;
+
     return unreadFriendRequests;
 }
 
@@ -1715,7 +1717,9 @@ int Settings::getFriendRequestSize() const
 void Settings::clearUnreadFriendRequests()
 {
     QMutexLocker locker{&bigLock};
-    unreadFriendRequests = 0;
+
+    for (auto& request : friendRequests)
+        request.read = true;
 }
 
 void Settings::removeFriendRequest(int index)
@@ -1724,6 +1728,12 @@ void Settings::removeFriendRequest(int index)
     friendRequests.removeAt(index);
 }
 
+void Settings::readFriendRequest(int index)
+{
+    QMutexLocker locker{&bigLock};
+    friendRequests[index].read = true;
+}
+
 int Settings::removeCircle(int id)
 {
     // Replace index with last one and remove last one instead.
diff --git a/src/persistence/settings.h b/src/persistence/settings.h
index 728809d91..562e25df0 100644
--- a/src/persistence/settings.h
+++ b/src/persistence/settings.h
@@ -311,6 +311,7 @@ public:
     int getFriendRequestSize() const;
     void clearUnreadFriendRequests();
     void removeFriendRequest(int index);
+    void readFriendRequest(int index);
 
     // Assume all widgets have unique names
     // Don't use it to save every single thing you want to save, use it
@@ -398,7 +399,6 @@ private:
     QString globalAutoAcceptDir;
 
     QList<Request> friendRequests;
-    unsigned int unreadFriendRequests;
 
     // GUI
     QString smileyPack;