diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2021-03-24 22:46:12 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2021-04-08 12:50:35 +0300 |
commit | 393618a8c9f18f883683bcd4267e5a8160f96911 (patch) | |
tree | 49fa21e2228f863d09d79ea1442c108fdb1a0206 /src/gui/activitywidget.cpp | |
parent | f9ee331d91d18dfc91c2db1d7a73618ca5e8d650 (diff) |
Port activitylist to a QTreeview and QAbstractTableModel
We now hav proper headers and sortig capabilities
Fixes: #8158
Diffstat (limited to 'src/gui/activitywidget.cpp')
-rw-r--r-- | src/gui/activitywidget.cpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/src/gui/activitywidget.cpp b/src/gui/activitywidget.cpp index 9d61d19aa..94e326d3c 100644 --- a/src/gui/activitywidget.cpp +++ b/src/gui/activitywidget.cpp @@ -17,6 +17,7 @@ #include "activitylistmodel.h" #include "activitywidget.h" +#include "configfile.h"> #include "syncresult.h" #include "logger.h" #include "theme.h" @@ -28,7 +29,6 @@ #include "account.h" #include "accountstate.h" #include "accountmanager.h" -#include "activityitemdelegate.h" #include "protocolwidget.h" #include "issueswidget.h" #include "QProgressIndicator.h" @@ -61,11 +61,23 @@ ActivityWidget::ActivityWidget(QWidget *parent) #endif _model = new ActivityListModel(this); - ActivityItemDelegate *delegate = new ActivityItemDelegate; - delegate->setParent(this); - _ui->_activityList->setItemDelegate(delegate); - _ui->_activityList->setAlternatingRowColors(true); - _ui->_activityList->setModel(_model); + auto sortModel = new QSortFilterProxyModel(this); + sortModel->setSourceModel(_model); + _ui->_activityList->setModel(sortModel); + sortModel->setSortRole(ActivityListModel::UnderlyingDataRole); + _ui->_activityList->hideColumn(static_cast<int>(ActivityListModel::ActivityRole::Path)); + _ui->_activityList->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); + _ui->_activityList->horizontalHeader()->setSectionResizeMode(static_cast<int>(ActivityListModel::ActivityRole::Text), QHeaderView::Stretch); + _ui->_activityList->horizontalHeader()->setSortIndicator(static_cast<int>(ActivityListModel::ActivityRole::PointInTime), Qt::DescendingOrder); + + ConfigFile cfg; + _ui->_activityList->horizontalHeader()->setObjectName(QStringLiteral("ActivityListModelHeader")); + cfg.restoreGeometryHeader(_ui->_activityList->horizontalHeader()); + + connect(qApp, &QApplication::aboutToQuit, this, [this] { + ConfigFile cfg; + cfg.saveGeometryHeader(_ui->_activityList->horizontalHeader()); + }); _ui->_notifyLabel->hide(); _ui->_notifyScroll->hide(); @@ -100,7 +112,7 @@ ActivityWidget::ActivityWidget(QWidget *parent) _copyBtn->setToolTip(tr("Copy the activity list to the clipboard.")); connect(_copyBtn, &QAbstractButton::clicked, this, &ActivityWidget::copyToClipboard); - connect(_model, &QAbstractItemModel::rowsInserted, this, &ActivityWidget::rowsInserted); + connect(_model, &QAbstractItemModel::modelReset, this, &ActivityWidget::dataChanged); connect(_ui->_activityList, &QListView::activated, this, &ActivityWidget::slotOpenFile); @@ -237,10 +249,8 @@ void ActivityWidget::checkActivityTabVisibility() void ActivityWidget::slotOpenFile(QModelIndex indx) { - qCDebug(lcActivity) << indx.isValid() << indx.data(ActivityItemDelegate::PathRole).toString() << QFile::exists(indx.data(ActivityItemDelegate::PathRole).toString()); if (indx.isValid()) { - QString fullPath = indx.data(ActivityItemDelegate::PathRole).toString(); - + const auto fullPath = indx.data(static_cast<int>(ActivityListModel::ActivityRole::Path)).toString(); if (QFile::exists(fullPath)) { showInFileManager(fullPath); } @@ -539,7 +549,7 @@ ActivitySettings::ActivitySettings(QWidget *parent) this, &ActivitySettings::slotRegularNotificationCheck); // connect a model signal to stop the animation. - connect(_activityWidget, &ActivityWidget::rowsInserted, _progressIndicator, &QProgressIndicator::stopAnimation); + connect(_activityWidget, &ActivityWidget::dataChanged, _progressIndicator, &QProgressIndicator::stopAnimation); // We want the protocol be the default _tab->setCurrentIndex(1); |