diff options
author | Christian Stenger <christian.stenger@qt.io> | 2019-09-05 10:42:01 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2019-09-06 10:07:01 +0000 |
commit | 49942bc06a9976892b5a2f34a320e3c439ce0014 (patch) | |
tree | e050fd21fa0a4b91f4d74587f24df97967517c1b /src/plugins/autotest | |
parent | ad0dcb9668ae84afc84803425ce2546ccaaabc10 (diff) | |
download | qt-creator-49942bc06a9976892b5a2f34a320e3c439ce0014.tar.gz |
AutoTest: Re-order responsibilities
Keep the timer for syncing frameworks where it
is really used, do not create functions that are
not necessary at all.
Change-Id: Ie0a49a2611dc67510b72562455ea2a1af7b1c538
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/autotest')
-rw-r--r-- | src/plugins/autotest/autotestplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/autotest/projectsettingswidget.cpp | 5 | ||||
-rw-r--r-- | src/plugins/autotest/projectsettingswidget.h | 2 | ||||
-rw-r--r-- | src/plugins/autotest/testcodeparser.cpp | 1 | ||||
-rw-r--r-- | src/plugins/autotest/testprojectsettings.cpp | 2 | ||||
-rw-r--r-- | src/plugins/autotest/testsettingspage.cpp | 2 | ||||
-rw-r--r-- | src/plugins/autotest/testtreemodel.cpp | 34 | ||||
-rw-r--r-- | src/plugins/autotest/testtreemodel.h | 7 |
8 files changed, 16 insertions, 39 deletions
diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp index 15b894e645..c4980478db 100644 --- a/src/plugins/autotest/autotestplugin.cpp +++ b/src/plugins/autotest/autotestplugin.cpp @@ -148,7 +148,7 @@ AutotestPluginPrivate::AutotestPluginPrivate(AutotestPlugin *parent) ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory); m_frameworkManager->activateFrameworksFromSettings(q->settings()); - TestTreeModel::instance()->scheduleTestFrameworksSync(true); + TestTreeModel::instance()->synchronizeTestFrameworks(); connect(ProjectExplorer::SessionManager::instance(), &ProjectExplorer::SessionManager::startupProjectChanged, this, [this] { diff --git a/src/plugins/autotest/projectsettingswidget.cpp b/src/plugins/autotest/projectsettingswidget.cpp index 9ed5136dea..ad44034c30 100644 --- a/src/plugins/autotest/projectsettingswidget.cpp +++ b/src/plugins/autotest/projectsettingswidget.cpp @@ -86,11 +86,15 @@ ProjectTestSettingsWidget::ProjectTestSettingsWidget(ProjectExplorer::Project *p this, [this, generalWidget](int index) { generalWidget->setEnabled(index != 0); m_projectSettings->setUseGlobalSettings(index == 0); + m_syncFrameworksTimer.start(3000); }); connect(m_activeFrameworks, &QTreeWidget::itemChanged, this, &ProjectTestSettingsWidget::onActiveFrameworkChanged); connect(m_runAfterBuild, &QCheckBox::toggled, m_projectSettings, &TestProjectSettings::setRunAfterBuild); + m_syncFrameworksTimer.setSingleShot(true); + connect(&m_syncFrameworksTimer, &QTimer::timeout, + TestTreeModel::instance(), &TestTreeModel::synchronizeTestFrameworks); } void ProjectTestSettingsWidget::populateFrameworks(const QMap<Core::Id, bool> &frameworks) @@ -110,6 +114,7 @@ void ProjectTestSettingsWidget::onActiveFrameworkChanged(QTreeWidgetItem *item, { auto id = Core::Id::fromSetting(item->data(column, FrameworkIdRole)); m_projectSettings->activateFramework(id, item->data(0, Qt::CheckStateRole) == Qt::Checked); + m_syncFrameworksTimer.start(3000); } } // namespace Internal diff --git a/src/plugins/autotest/projectsettingswidget.h b/src/plugins/autotest/projectsettingswidget.h index 1963947202..b8d4c28096 100644 --- a/src/plugins/autotest/projectsettingswidget.h +++ b/src/plugins/autotest/projectsettingswidget.h @@ -25,6 +25,7 @@ #pragma once +#include <QTimer> #include <QWidget> QT_BEGIN_NAMESPACE @@ -55,6 +56,7 @@ private: QComboBox *m_useGlobalSettings = nullptr; QTreeWidget *m_activeFrameworks = nullptr; QCheckBox *m_runAfterBuild = nullptr; + QTimer m_syncFrameworksTimer; }; } // namespace Internal diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp index 1081c80aca..c798c2104e 100644 --- a/src/plugins/autotest/testcodeparser.cpp +++ b/src/plugins/autotest/testcodeparser.cpp @@ -206,6 +206,7 @@ void TestCodeParser::onQmlDocumentUpdated(const QmlJS::Document::Ptr &document) void TestCodeParser::onStartupProjectChanged(Project *project) { + m_model->synchronizeTestFrameworks(); // we might have project settings if (m_parserState == FullParse || m_parserState == PartialParse) { qCDebug(LOG) << "Canceling scanForTest (startup project changed)"; Core::ProgressManager::instance()->cancelTasks(Constants::TASK_PARSE); diff --git a/src/plugins/autotest/testprojectsettings.cpp b/src/plugins/autotest/testprojectsettings.cpp index 9c1555f106..29270a7f1b 100644 --- a/src/plugins/autotest/testprojectsettings.cpp +++ b/src/plugins/autotest/testprojectsettings.cpp @@ -56,14 +56,12 @@ void TestProjectSettings::setUseGlobalSettings(bool useGlobal) if (m_useGlobalSettings == useGlobal) return; m_useGlobalSettings = useGlobal; - TestTreeModel::instance()->scheduleTestFrameworksSync(false); } void TestProjectSettings::activateFramework(const Core::Id &id, bool activate) { if (m_activeTestFrameworks.value(id) != activate) { m_activeTestFrameworks[id] = activate; - TestTreeModel::instance()->scheduleTestFrameworksSync(false); } } diff --git a/src/plugins/autotest/testsettingspage.cpp b/src/plugins/autotest/testsettingspage.cpp index 6cf848b1b0..d67b2072b0 100644 --- a/src/plugins/autotest/testsettingspage.cpp +++ b/src/plugins/autotest/testsettingspage.cpp @@ -175,7 +175,7 @@ void TestSettingsPage::apply() m_settings->toSettings(Core::ICore::settings()); TestFrameworkManager *frameworkManager = TestFrameworkManager::instance(); frameworkManager->activateFrameworksFromSettings(m_settings); - TestTreeModel::instance()->scheduleTestFrameworksSync(true); + TestTreeModel::instance()->synchronizeTestFrameworks(); if (!changedIds.isEmpty()) TestTreeModel::instance()->rebuild(changedIds); } diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp index 66c4d646ed..747d49c19c 100644 --- a/src/plugins/autotest/testtreemodel.cpp +++ b/src/plugins/autotest/testtreemodel.cpp @@ -56,11 +56,6 @@ TestTreeModel::TestTreeModel(QObject *parent) : connect(m_parser, &TestCodeParser::parsingFailed, this, &TestTreeModel::sweep, Qt::QueuedConnection); - connect(ProjectExplorer::SessionManager::instance(), - &ProjectExplorer::SessionManager::startupProjectChanged, - this, &TestTreeModel::onStartupProjectChanged); - m_syncFrameworksTimer.setSingleShot(true); - connect(&m_syncFrameworksTimer, &QTimer::timeout, this, &TestTreeModel::syncTestFrameworks); setupParsingConnections(); } @@ -206,17 +201,15 @@ QList<TestTreeItem *> TestTreeModel::testItemsByName(const QString &testName) return result; } -void TestTreeModel::syncTestFrameworks() +void TestTreeModel::synchronizeTestFrameworks() { ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject(); - if (!project) - return; - QList<Core::Id> sortedIds; - TestFrameworkManager *frameworkManager = TestFrameworkManager::instance(); - const QVariant useGlobal = project->namedSettings(Constants::SK_USE_GLOBAL); + TestFrameworkManager *manager = TestFrameworkManager::instance(); + const QVariant useGlobal = project ? project->namedSettings(Constants::SK_USE_GLOBAL) + : QVariant(); if (!useGlobal.isValid() || AutotestPlugin::projectSettings(project)->useGlobalSettings()) { - sortedIds = frameworkManager->sortedActiveFrameworkIds(); + sortedIds = manager->sortedActiveFrameworkIds(); } else { // we've got custom project settings const TestProjectSettings *settings = AutotestPlugin::projectSettings(project); const QMap<Core::Id, bool> active = settings->activeFrameworks(); @@ -225,17 +218,6 @@ void TestTreeModel::syncTestFrameworks() }); } - syncFrameworks(sortedIds); -} - -void TestTreeModel::scheduleTestFrameworksSync(bool immediately) -{ - m_syncFrameworksTimer.start(immediately ? 0 : 3000); -} - -void TestTreeModel::syncFrameworks(const QList<Core::Id> &sortedIds) -{ - TestFrameworkManager *manager = TestFrameworkManager::instance(); // pre-check to avoid further processing when frameworks are unchanged Utils::TreeItem *invisibleRoot = rootItem(); const int count = invisibleRoot->childCount(); @@ -474,12 +456,6 @@ void TestTreeModel::onParseResultReady(const TestParseResultPtr result) handleParseResult(result.data(), rootNode); } -void TestTreeModel::onStartupProjectChanged() -{ - m_syncFrameworksTimer.stop(); - scheduleTestFrameworksSync(true); -} - void TestTreeModel::handleParseResult(const TestParseResult *result, TestTreeItem *parentNode) { const bool groupingEnabled = diff --git a/src/plugins/autotest/testtreemodel.h b/src/plugins/autotest/testtreemodel.h index 5b3a06e9e8..c22a8f8d49 100644 --- a/src/plugins/autotest/testtreemodel.h +++ b/src/plugins/autotest/testtreemodel.h @@ -33,7 +33,6 @@ #include <utils/treemodel.h> #include <QSortFilterProxyModel> -#include <QTimer> namespace Autotest { namespace Internal { @@ -59,7 +58,7 @@ public: QList<TestConfiguration *> getSelectedTests() const; QList<TestConfiguration *> getTestsForFile(const Utils::FilePath &fileName) const; QList<TestTreeItem *> testItemsByName(const QString &testName); - void scheduleTestFrameworksSync(bool immediately); + void synchronizeTestFrameworks(); void rebuild(const QList<Core::Id> &frameworkIds); #ifdef WITH_TESTS @@ -88,7 +87,6 @@ signals: private: void onParseResultReady(const TestParseResultPtr result); - void onStartupProjectChanged(); void handleParseResult(const TestParseResult *result, TestTreeItem *rootNode); void removeAllTestItems(); void removeTestRootNodes(); @@ -99,12 +97,9 @@ private: explicit TestTreeModel(QObject *parent = nullptr); void setupParsingConnections(); void filterAndInsert(TestTreeItem *item, TestTreeItem *root, bool groupingEnabled); - void syncTestFrameworks(); - void syncFrameworks(const QList<Core::Id> &sortedIds); QList<TestTreeItem *> testItemsByName(TestTreeItem *root, const QString &testName); Internal::TestCodeParser *m_parser = nullptr; - QTimer m_syncFrameworksTimer; }; namespace Internal { |