forked from qt-creator/qt-creator
Autotest: use new settings page convenience for Settings
Change-Id: I2e51b176b0874dc63370a0ddbd07c04b976da747 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user