Browse Source

refactor(friendlist): deduplicate time category widget logic

reviewable/pr5667/r4
Anthony Bilinski 6 years ago
parent
commit
08a646e456
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
  1. 33
      src/widget/friendlistwidget.cpp
  2. 3
      src/widget/friendlistwidget.h

33
src/widget/friendlistwidget.cpp

@ -28,6 +28,8 @@ @@ -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) @@ -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) @@ -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) @@ -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 @@ -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 @@ -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();
}

3
src/widget/friendlistwidget.h

@ -34,6 +34,8 @@ class GroupWidget; @@ -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: @@ -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;

Loading…
Cancel
Save