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();