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

refactor(friendlist): deduplicate time category widget logic

This commit is contained in:
Anthony Bilinski 2019-05-17 00:38:59 -07:00
parent d55332ee0a
commit 08a646e456
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
2 changed files with 18 additions and 18 deletions

View File

@ -28,6 +28,8 @@
#include "src/model/group.h"
#include "src/model/status.h"
#include "src/persistence/settings.h"
#include "src/widget/categorywidget.h"
#include <QDragEnterEvent>
#include <QDragLeaveEvent>
#include <QGridLayout>
@ -263,16 +265,20 @@ void FriendListWidget::moveFriends(QLayout* layout)
circleWidget->moveFriendWidgets(this);
} else if (friendWidget) {
const Friend* contact = friendWidget->getFriend();
const auto activityTime = getActiveTimeFriend(contact);
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
QWidget* w = activityLayout->itemAt(timeIndex)->widget();
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w);
auto* categoryWidget = getTimeCategoryWidget(contact);
categoryWidget->addFriendWidget(friendWidget, contact->getStatus());
}
}
}
CategoryWidget* FriendListWidget::getTimeCategoryWidget(const Friend* frd) const
{
const auto activityTime = getActiveTimeFriend(frd);
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
QWidget* widget = activityLayout->itemAt(timeIndex)->widget();
return qobject_cast<CategoryWidget*>(widget);
}
FriendListWidget::Mode FriendListWidget::getMode() const
{
return mode;
@ -309,10 +315,7 @@ void FriendListWidget::removeFriendWidget(FriendWidget* w)
{
const Friend* contact = w->getFriend();
if (mode == Activity) {
const auto activityTime = getActiveTimeFriend(contact);
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
QWidget* widget = activityLayout->itemAt(timeIndex)->widget();
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(widget);
auto* categoryWidget = getTimeCategoryWidget(contact);
categoryWidget->removeFriendWidget(w, contact->getStatus());
categoryWidget->setVisible(categoryWidget->hasChatrooms());
} else {
@ -401,10 +404,7 @@ void FriendListWidget::onFriendWidgetRenamed(FriendWidget* friendWidget)
const Friend* contact = friendWidget->getFriend();
auto status = contact->getStatus();
if (mode == Activity) {
const auto activityTime = getActiveTimeFriend(contact);
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
QWidget* widget = activityLayout->itemAt(timeIndex)->widget();
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(widget);
auto* categoryWidget = getTimeCategoryWidget(contact);
categoryWidget->removeFriendWidget(friendWidget, status);
categoryWidget->addFriendWidget(friendWidget, status);
} else {
@ -473,7 +473,7 @@ void FriendListWidget::cycleContacts(GenericChatroomWidget* activeChatroomWidget
continue;
}
widget = activityLayout->itemAt(index)->widget();
auto* widget = activityLayout->itemAt(index)->widget();
categoryWidget = qobject_cast<CategoryWidget*>(widget);
if (categoryWidget != nullptr) {
@ -627,10 +627,7 @@ void FriendListWidget::moveWidget(FriendWidget* widget, Status::Status s, bool a
circleWidget->addFriendWidget(widget, s);
} else {
const Friend* contact = widget->getFriend();
const auto activityTime = getActiveTimeFriend(contact);
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
QWidget* w = activityLayout->itemAt(timeIndex)->widget();
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w);
auto* categoryWidget = getTimeCategoryWidget(contact);
categoryWidget->addFriendWidget(widget, contact->getStatus());
categoryWidget->show();
}

View File

@ -34,6 +34,8 @@ class GroupWidget;
class CircleWidget;
class FriendListLayout;
class GenericChatroomWidget;
class CategoryWidget;
class Friend;
class FriendListWidget : public QWidget
{
@ -86,6 +88,7 @@ private:
CircleWidget* createCircleWidget(int id = -1);
QLayout* nextLayout(QLayout* layout, bool forward) const;
void moveFriends(QLayout* layout);
CategoryWidget* getTimeCategoryWidget(const Friend* frd) const;
Mode mode;
bool groupsOnTop;