From 1f3133059e3c821e92dbaa6e3149dd59ce86c245 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Sat, 23 Mar 2019 21:21:51 -0500 Subject: Prevent diagnose plugins that return false for isActive from reporting notifications --- src/problemsdialog.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/problemsdialog.cpp') diff --git a/src/problemsdialog.cpp b/src/problemsdialog.cpp index 60a0b1df..795baab0 100644 --- a/src/problemsdialog.cpp +++ b/src/problemsdialog.cpp @@ -1,6 +1,7 @@ #include "problemsdialog.h" #include "ui_problemsdialog.h" #include +#include #include #include #include @@ -9,8 +10,8 @@ using namespace MOBase; -ProblemsDialog::ProblemsDialog(std::vector diagnosePlugins, QWidget *parent) - : QDialog(parent), ui(new Ui::ProblemsDialog), m_DiagnosePlugins(diagnosePlugins) +ProblemsDialog::ProblemsDialog(std::vector pluginObjects, QWidget *parent) + : QDialog(parent), ui(new Ui::ProblemsDialog), m_PluginObjects(pluginObjects) { ui->setupUi(this); @@ -29,7 +30,15 @@ ProblemsDialog::~ProblemsDialog() void ProblemsDialog::runDiagnosis() { ui->problemsWidget->clear(); - foreach (IPluginDiagnose *diagnose, m_DiagnosePlugins) { + for(QObject *pluginObj : m_PluginObjects) { + IPlugin *plugin = qobject_cast(pluginObj); + if (plugin != nullptr && !plugin->isActive()) + continue; + + IPluginDiagnose *diagnose = qobject_cast(pluginObj); + if (diagnose == nullptr) + continue; + std::vector activeProblems = diagnose->activeProblems(); foreach (unsigned int key, activeProblems) { QTreeWidgetItem *newItem = new QTreeWidgetItem(); -- cgit v1.3.1