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:
parent
d55332ee0a
commit
08a646e456
@ -28,6 +28,8 @@
|
|||||||
#include "src/model/group.h"
|
#include "src/model/group.h"
|
||||||
#include "src/model/status.h"
|
#include "src/model/status.h"
|
||||||
#include "src/persistence/settings.h"
|
#include "src/persistence/settings.h"
|
||||||
|
#include "src/widget/categorywidget.h"
|
||||||
|
|
||||||
#include <QDragEnterEvent>
|
#include <QDragEnterEvent>
|
||||||
#include <QDragLeaveEvent>
|
#include <QDragLeaveEvent>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
@ -263,16 +265,20 @@ void FriendListWidget::moveFriends(QLayout* layout)
|
|||||||
circleWidget->moveFriendWidgets(this);
|
circleWidget->moveFriendWidgets(this);
|
||||||
} else if (friendWidget) {
|
} else if (friendWidget) {
|
||||||
const Friend* contact = friendWidget->getFriend();
|
const Friend* contact = friendWidget->getFriend();
|
||||||
const auto activityTime = getActiveTimeFriend(contact);
|
auto* categoryWidget = getTimeCategoryWidget(contact);
|
||||||
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
|
|
||||||
|
|
||||||
QWidget* w = activityLayout->itemAt(timeIndex)->widget();
|
|
||||||
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w);
|
|
||||||
categoryWidget->addFriendWidget(friendWidget, contact->getStatus());
|
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
|
FriendListWidget::Mode FriendListWidget::getMode() const
|
||||||
{
|
{
|
||||||
return mode;
|
return mode;
|
||||||
@ -309,10 +315,7 @@ void FriendListWidget::removeFriendWidget(FriendWidget* w)
|
|||||||
{
|
{
|
||||||
const Friend* contact = w->getFriend();
|
const Friend* contact = w->getFriend();
|
||||||
if (mode == Activity) {
|
if (mode == Activity) {
|
||||||
const auto activityTime = getActiveTimeFriend(contact);
|
auto* categoryWidget = getTimeCategoryWidget(contact);
|
||||||
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
|
|
||||||
QWidget* widget = activityLayout->itemAt(timeIndex)->widget();
|
|
||||||
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(widget);
|
|
||||||
categoryWidget->removeFriendWidget(w, contact->getStatus());
|
categoryWidget->removeFriendWidget(w, contact->getStatus());
|
||||||
categoryWidget->setVisible(categoryWidget->hasChatrooms());
|
categoryWidget->setVisible(categoryWidget->hasChatrooms());
|
||||||
} else {
|
} else {
|
||||||
@ -401,10 +404,7 @@ void FriendListWidget::onFriendWidgetRenamed(FriendWidget* friendWidget)
|
|||||||
const Friend* contact = friendWidget->getFriend();
|
const Friend* contact = friendWidget->getFriend();
|
||||||
auto status = contact->getStatus();
|
auto status = contact->getStatus();
|
||||||
if (mode == Activity) {
|
if (mode == Activity) {
|
||||||
const auto activityTime = getActiveTimeFriend(contact);
|
auto* categoryWidget = getTimeCategoryWidget(contact);
|
||||||
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
|
|
||||||
QWidget* widget = activityLayout->itemAt(timeIndex)->widget();
|
|
||||||
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(widget);
|
|
||||||
categoryWidget->removeFriendWidget(friendWidget, status);
|
categoryWidget->removeFriendWidget(friendWidget, status);
|
||||||
categoryWidget->addFriendWidget(friendWidget, status);
|
categoryWidget->addFriendWidget(friendWidget, status);
|
||||||
} else {
|
} else {
|
||||||
@ -473,7 +473,7 @@ void FriendListWidget::cycleContacts(GenericChatroomWidget* activeChatroomWidget
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
widget = activityLayout->itemAt(index)->widget();
|
auto* widget = activityLayout->itemAt(index)->widget();
|
||||||
categoryWidget = qobject_cast<CategoryWidget*>(widget);
|
categoryWidget = qobject_cast<CategoryWidget*>(widget);
|
||||||
|
|
||||||
if (categoryWidget != nullptr) {
|
if (categoryWidget != nullptr) {
|
||||||
@ -627,10 +627,7 @@ void FriendListWidget::moveWidget(FriendWidget* widget, Status::Status s, bool a
|
|||||||
circleWidget->addFriendWidget(widget, s);
|
circleWidget->addFriendWidget(widget, s);
|
||||||
} else {
|
} else {
|
||||||
const Friend* contact = widget->getFriend();
|
const Friend* contact = widget->getFriend();
|
||||||
const auto activityTime = getActiveTimeFriend(contact);
|
auto* categoryWidget = getTimeCategoryWidget(contact);
|
||||||
int timeIndex = static_cast<int>(getTimeBucket(activityTime));
|
|
||||||
QWidget* w = activityLayout->itemAt(timeIndex)->widget();
|
|
||||||
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w);
|
|
||||||
categoryWidget->addFriendWidget(widget, contact->getStatus());
|
categoryWidget->addFriendWidget(widget, contact->getStatus());
|
||||||
categoryWidget->show();
|
categoryWidget->show();
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,8 @@ class GroupWidget;
|
|||||||
class CircleWidget;
|
class CircleWidget;
|
||||||
class FriendListLayout;
|
class FriendListLayout;
|
||||||
class GenericChatroomWidget;
|
class GenericChatroomWidget;
|
||||||
|
class CategoryWidget;
|
||||||
|
class Friend;
|
||||||
|
|
||||||
class FriendListWidget : public QWidget
|
class FriendListWidget : public QWidget
|
||||||
{
|
{
|
||||||
@ -86,6 +88,7 @@ private:
|
|||||||
CircleWidget* createCircleWidget(int id = -1);
|
CircleWidget* createCircleWidget(int id = -1);
|
||||||
QLayout* nextLayout(QLayout* layout, bool forward) const;
|
QLayout* nextLayout(QLayout* layout, bool forward) const;
|
||||||
void moveFriends(QLayout* layout);
|
void moveFriends(QLayout* layout);
|
||||||
|
CategoryWidget* getTimeCategoryWidget(const Friend* frd) const;
|
||||||
|
|
||||||
Mode mode;
|
Mode mode;
|
||||||
bool groupsOnTop;
|
bool groupsOnTop;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user