1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Merge pull request #3169

Diadlo (3):
      refactor(settings, addfriendform): Changed type of friend requests
      refactor(settings): Deleted unreadFriendRequests field
      fix(addfriendform, widget): Remove Accepted Request
This commit is contained in:
sudden6 2016-04-22 00:33:06 +02:00
commit 2c809154b2
No known key found for this signature in database
GPG Key ID: 279509B499E032B9
5 changed files with 63 additions and 20 deletions

View File

@ -326,16 +326,16 @@ void Settings::loadPersonal(Profile* profile)
ps.endGroup(); ps.endGroup();
ps.beginGroup("Requests"); ps.beginGroup("Requests");
unreadFriendRequests = ps.value("unread", 0).toUInt();
size = ps.beginReadArray("Request"); size = ps.beginReadArray("Request");
friendRequests.clear(); friendRequests.clear();
friendRequests.reserve(size); friendRequests.reserve(size);
for (int i = 0; i < size; i ++) for (int i = 0; i < size; i ++)
{ {
ps.setArrayIndex(i); ps.setArrayIndex(i);
QPair<QString, QString> request; Request request;
request.first = ps.value("addr").toString(); request.address = ps.value("addr").toString();
request.second = ps.value("message").toString(); request.message = ps.value("message").toString();
request.read = ps.value("read").toBool();
friendRequests.push_back(request); friendRequests.push_back(request);
} }
ps.endArray(); ps.endArray();
@ -526,14 +526,14 @@ void Settings::savePersonal(QString profileName, QString password)
ps.endGroup(); ps.endGroup();
ps.beginGroup("Requests"); ps.beginGroup("Requests");
ps.setValue("unread", unreadFriendRequests);
ps.beginWriteArray("Request", friendRequests.size()); ps.beginWriteArray("Request", friendRequests.size());
index = 0; index = 0;
for (auto& request : friendRequests) for (auto& request : friendRequests)
{ {
ps.setArrayIndex(index); ps.setArrayIndex(index);
ps.setValue("addr", request.first); ps.setValue("addr", request.address);
ps.setValue("message", request.second); ps.setValue("message", request.message);
ps.setValue("read", request.read);
++index; ++index;
} }
@ -1674,26 +1674,35 @@ bool Settings::addFriendRequest(const QString &friendAddress, const QString &mes
for (auto queued : friendRequests) for (auto queued : friendRequests)
{ {
if (queued.first == friendAddress) if (queued.address == friendAddress)
{ {
queued.second = message; queued.message = message;
queued.read = false;
return false; return false;
} }
} }
QPair<QString, QString> request(friendAddress, message); Request request;
request.address = friendAddress;
request.message = message;
request.read = false;
friendRequests.push_back(request); friendRequests.push_back(request);
++unreadFriendRequests;
return true; return true;
} }
unsigned int Settings::getUnreadFriendRequests() const unsigned int Settings::getUnreadFriendRequests() const
{ {
QMutexLocker locker{&bigLock}; QMutexLocker locker{&bigLock};
unsigned int unreadFriendRequests = 0;
for (auto request : friendRequests)
if (!request.read)
unreadFriendRequests++;
return unreadFriendRequests; return unreadFriendRequests;
} }
QPair<QString, QString> Settings::getFriendRequest(int index) const Settings::Request Settings::getFriendRequest(int index) const
{ {
QMutexLocker locker{&bigLock}; QMutexLocker locker{&bigLock};
return friendRequests.at(index); return friendRequests.at(index);
@ -1708,7 +1717,9 @@ int Settings::getFriendRequestSize() const
void Settings::clearUnreadFriendRequests() void Settings::clearUnreadFriendRequests()
{ {
QMutexLocker locker{&bigLock}; QMutexLocker locker{&bigLock};
unreadFriendRequests = 0;
for (auto& request : friendRequests)
request.read = true;
} }
void Settings::removeFriendRequest(int index) void Settings::removeFriendRequest(int index)
@ -1717,6 +1728,12 @@ void Settings::removeFriendRequest(int index)
friendRequests.removeAt(index); friendRequests.removeAt(index);
} }
void Settings::readFriendRequest(int index)
{
QMutexLocker locker{&bigLock};
friendRequests[index].read = true;
}
int Settings::removeCircle(int id) int Settings::removeCircle(int id)
{ {
// Replace index with last one and remove last one instead. // Replace index with last one and remove last one instead.

View File

@ -57,6 +57,14 @@ public:
void loadPersonal(); void loadPersonal();
void loadPersonal(Profile *profile); void loadPersonal(Profile *profile);
struct Request
{
QString address;
QString message;
bool read;
};
public slots: public slots:
void saveGlobal(); ///< Asynchronous void saveGlobal(); ///< Asynchronous
void sync(); ///< Waits for all asynchronous operations to complete void sync(); ///< Waits for all asynchronous operations to complete
@ -299,10 +307,11 @@ public:
bool addFriendRequest(const QString &friendAddress, const QString &message); bool addFriendRequest(const QString &friendAddress, const QString &message);
unsigned int getUnreadFriendRequests() const; unsigned int getUnreadFriendRequests() const;
QPair<QString, QString> getFriendRequest(int index) const; Request getFriendRequest(int index) const;
int getFriendRequestSize() const; int getFriendRequestSize() const;
void clearUnreadFriendRequests(); void clearUnreadFriendRequests();
void removeFriendRequest(int index); void removeFriendRequest(int index);
void readFriendRequest(int index);
// Assume all widgets have unique names // Assume all widgets have unique names
// Don't use it to save every single thing you want to save, use it // Don't use it to save every single thing you want to save, use it
@ -389,8 +398,7 @@ private:
bool autoSaveEnabled; bool autoSaveEnabled;
QString globalAutoAcceptDir; QString globalAutoAcceptDir;
QList<QPair<QString, QString>> friendRequests; QList<Request> friendRequests;
unsigned int unreadFriendRequests;
// GUI // GUI
QString smileyPack; QString smileyPack;

View File

@ -82,8 +82,8 @@ AddFriendForm::AddFriendForm()
for (int i = 0; i < size; ++i) for (int i = 0; i < size; ++i)
{ {
QPair<QString, QString> request = Settings::getInstance().getFriendRequest(i); Settings::Request request = Settings::getInstance().getFriendRequest(i);
addFriendRequestWidget(request.first, request.second); addFriendRequestWidget(request.address, request.message);
} }
} }
@ -173,6 +173,7 @@ void AddFriendForm::onSendTriggered()
id = toxId.toString(); id = toxId.toString();
} }
deleteFriendRequest(id);
if (id.toUpper() == Core::getInstance()->getSelfId().toString().toUpper()) if (id.toUpper() == Core::getInstance()->getSelfId().toString().toUpper())
GUI::showWarning(tr("Couldn't add friend"), tr("You can't add yourself as a friend!","When trying to add your own Tox ID as friend")); GUI::showWarning(tr("Couldn't add friend"), tr("You can't add yourself as a friend!","When trying to add your own Tox ID as friend"));
else else
@ -222,13 +223,28 @@ void AddFriendForm::setIdFromClipboard()
} }
} }
void AddFriendForm::deleteFriendRequest(const QString& toxId)
{
int size = Settings::getInstance().getFriendRequestSize();
for (int i = 0; i < size; i++)
{
Settings::Request request = Settings::getInstance().getFriendRequest(i);
if (ToxId(toxId) == ToxId(request.address))
{
Settings::getInstance().removeFriendRequest(i);
return;
}
}
}
void AddFriendForm::onFriendRequestAccepted() void AddFriendForm::onFriendRequestAccepted()
{ {
QPushButton* acceptButton = static_cast<QPushButton*>(sender()); QPushButton* acceptButton = static_cast<QPushButton*>(sender());
QWidget* friendWidget = acceptButton->parentWidget(); QWidget* friendWidget = acceptButton->parentWidget();
int index = requestsLayout->indexOf(friendWidget); int index = requestsLayout->indexOf(friendWidget);
removeFriendRequestWidget(friendWidget); removeFriendRequestWidget(friendWidget);
emit friendRequestAccepted(Settings::getInstance().getFriendRequest(requestsLayout->count() - index - 1).first); Settings::Request request = Settings::getInstance().getFriendRequest(requestsLayout->count() - index - 1);
emit friendRequestAccepted(request.address);
Settings::getInstance().removeFriendRequest(requestsLayout->count() - index - 1); Settings::getInstance().removeFriendRequest(requestsLayout->count() - index - 1);
Settings::getInstance().savePersonal(); Settings::getInstance().savePersonal();
} }

