From c892fcfe8e9543782fa5898ea830ff78d6637870 Mon Sep 17 00:00:00 2001 From: John Gehrig <jdg.gehrig@gmail.com> Date: Fri, 17 Feb 2023 10:05:04 -0500 Subject: [PATCH] Issue 1022: Add GuiTreeview custom filters --- src/gui/treeview.cpp | 30 +++++++++++++++++++++++++++++- src/gui/treeview.h | 1 + 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/gui/treeview.cpp b/src/gui/treeview.cpp index acd31d59f..6984c8a07 100644 --- a/src/gui/treeview.cpp +++ b/src/gui/treeview.cpp @@ -9,6 +9,32 @@ namespace NeovimQt { +static QDir::Filters getTreeviewFilters(const QSettings& settings) noexcept +{ + QDir::Filters filters{ QDir::Filter::NoDotAndDotDot }; + + if (settings.value("Treeview/ShowDirs", true).toBool()) { + filters |= QDir::Filter::Dirs; + filters |= QDir::Filter::AllDirs; + } + if (settings.value("Treeview/ShowFiles", true).toBool()) { + filters |= QDir::Filter::Files; + } + if (settings.value("Treeview/ShowDrives", true).toBool()) { + filters |= QDir::Filter::Drives; + } + if (settings.value("Treeview/NoSymLinks", false).toBool()) { + filters |= QDir::Filter::NoSymLinks; + } + if (settings.value("Treeview/ShowHiddenFiles", false).toBool()) { + filters |= QDir::Filter::Hidden; + } + if (settings.value("Treeview/ShowSystemFiles", false).toBool()) { + filters |= QDir::Filter::System; + } + + return filters; +} TreeView::TreeView(NeovimConnector* nvim, QWidget* parent) noexcept : QTreeView(parent) , m_model{ parent } @@ -18,7 +44,10 @@ TreeView::TreeView(NeovimConnector* nvim, QWidget* parent) noexcept qFatal("Fatal Error: TreeView must have a valid NeovimConnector!"); } + QSettings settings; + setModel(&m_model); + m_model.setFilter(getTreeviewFilters(settings)); header()->hide(); @@ -27,7 +56,6 @@ TreeView::TreeView(NeovimConnector* nvim, QWidget* parent) noexcept hideColumn(i); } - QSettings settings; setVisible(settings.value("Gui/TreeView", false).toBool()); connect(m_nvim, &NeovimConnector::ready, this, &TreeView::neovimConnectorReady); diff --git a/src/gui/treeview.h b/src/gui/treeview.h index 0854e59ac..53aee8299 100644 --- a/src/gui/treeview.h +++ b/src/gui/treeview.h @@ -25,6 +25,7 @@ public slots: private: void updateVisibility(bool isVisible) noexcept; + void updateFilters() noexcept; QFileSystemModel m_model; NeovimConnector* m_nvim;