From 4a875ce8f5cd3056b168ffdbb06803e4edce8788 Mon Sep 17 00:00:00 2001 From: zero-one Date: Wed, 11 Mar 2015 17:30:01 -0700 Subject: [PATCH] Merges Away, Busy, and Online friend list layouts into a single layout. Also comments out the debug output in FriendListWidget::getFriendLayout() because hitting the default return statement is no longer anomalous behavior. --- src/widget/friendlistwidget.cpp | 4 ++-- src/widget/widget.cpp | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/widget/friendlistwidget.cpp b/src/widget/friendlistwidget.cpp index 58d824d62..8185458ad 100644 --- a/src/widget/friendlistwidget.cpp +++ b/src/widget/friendlistwidget.cpp @@ -33,7 +33,7 @@ FriendListWidget::FriendListWidget(QWidget *parent) : groupLayout->setSpacing(0); groupLayout->setMargin(0); - for (Status s : {Status::Online, Status::Away, Status::Busy, Status::Offline}) + for (Status s : {Status::Online, Status::Offline}) { QVBoxLayout *l = new QVBoxLayout(); l->setSpacing(0); @@ -60,7 +60,7 @@ QVBoxLayout* FriendListWidget::getFriendLayout(Status s) if (res != layouts.end()) return res.value(); - qDebug() << "Friend Status: " << static_cast(s) << " not found!"; + //qDebug() << "Friend Status: " << static_cast(s) << " not found!"; return layouts[static_cast(Status::Online)]; } diff --git a/src/widget/widget.cpp b/src/widget/widget.cpp index ab5a9e6d2..55bfa9ceb 100644 --- a/src/widget/widget.cpp +++ b/src/widget/widget.cpp @@ -623,11 +623,18 @@ void Widget::onFriendStatusChanged(int friendId, Status status) Friend* f = FriendList::findFriend(friendId); if (!f) return; - - contactListWidget->moveWidget(f->getFriendWidget(), status, f->getEventFlag()); - + bool isActualChange = f->getStatus() != status; + if(isActualChange){ + if(f->getStatus() == Status::Offline){ + contactListWidget->moveWidget(f->getFriendWidget(), Status::Online, f->getEventFlag()); + } + else if(status == Status::Offline){ + contactListWidget->moveWidget(f->getFriendWidget(), Status::Offline, f->getEventFlag()); + } + } + f->setStatus(status); f->getFriendWidget()->updateStatusLight();