View File

@ -75,9 +75,10 @@ private:
void removeFriendRequestWidget(QWidget *friendWidget); void removeFriendRequestWidget(QWidget *friendWidget);
void retranslateAcceptButton(QPushButton* acceptButton); void retranslateAcceptButton(QPushButton* acceptButton);
void retranslateRejectButton(QPushButton* rejectButton); void retranslateRejectButton(QPushButton* rejectButton);
void deleteFriendRequest(const QString &toxId);
void setIdFromClipboard();
private: private:
void setIdFromClipboard();
QLabel headLabel, toxIdLabel, messageLabel; QLabel headLabel, toxIdLabel, messageLabel;
QPushButton sendButton; QPushButton sendButton;
QLineEdit toxId; QLineEdit toxId;

View File

@ -392,6 +392,7 @@ void Widget::init()
groupInvitesButton = nullptr; groupInvitesButton = nullptr;
unreadGroupInvites = 0; unreadGroupInvites = 0;
connect(addFriendForm, &AddFriendForm::friendRequested, this, &Widget::friendRequestsUpdate);
connect(addFriendForm, &AddFriendForm::friendRequestsSeen, this, &Widget::friendRequestsUpdate); connect(addFriendForm, &AddFriendForm::friendRequestsSeen, this, &Widget::friendRequestsUpdate);
connect(addFriendForm, &AddFriendForm::friendRequestAccepted, this, &Widget::friendRequestAccepted); connect(addFriendForm, &AddFriendForm::friendRequestAccepted, this, &Widget::friendRequestAccepted);
connect(groupInviteForm, &GroupInviteForm::groupInvitesSeen, this, &Widget::groupInvitesClear); connect(groupInviteForm, &GroupInviteForm::groupInvitesSeen, this, &Widget::groupInvitesClear);