summaryrefslogtreecommitdiff
path: root/src/plugins/autotest
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2019-09-05 10:42:01 +0200
committerChristian Stenger <christian.stenger@qt.io>2019-09-06 10:07:01 +0000
commit49942bc06a9976892b5a2f34a320e3c439ce0014 (patch)
treee050fd21fa0a4b91f4d74587f24df97967517c1b /src/plugins/autotest
parentad0dcb9668ae84afc84803425ce2546ccaaabc10 (diff)
downloadqt-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.cpp2
-rw-r--r--src/plugins/autotest/projectsettingswidget.cpp5
-rw-r--r--src/plugins/autotest/projectsettingswidget.h2
-rw-r--r--src/plugins/autotest/testcodeparser.cpp1
-rw-r--r--src/plugins/autotest/testprojectsettings.cpp2
-rw-r--r--src/plugins/autotest/testsettingspage.cpp2
-rw-r--r--src/plugins/autotest/testtreemodel.cpp34
-rw-r--r--src/plugins/autotest/testtreemodel.h7
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 {