Browse Source

refactor(time): Make enum class

reviewable/pr4320/r1
Diadlo 8 years ago
parent
commit
15a385ba75
No known key found for this signature in database
GPG Key ID: 5AF9F2E29107C727
  1. 65
      src/widget/friendlistwidget.cpp

65
src/widget/friendlistwidget.cpp

@ -33,25 +33,27 @@
#include <QTimer> #include <QTimer>
#include <cassert> #include <cassert>
enum Time : int enum class Time
{ {
Today = 0, Today,
Yesterday = 1, Yesterday,
ThisWeek = 2, ThisWeek,
ThisMonth = 3, ThisMonth,
Month1Ago = 4, Month1Ago,
Month2Ago = 5, Month2Ago,
Month3Ago = 6, Month3Ago,
Month4Ago = 7, Month4Ago,
Month5Ago = 8, Month5Ago,
LongAgo = 9, LongAgo,
Never = 10 Never
}; };
static const int LAST_TIME = static_cast<int>(Time::Never);
Time getTime(const QDate& date) Time getTime(const QDate& date)
{ {
if (date == QDate()) { if (date == QDate()) {
return Never; return Time::Never;
} }
QDate today = QDate::currentDate(); QDate today = QDate::currentDate();
@ -73,7 +75,7 @@ Time getTime(const QDate& date)
} }
} }
return LongAgo; return Time::LongAgo;
} }
QDate getDateFriend(Friend* contact) QDate getDateFriend(Friend* contact)
@ -207,7 +209,7 @@ void FriendListWidget::setMode(Mode mode)
#undef COMMENT #undef COMMENT
activityLayout = new QVBoxLayout(); activityLayout = new QVBoxLayout();
for (int t = Today; t <= Never; ++t) { for (Time t : names.keys()) {
CategoryWidget* category = new CategoryWidget(this); CategoryWidget* category = new CategoryWidget(this);
category->setName(names[t]); category->setName(names[t]);
activityLayout->addWidget(category); activityLayout->addWidget(category);
@ -256,7 +258,7 @@ void FriendListWidget::moveFriends(QLayout* layout)
int friendId = friendWidget->friendId; int friendId = friendWidget->friendId;
Friend* contact = FriendList::findFriend(friendId); Friend* contact = FriendList::findFriend(friendId);
QDate activityDate = getDateFriend(contact); QDate activityDate = getDateFriend(contact);
Time time = getTime(activityDate); int time = static_cast<int>(getTime(activityDate));
QWidget* w = activityLayout->itemAt(time)->widget(); QWidget* w = activityLayout->itemAt(time)->widget();
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w); CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w);
@ -290,9 +292,9 @@ void FriendListWidget::removeFriendWidget(FriendWidget* w)
Friend* contact = FriendList::findFriend(w->friendId); Friend* contact = FriendList::findFriend(w->friendId);
if (mode == Activity) { if (mode == Activity) {
QDate activityDate = getDateFriend(contact); QDate activityDate = getDateFriend(contact);
Time time = getTime(activityDate); int time = static_cast<int>(getTime(activityDate));
CategoryWidget* categoryWidget = QWidget* widget = activityLayout->itemAt(time)->widget();
qobject_cast<CategoryWidget*>(activityLayout->itemAt(time)->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 {
@ -407,9 +409,9 @@ void FriendListWidget::cycleContacts(GenericChatroomWidget* activeChatroomWidget
return; return;
QDate activityDate = getDateFriend(FriendList::findFriend(friendWidget->friendId)); QDate activityDate = getDateFriend(FriendList::findFriend(friendWidget->friendId));
index = getTime(activityDate); index = static_cast<int>(getTime(activityDate));
CategoryWidget* categoryWidget = QWidget* widget = activityLayout->itemAt(index)->widget();
qobject_cast<CategoryWidget*>(activityLayout->itemAt(index)->widget()); CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(widget);
if (categoryWidget == nullptr || categoryWidget->cycleContacts(friendWidget, forward)) if (categoryWidget == nullptr || categoryWidget->cycleContacts(friendWidget, forward))
return; return;
@ -418,16 +420,16 @@ void FriendListWidget::cycleContacts(GenericChatroomWidget* activeChatroomWidget
for (;;) { for (;;) {
// Bounds checking. // Bounds checking.
if (index < Today) { if (index < 0) {
index = Never; index = LAST_TIME;
continue; continue;
} else if (index > Never) { } else if (index > LAST_TIME) {
index = Today; index = 0;
continue; continue;
} }
CategoryWidget* categoryWidget = widget = activityLayout->itemAt(index)->widget();
qobject_cast<CategoryWidget*>(activityLayout->itemAt(index)->widget()); categoryWidget = qobject_cast<CategoryWidget*>(widget);
if (categoryWidget != nullptr) { if (categoryWidget != nullptr) {
if (!categoryWidget->cycleContacts(forward)) { if (!categoryWidget->cycleContacts(forward)) {
@ -575,7 +577,7 @@ void FriendListWidget::moveWidget(FriendWidget* widget, Status s, bool add)
} else { } else {
Friend* contact = FriendList::findFriend(widget->friendId); Friend* contact = FriendList::findFriend(widget->friendId);
QDate activityDate = getDateFriend(contact); QDate activityDate = getDateFriend(contact);
Time time = getTime(activityDate); int time = static_cast<int>(getTime(activityDate));
QWidget* w = activityLayout->itemAt(time)->widget(); QWidget* w = activityLayout->itemAt(time)->widget();
CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w); CategoryWidget* categoryWidget = qobject_cast<CategoryWidget*>(w);
categoryWidget->addFriendWidget(widget, contact->getStatus()); categoryWidget->addFriendWidget(widget, contact->getStatus());
@ -588,8 +590,9 @@ void FriendListWidget::updateActivityDate(const QDate& date)
if (mode != Activity) if (mode != Activity)
return; return;
CategoryWidget* categoryWidget = int time = static_cast<int>(getTime(date));
static_cast<CategoryWidget*>(activityLayout->itemAt(getTime(date))->widget()); QWidget* widget = activityLayout->itemAt(time)->widget();
CategoryWidget* categoryWidget = static_cast<CategoryWidget*>(widget);
categoryWidget->updateStatus(); categoryWidget->updateStatus();
categoryWidget->setVisible(categoryWidget->hasChatrooms()); categoryWidget->setVisible(categoryWidget->hasChatrooms());

Loading…
Cancel
Save