diff options
author | Erik Verbruggen <erik@verbruggen.consulting> | 2021-09-24 17:36:41 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2021-09-29 16:38:47 +0300 |
commit | 2397475f85908136570e1fd5051501e73b924295 (patch) | |
tree | 3e3a28ac85b4464c6ef0b324c6bc0e71cf2c0214 /src/gui/protocolwidget.cpp | |
parent | b6809421a9bfc0b3bd6a5bd6abb743318750c242 (diff) |
Allow to filter issue table by issue type
Fixes: #9000
Diffstat (limited to 'src/gui/protocolwidget.cpp')
-rw-r--r-- | src/gui/protocolwidget.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/gui/protocolwidget.cpp b/src/gui/protocolwidget.cpp index a1925ee3c..73b33b314 100644 --- a/src/gui/protocolwidget.cpp +++ b/src/gui/protocolwidget.cpp @@ -48,6 +48,8 @@ ProtocolWidget::ProtocolWidget(QWidget *parent) connect(_ui->_tableView, &QTreeWidget::customContextMenuRequested, this, &ProtocolWidget::slotItemContextMenu); + // Build the model-view "stack": + // _model <- _sortModel <- _statusSortModel <- _tableView _model = new ProtocolItemModel(2000, false, this); _sortModel = new QSortFilterProxyModel(this); _sortModel->setSourceModel(_model); @@ -62,7 +64,12 @@ ProtocolWidget::ProtocolWidget(QWidget *parent) header->hideSection(static_cast<int>(ProtocolItemModel::ProtocolItemRole::Status)); header->setContextMenuPolicy(Qt::CustomContextMenu); connect(header, &QHeaderView::customContextMenuRequested, header, [header, this] { - showHeaderContextMenu(header, _sortModel); + auto menu = showFilterMenu(header, _sortModel); + header->addResetActionToMenu(menu); + }); + + connect(_ui->_filterButton, &QAbstractButton::clicked, this, [this] { + showFilterMenu(_ui->_filterButton, _sortModel); }); connect(FolderMan::instance(), &FolderMan::folderRemoved, this, [this](Folder *f) { @@ -77,11 +84,16 @@ ProtocolWidget::~ProtocolWidget() delete _ui; } -void ProtocolWidget::showHeaderContextMenu(ExpandingHeaderView *header, QSortFilterProxyModel *model) +QMenu *ProtocolWidget::showFilterMenu(QWidget *parent, QSortFilterProxyModel *model) { - auto menu = Models::displayFilterDialog(AccountManager::instance()->accountNames(), model, static_cast<int>(ProtocolItemModel::ProtocolItemRole::Account), Qt::DisplayRole, header); + auto menu = new QMenu(parent); + menu->setAttribute(Qt::WA_DeleteOnClose); + Models::addFilterMenuItems(menu, AccountManager::instance()->accountNames(), model, static_cast<int>(ProtocolItemModel::ProtocolItemRole::Account), tr("Account"), Qt::DisplayRole); menu->addSeparator(); - menu->addAction(tr("Reset column sizes"), header, [header] { header->resizeColumns(true); }); + QTimer::singleShot(0, menu, [menu] { + menu->popup(QCursor::pos()); + }); + return menu; } void ProtocolWidget::showContextMenu(QWidget *parent, ProtocolItemModel *model, const QModelIndexList &items) |