diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2021-09-30 16:48:34 +0300 |
---|---|---|
committer | Hannah von Reth <hannah.vonreth@owncloud.com> | 2021-09-30 16:48:34 +0300 |
commit | f29c794c5b4bca37190911cb2acd60b737498805 (patch) | |
tree | eeef045eec99cc34a600736bb60357c9b8ec0db4 /src/gui/models | |
parent | d987a7e7cb19367d708e21f9ef881afecffe35a3 (diff) | |
parent | 47577c51f70792244e52d8813d9da2447bd01fea (diff) |
Merge remote-tracking branch 'origin/2.9'
Diffstat (limited to 'src/gui/models')
-rw-r--r-- | src/gui/models/expandingheaderview.cpp | 8 | ||||
-rw-r--r-- | src/gui/models/expandingheaderview.h | 1 | ||||
-rw-r--r-- | src/gui/models/models.cpp | 23 | ||||
-rw-r--r-- | src/gui/models/models.h | 4 | ||||
-rw-r--r-- | src/gui/models/protocolitemmodel.cpp | 2 |
5 files changed, 25 insertions, 13 deletions
diff --git a/src/gui/models/expandingheaderview.cpp b/src/gui/models/expandingheaderview.cpp index e1f945fc4..3457d3f63 100644 --- a/src/gui/models/expandingheaderview.cpp +++ b/src/gui/models/expandingheaderview.cpp @@ -16,9 +16,10 @@ #include "configfile.h" -#include <QScopedValueRollback> #include <QApplication> #include <QDebug> +#include <QMenu> +#include <QScopedValueRollback> using namespace OCC; @@ -71,3 +72,8 @@ void ExpandingHeaderView::resizeColumns(bool reset) } resizeSection(_expandingColumn, availableWidth); } + +void ExpandingHeaderView::addResetActionToMenu(QMenu *menu) +{ + menu->addAction(tr("Reset column sizes"), this, [this] { resizeColumns(true); }); +} diff --git a/src/gui/models/expandingheaderview.h b/src/gui/models/expandingheaderview.h index 9ed5c74cb..41029c6a8 100644 --- a/src/gui/models/expandingheaderview.h +++ b/src/gui/models/expandingheaderview.h @@ -27,6 +27,7 @@ public: void setExpandingColumn(int newExpandingColumn); void resizeColumns(bool reset = false); + void addResetActionToMenu(QMenu *menu); protected: void resizeEvent(QResizeEvent *event) override; diff --git a/src/gui/models/models.cpp b/src/gui/models/models.cpp index e549aaaf8..dc0b41987 100644 --- a/src/gui/models/models.cpp +++ b/src/gui/models/models.cpp @@ -77,16 +77,16 @@ QString OCC::Models::formatSelection(const QModelIndexList &items, int dataRole) return out; } -QMenu *OCC::Models::displayFilterDialog(const QStringList &candidates, QSortFilterProxyModel *model, int column, int role, QWidget *parent) +std::function<void()> OCC::Models::addFilterMenuItems(QMenu *menu, const QStringList &candidates, QSortFilterProxyModel *model, int column, const QString &columnName, int role) { - auto menu = new QMenu(parent); - menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(qApp->translate("OCC::Models", "Filter by")); - menu->addSeparator(); + menu->addAction(qApp->translate("OCC::Models", "%1 Filter:").arg(columnName))->setEnabled(false); + + auto filterGroup = new QActionGroup(menu); + filterGroup->setExclusive(true); const auto currentFilter = model->filterRegExp().pattern(); auto addAction = [=](const QString &s, const QString &filter) { - auto action = menu->addAction(s, parent, [=]() { + auto action = menu->addAction(s, menu, [=]() { model->setFilterRole(role); model->setFilterKeyColumn(column); model->setFilterFixedString(filter); @@ -95,10 +95,12 @@ QMenu *OCC::Models::displayFilterDialog(const QStringList &candidates, QSortFilt if (currentFilter == filter) { action->setChecked(true); } + filterGroup->addAction(action); + return action; }; - addAction(qApp->translate("OCC::Models", "No filter"), QString()); + auto noFilter = addAction(QApplication::translate("OCC::Models", "No filter"), QString()); for (const auto &c : candidates) { addAction(c, c); @@ -106,5 +108,10 @@ QMenu *OCC::Models::displayFilterDialog(const QStringList &candidates, QSortFilt QTimer::singleShot(0, menu, [menu] { menu->popup(QCursor::pos()); }); - return menu; + + auto resetFunction = [noFilter]() { + noFilter->setChecked(true); + noFilter->trigger(); + }; + return resetFunction; } diff --git a/src/gui/models/models.h b/src/gui/models/models.h index b96519fe2..9b302171f 100644 --- a/src/gui/models/models.h +++ b/src/gui/models/models.h @@ -33,9 +33,7 @@ namespace Models { */ QString formatSelection(const QModelIndexList &items, int dataRole = Qt::DisplayRole); - - QMenu *displayFilterDialog(const QStringList &candidates, QSortFilterProxyModel *model, int column, int role, QWidget *parent = nullptr); - + std::function<void()> addFilterMenuItems(QMenu *menu, const QStringList &candidates, QSortFilterProxyModel *model, int column, const QString &columnName, int role); /** * Returns a vector with indices diff --git a/src/gui/models/protocolitemmodel.cpp b/src/gui/models/protocolitemmodel.cpp index 97d9a7d6a..5055aee18 100644 --- a/src/gui/models/protocolitemmodel.cpp +++ b/src/gui/models/protocolitemmodel.cpp @@ -107,7 +107,7 @@ QVariant ProtocolItemModel::data(const QModelIndex &index, int role) const case ProtocolItemRole::Account: return item.folder()->accountState()->account()->displayName(); case ProtocolItemRole::Status: - return Utility::enumName(item.status()); + return item.status(); case ProtocolItemRole::ColumnCount: Q_UNREACHABLE(); break; |