summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2018-05-07 09:06:49 (GMT)
committerTobias Markmann <tm@ayena.de>2018-05-07 09:06:49 (GMT)
commite9f6129a4ce5db25bcb6de47be94ee89357713d0 (patch)
tree5992b8d0146b7e82c5564843b85578fde7a1636f
parent699eb1459ea478b2a0e20d6867cd6be19f939d6e (diff)
downloadswift-e9f6129a4ce5db25bcb6de47be94ee89357713d0.zip
swift-e9f6129a4ce5db25bcb6de47be94ee89357713d0.tar.bz2
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
-rw-r--r--Swift/QtUI/QtChatOverviewBundle.cpp22
-rw-r--r--Swift/QtUI/QtChatOverviewBundle.h3
2 files changed, 23 insertions, 2 deletions
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_;