From e9f6129a4ce5db25bcb6de47be94ee89357713d0 Mon Sep 17 00:00:00 2001 From: Tobias Markmann <tm@ayena.de> Date: Mon, 7 May 2018 11:06:49 +0200 Subject: Allow to hide empty overview bundles in roster This fixes a regression of commit 19eefe668. Test-Information: Ran Swift and verified that the 'Unread' bundle is never shown if empty. Change-Id: If13b84291e08d14bbbed57f53e0999e78e20f21d diff --git a/Swift/QtUI/QtChatOverviewBundle.cpp b/Swift/QtUI/QtChatOverviewBundle.cpp index 8505541..121ae2e 100644 --- a/Swift/QtUI/QtChatOverviewBundle.cpp +++ b/Swift/QtUI/QtChatOverviewBundle.cpp @@ -6,7 +6,6 @@ #include <Swift/QtUI/QtChatOverviewBundle.h> -#include <QDebug> #include <QHBoxLayout> #include <QLabel> #include <QPalette> @@ -93,7 +92,7 @@ QtChatOverviewBundle::QtChatOverviewBundle(ChattablesModel* rootModel, QString n nameLabel->setStyleSheet("color: white;"); headerLayout->addWidget(nameLabel); headerLayout->addStretch(); - if (!hideWhenEmpty) { + if (!hideWhenEmpty_) { filterLabel_ = new QtClickableLabel(this); filterLabel_->setText(tr("Online")); filterLabel_->setStyleSheet("color: white;"); @@ -106,6 +105,19 @@ QtChatOverviewBundle::QtChatOverviewBundle(ChattablesModel* rootModel, QString n listView_->setItemDelegate(new QtChatOverviewDelegate(this)); connect(listView_, SIGNAL(clicked(const QModelIndex&)), this, SLOT(handleItemClicked(const QModelIndex&))); mainLayout->addWidget(listView_); + + if (hideWhenEmpty_) { + connect(proxyModel_, &QAbstractItemModel::modelReset, this, [&](){ + updateVisibility(); + }); + connect(proxyModel_, &QAbstractItemModel::rowsInserted, this, [&](){ + updateVisibility(); + }); + connect(proxyModel_, &QAbstractItemModel::rowsRemoved, this, [&](){ + updateVisibility(); + }); + updateVisibility(); + } } QtChatOverviewBundle::~QtChatOverviewBundle() {} @@ -121,6 +133,12 @@ void QtChatOverviewBundle::handleFilterClicked() { } } +void QtChatOverviewBundle::updateVisibility() { + auto shouldBeVisible = (proxyModel_->rowCount(listView_->rootIndex()) > 0); + setVisible(shouldBeVisible); +} + + void QtChatOverviewBundle::handleItemClicked(const QModelIndex& index) { clicked(JID(Q2PSTRING(index.data(ChattablesModel::JIDRole).toString()))); } diff --git a/Swift/QtUI/QtChatOverviewBundle.h b/Swift/QtUI/QtChatOverviewBundle.h index 6e232ca..95fd5d2 100644 --- a/Swift/QtUI/QtChatOverviewBundle.h +++ b/Swift/QtUI/QtChatOverviewBundle.h @@ -49,6 +49,9 @@ namespace Swift { void handleItemClicked(const QModelIndex&); private: + void updateVisibility(); + + private: ChattablesModel* rootModel_; QtExpandedListView* listView_; BundleFilter* proxyModel_; -- cgit v0.10.2-6-g49f6