Autotest: use new settings page convenience for Settings

Change-Id: I2e51b176b0874dc63370a0ddbd07c04b976da747
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-01-10 10:33:27 +01:00
parent 7c0678d9a4
commit d86fba3ee1
6 changed files with 139 additions and 228 deletions

View File

@@ -27,6 +27,7 @@
#include "qttestconstants.h"
#include "qttestsettingspage.h"
#include "qttestsettings.h"
#include "ui_qttestsettingspage.h"
#include <coreplugin/icore.h>
@@ -35,20 +36,33 @@
namespace Autotest {
namespace Internal {
QtTestSettingsWidget::QtTestSettingsWidget()
class QtTestSettingsWidget final : public Core::IOptionsPageWidget
{
Q_DECLARE_TR_FUNCTIONS(Autotest::Internal::QtTestSettingsWidget)
public:
explicit QtTestSettingsWidget(QSharedPointer<QtTestSettings> settings);
void apply() final;
void finish() final {}
private:
Ui::QtTestSettingsPage m_ui;
QSharedPointer<QtTestSettings> m_settings;
};
QtTestSettingsWidget::QtTestSettingsWidget(QSharedPointer<QtTestSettings> settings)
: m_settings(settings)
{
m_ui.setupUi(this);
m_ui.callgrindRB->setEnabled(Utils::HostOsInfo::isAnyUnixHost()); // valgrind available on UNIX
m_ui.perfRB->setEnabled(Utils::HostOsInfo::isLinuxHost()); // according to docs perf Linux only
}
void QtTestSettingsWidget::setSettings(const QtTestSettings &settings)
{
m_ui.disableCrashhandlerCB->setChecked(settings.noCrashHandler);
m_ui.useXMLOutputCB->setChecked(settings.useXMLOutput);
m_ui.verboseBenchmarksCB->setChecked(settings.verboseBench);
m_ui.logSignalsAndSlotsCB->setChecked(settings.logSignalsSlots);
switch (settings.metrics) {
m_ui.disableCrashhandlerCB->setChecked(m_settings->noCrashHandler);
m_ui.useXMLOutputCB->setChecked(m_settings->useXMLOutput);
m_ui.verboseBenchmarksCB->setChecked(m_settings->verboseBench);
m_ui.logSignalsAndSlotsCB->setChecked(m_settings->logSignalsSlots);
switch (m_settings->metrics) {
case MetricsType::Walltime:
m_ui.walltimeRB->setChecked(true);
break;
@@ -67,52 +81,35 @@ void QtTestSettingsWidget::setSettings(const QtTestSettings &settings)
}
}
QtTestSettings QtTestSettingsWidget::settings() const
void QtTestSettingsWidget::apply()
{
QtTestSettings result;
result.noCrashHandler = m_ui.disableCrashhandlerCB->isChecked();
result.useXMLOutput = m_ui.useXMLOutputCB->isChecked();
result.verboseBench = m_ui.verboseBenchmarksCB->isChecked();
result.logSignalsSlots = m_ui.logSignalsAndSlotsCB->isChecked();
m_settings->noCrashHandler = m_ui.disableCrashhandlerCB->isChecked();
m_settings->useXMLOutput = m_ui.useXMLOutputCB->isChecked();
m_settings->verboseBench = m_ui.verboseBenchmarksCB->isChecked();
m_settings->logSignalsSlots = m_ui.logSignalsAndSlotsCB->isChecked();
if (m_ui.walltimeRB->isChecked())
result.metrics = MetricsType::Walltime;
m_settings->metrics = MetricsType::Walltime;
else if (m_ui.tickcounterRB->isChecked())
result.metrics = MetricsType::TickCounter;
m_settings->metrics = MetricsType::TickCounter;
else if (m_ui.eventCounterRB->isChecked())
result.metrics = MetricsType::EventCounter;
m_settings->metrics = MetricsType::EventCounter;
else if (m_ui.callgrindRB->isChecked())
result.metrics = MetricsType::CallGrind;
m_settings->metrics = MetricsType::CallGrind;
else if (m_ui.perfRB->isChecked())
result.metrics = MetricsType::Perf;
m_settings->metrics = MetricsType::Perf;
return result;
m_settings->toSettings(Core::ICore::settings());
}
QtTestSettingsPage::QtTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
const ITestFramework *framework)
: ITestSettingsPage(framework),
m_settings(qSharedPointerCast<QtTestSettings>(settings))
: ITestSettingsPage(framework)
{
setDisplayName(QCoreApplication::translate("QtTestFramework",
QtTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
}
QWidget *QtTestSettingsPage::widget()
{
if (!m_widget) {
m_widget = new QtTestSettingsWidget;
m_widget->setSettings(*m_settings);
}
return m_widget;
}
void QtTestSettingsPage::apply()
{
if (!m_widget) // page was not shown at all
return;
*m_settings = m_widget->settings();
m_settings->toSettings(Core::ICore::settings());
setWidgetCreator([settings] {
return new QtTestSettingsWidget(qSharedPointerCast<QtTestSettings>(settings));
});
}
} // namespace Internal