From 616d61b86c792acea70a7b3a23112111dc2ab99f Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 13 Feb 2020 15:00:41 +1300 Subject: [PATCH] Plugins dialog: show/hide non-selectable plugins. This is part of our work on issue #2285. --- src/pluginitemmodel.cpp | 18 ++++++++++++++++++ src/pluginitemmodel.h | 4 ++++ src/pluginsdialog.cpp | 8 +++----- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/pluginitemmodel.cpp b/src/pluginitemmodel.cpp index 7134dfb8d7..5d355ce559 100644 --- a/src/pluginitemmodel.cpp +++ b/src/pluginitemmodel.cpp @@ -121,6 +121,24 @@ QModelIndex PluginItem::modelIndex() const //============================================================================== +bool PluginItem::isHidden() const +{ + // Return whether we are hidden + + return mHidden; +} + +//============================================================================== + +void PluginItem::setHidden(bool pHidden) +{ + // Specify whether we are hidden + + mHidden = pHidden; +} + +//============================================================================== + bool PluginItem::hasCheckBox() const { // Return whether we have a check box diff --git a/src/pluginitemmodel.h b/src/pluginitemmodel.h index 9ef1ae73d2..31a7a7e17e 100644 --- a/src/pluginitemmodel.h +++ b/src/pluginitemmodel.h @@ -57,6 +57,9 @@ class PluginItem QModelIndex modelIndex() const; + bool isHidden() const; + void setHidden(bool pHidden); + bool hasCheckBox() const; void setHasCheckBox(bool pHasCheckBox); @@ -78,6 +81,7 @@ class PluginItem PluginItem *mParent = nullptr; QVector mChildren; + bool mHidden = false; bool mHasCheckBox = false; bool mCheckable = false; Qt::CheckState mCheckState; diff --git a/src/pluginsdialog.cpp b/src/pluginsdialog.cpp index 08748be29a..6f06ccbe36 100644 --- a/src/pluginsdialog.cpp +++ b/src/pluginsdialog.cpp @@ -612,8 +612,7 @@ void PluginsDialog::selectablePluginsCheckBoxToggled(bool pChecked) // Show/hide our unselectable plugins for (auto unselectablePluginItem : mUnselectablePluginItems) { - mGui->treeView->setRowHidden(unselectablePluginItem->index(), - unselectablePluginItem->parent()->modelIndex(), pChecked); + unselectablePluginItem->setHidden(pChecked); } // Show/hide our categories, based on whether they contain visible plugins @@ -624,10 +623,9 @@ void PluginsDialog::selectablePluginsCheckBoxToggled(bool pChecked) // are visible bool hideCategory = true; - QModelIndex categoryItemModelIndex = categoryItem->modelIndex(); for (int i = 0, iMax = categoryItem->childCount(); i < iMax; ++i) { - if (!mGui->treeView->isRowHidden(i, categoryItemModelIndex)) { + if (!categoryItem->child(i)->isHidden()) { hideCategory = false; break; @@ -643,7 +641,7 @@ void PluginsDialog::selectablePluginsCheckBoxToggled(bool pChecked) // Select the first visible category for (int i = 0, iMax = mModel->invisibleRootItem()->childCount(); i < iMax; ++i) { - if (!mGui->treeView->isRowHidden(i, mModel->invisibleRootItem()->modelIndex())) { + if (!mModel->invisibleRootItem()->child(i)->isHidden()) { mGui->treeView->setCurrentIndex(mModel->invisibleRootItem()->child(i)->modelIndex()); return;