AutoTest: Introduce active state for test frameworks

Change-Id: I0fddce91a239c0a51352a25e34a221fd8880b733
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
Christian Stenger
2016-06-06 15:35:00 +02:00
parent c64fa0d329
commit 8cba580343
15 changed files with 285 additions and 137 deletions

View File

@@ -24,6 +24,7 @@
****************************************************************************/
#include "autotestconstants.h"
#include "testframeworkmanager.h"
#include "testsettingspage.h"
#include "testsettings.h"
#include "testtreemodel.h"
@@ -79,6 +80,7 @@ void TestSettingsWidget::setSettings(const TestSettings &settings)
default:
m_ui.walltimeRB->setChecked(true);
}
populateFrameworksListWidget(settings.frameworks);
}
TestSettings TestSettingsWidget::settings() const
@@ -107,9 +109,38 @@ TestSettings TestSettingsWidget::settings() const
else if (m_ui.perfRB->isChecked())
result.metrics = MetricsType::Perf;
result.frameworks = frameworks();
return result;
}
void TestSettingsWidget::populateFrameworksListWidget(const QHash<Core::Id, bool> &frameworks)
{
TestFrameworkManager *frameworkManager = TestFrameworkManager::instance();
const QList<Core::Id> &registered = frameworkManager->sortedRegisteredFrameworkIds();
m_ui.frameworkListWidget->clear();
for (const Core::Id &id : registered) {
QListWidgetItem *item = new QListWidgetItem(frameworkManager->frameworkNameForId(id),
m_ui.frameworkListWidget);
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
item->setCheckState(frameworks.value(id) ? Qt::Checked : Qt::Unchecked);
item->setData(Qt::UserRole, id.toSetting());
}
}
QHash<Core::Id, bool> TestSettingsWidget::frameworks() const
{
const int itemCount = m_ui.frameworkListWidget->count();
QHash<Core::Id, bool> frameworks;
for (int row = 0; row < itemCount; ++row) {
if (QListWidgetItem *item = m_ui.frameworkListWidget->item(row)) {
frameworks.insert(Core::Id::fromSetting(item->data(Qt::UserRole)),
item->checkState() == Qt::Checked);
}
}
return frameworks;
}
TestSettingsPage::TestSettingsPage(const QSharedPointer<TestSettings> &settings)
: m_settings(settings), m_widget(0)
{
@@ -139,12 +170,16 @@ void TestSettingsPage::apply()
return;
const TestSettings newSettings = m_widget->settings();
if (newSettings != *m_settings) {
bool frameworkSyncNecessary = newSettings.frameworks != m_settings->frameworks;
*m_settings = newSettings;
m_settings->toSettings(Core::ICore::settings());
if (m_settings->alwaysParse)
TestTreeModel::instance()->enableParsingFromSettings();
else
TestTreeModel::instance()->disableParsingFromSettings();
TestFrameworkManager::instance()->activateFrameworksFromSettings(m_settings);
if (frameworkSyncNecessary)
TestTreeModel::instance()->syncTestFrameworks();
}
}