forked from qt-creator/qt-creator
Utils: Introduce a BaseAspect::setEnabler(BoolAspect *)
A convenience method to tie the enabled state of an aspect to some other bool aspect, to be used e.g. when settings item availability depends on some check box. Makes it harder to miss one of the three necessary steps. Change-Id: I8c120bb6846aea2a503614f7c73fa57a149cab41 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -309,6 +309,17 @@ void BaseAspect::setEnabled(bool enabled)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Makes the enabled state of this aspect depend on the checked state of \a checker.
|
||||||
|
*/
|
||||||
|
void BaseAspect::setEnabler(BoolAspect *checker)
|
||||||
|
{
|
||||||
|
QTC_ASSERT(checker, return);
|
||||||
|
setEnabled(checker->value());
|
||||||
|
connect(checker, &BoolAspect::volatileValueChanged, this, &BaseAspect::setEnabled);
|
||||||
|
connect(checker, &BoolAspect::valueChanged, this, &BaseAspect::setEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
bool BaseAspect::isReadOnly() const
|
bool BaseAspect::isReadOnly() const
|
||||||
{
|
{
|
||||||
return d->m_readOnly;
|
return d->m_readOnly;
|
||||||
|
@@ -44,6 +44,7 @@ QT_END_NAMESPACE
|
|||||||
namespace Utils {
|
namespace Utils {
|
||||||
|
|
||||||
class AspectContainer;
|
class AspectContainer;
|
||||||
|
class BoolAspect;
|
||||||
class LayoutBuilder;
|
class LayoutBuilder;
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -95,6 +96,7 @@ public:
|
|||||||
|
|
||||||
bool isEnabled() const;
|
bool isEnabled() const;
|
||||||
void setEnabled(bool enabled);
|
void setEnabled(bool enabled);
|
||||||
|
void setEnabler(BoolAspect *checker);
|
||||||
|
|
||||||
bool isReadOnly() const;
|
bool isReadOnly() const;
|
||||||
void setReadOnly(bool enabled);
|
void setReadOnly(bool enabled);
|
||||||
|
@@ -74,6 +74,7 @@ BoostTestSettings::BoostTestSettings()
|
|||||||
seed.setLabelText(tr("Seed:"));
|
seed.setLabelText(tr("Seed:"));
|
||||||
seed.setToolTip(tr("A seed of 0 means no randomization. A value of 1 uses the current "
|
seed.setToolTip(tr("A seed of 0 means no randomization. A value of 1 uses the current "
|
||||||
"time, any other value is used as random seed generator."));
|
"time, any other value is used as random seed generator."));
|
||||||
|
seed.setEnabler(&randomize);
|
||||||
|
|
||||||
registerAspect(&randomize);
|
registerAspect(&randomize);
|
||||||
randomize.setSettingsKey("Randomize");
|
randomize.setSettingsKey("Randomize");
|
||||||
@@ -99,8 +100,6 @@ BoostTestSettings::BoostTestSettings()
|
|||||||
memLeaks.setDefaultValue(true);
|
memLeaks.setDefaultValue(true);
|
||||||
memLeaks.setLabelText(tr("Detect memory leaks"));
|
memLeaks.setLabelText(tr("Detect memory leaks"));
|
||||||
memLeaks.setToolTip(tr("Enable memory leak detection."));
|
memLeaks.setToolTip(tr("Enable memory leak detection."));
|
||||||
|
|
||||||
QObject::connect(&randomize, &BoolAspect::volatileValueChanged, &seed, &BaseAspect::setEnabled);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BoostTestSettingsPage::BoostTestSettingsPage(BoostTestSettings *settings, Utils::Id settingsId)
|
BoostTestSettingsPage::BoostTestSettingsPage(BoostTestSettings *settings, Utils::Id settingsId)
|
||||||
|
@@ -44,33 +44,33 @@ CatchTestSettings::CatchTestSettings()
|
|||||||
registerAspect(&abortAfter);
|
registerAspect(&abortAfter);
|
||||||
abortAfter.setSettingsKey("AbortAfter");
|
abortAfter.setSettingsKey("AbortAfter");
|
||||||
abortAfter.setRange(1, 9999);
|
abortAfter.setRange(1, 9999);
|
||||||
abortAfter.setEnabled(false);
|
abortAfter.setEnabler(&abortAfterChecked);
|
||||||
|
|
||||||
registerAspect(&benchmarkSamples);
|
registerAspect(&benchmarkSamples);
|
||||||
benchmarkSamples.setSettingsKey("BenchSamples");
|
benchmarkSamples.setSettingsKey("BenchSamples");
|
||||||
benchmarkSamples.setRange(1, 999999);
|
benchmarkSamples.setRange(1, 999999);
|
||||||
benchmarkSamples.setDefaultValue(100);
|
benchmarkSamples.setDefaultValue(100);
|
||||||
benchmarkSamples.setEnabled(false);
|
benchmarkSamples.setEnabler(&samplesChecked);
|
||||||
|
|
||||||
registerAspect(&benchmarkResamples);
|
registerAspect(&benchmarkResamples);
|
||||||
benchmarkResamples.setSettingsKey("BenchResamples");
|
benchmarkResamples.setSettingsKey("BenchResamples");
|
||||||
benchmarkResamples.setRange(1, 9999999);
|
benchmarkResamples.setRange(1, 9999999);
|
||||||
benchmarkResamples.setDefaultValue(100000);
|
benchmarkResamples.setDefaultValue(100000);
|
||||||
benchmarkResamples.setToolTip(tr("Number of resamples for bootstrapping."));
|
benchmarkResamples.setToolTip(tr("Number of resamples for bootstrapping."));
|
||||||
benchmarkResamples.setEnabled(false);
|
benchmarkResamples.setEnabler(&resamplesChecked);
|
||||||
|
|
||||||
registerAspect(&confidenceInterval);
|
registerAspect(&confidenceInterval);
|
||||||
confidenceInterval.setSettingsKey("BenchConfInt");
|
confidenceInterval.setSettingsKey("BenchConfInt");
|
||||||
confidenceInterval.setRange(0., 1.);
|
confidenceInterval.setRange(0., 1.);
|
||||||
confidenceInterval.setSingleStep(0.05);
|
confidenceInterval.setSingleStep(0.05);
|
||||||
confidenceInterval.setDefaultValue(0.95);
|
confidenceInterval.setDefaultValue(0.95);
|
||||||
confidenceInterval.setEnabled(false);
|
confidenceInterval.setEnabler(&confidenceIntervalChecked);
|
||||||
|
|
||||||
registerAspect(&benchmarkWarmupTime);
|
registerAspect(&benchmarkWarmupTime);
|
||||||
benchmarkWarmupTime.setSettingsKey("BenchWarmup");
|
benchmarkWarmupTime.setSettingsKey("BenchWarmup");
|
||||||
benchmarkWarmupTime.setSuffix(tr(" ms"));
|
benchmarkWarmupTime.setSuffix(tr(" ms"));
|
||||||
benchmarkWarmupTime.setRange(0, 10000);
|
benchmarkWarmupTime.setRange(0, 10000);
|
||||||
benchmarkWarmupTime.setEnabled(false);
|
benchmarkWarmupTime.setEnabler(&warmupChecked);
|
||||||
|
|
||||||
registerAspect(&abortAfterChecked);
|
registerAspect(&abortAfterChecked);
|
||||||
abortAfterChecked.setSettingsKey("AbortChecked");
|
abortAfterChecked.setSettingsKey("AbortChecked");
|
||||||
@@ -133,17 +133,6 @@ CatchTestSettings::CatchTestSettings()
|
|||||||
if (auto boolAspect = dynamic_cast<BoolAspect *>(aspect))
|
if (auto boolAspect = dynamic_cast<BoolAspect *>(aspect))
|
||||||
boolAspect->setLabelPlacement(BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel);
|
boolAspect->setLabelPlacement(BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel);
|
||||||
});
|
});
|
||||||
|
|
||||||
QObject::connect(&abortAfterChecked, &BoolAspect::volatileValueChanged,
|
|
||||||
&abortAfter, &BaseAspect::setEnabled);
|
|
||||||
QObject::connect(&samplesChecked, &BoolAspect::volatileValueChanged,
|
|
||||||
&benchmarkSamples, &BaseAspect::setEnabled);
|
|
||||||
QObject::connect(&resamplesChecked, &BoolAspect::volatileValueChanged,
|
|
||||||
&benchmarkResamples, &BaseAspect::setEnabled);
|
|
||||||
QObject::connect(&confidenceIntervalChecked, &BoolAspect::volatileValueChanged,
|
|
||||||
&confidenceInterval, &BaseAspect::setEnabled);
|
|
||||||
QObject::connect(&warmupChecked, &BoolAspect::volatileValueChanged,
|
|
||||||
&benchmarkWarmupTime, &BaseAspect::setEnabled);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CatchTestSettingsPage::CatchTestSettingsPage(CatchTestSettings *settings, Utils::Id settingsId)
|
CatchTestSettingsPage::CatchTestSettingsPage(CatchTestSettings *settings, Utils::Id settingsId)
|
||||||
|
@@ -72,8 +72,8 @@ QmlProfilerSettings::QmlProfilerSettings()
|
|||||||
flushInterval.setSettingsKey("Analyzer.QmlProfiler.FlushInterval");
|
flushInterval.setSettingsKey("Analyzer.QmlProfiler.FlushInterval");
|
||||||
flushInterval.setRange(1, 10000000);
|
flushInterval.setRange(1, 10000000);
|
||||||
flushInterval.setDefaultValue(1000);
|
flushInterval.setDefaultValue(1000);
|
||||||
flushInterval.setLabelText(tr("Flush interval (ms):", nullptr));
|
flushInterval.setLabelText(tr("Flush interval (ms):"));
|
||||||
flushInterval.setEnabled(false); // Controled by flushEnabled.
|
flushInterval.setEnabler(&flushEnabled);
|
||||||
|
|
||||||
registerAspect(&lastTraceFile);
|
registerAspect(&lastTraceFile);
|
||||||
lastTraceFile.setSettingsKey("Analyzer.QmlProfiler.LastTraceFile");
|
lastTraceFile.setSettingsKey("Analyzer.QmlProfiler.LastTraceFile");
|
||||||
@@ -88,11 +88,6 @@ QmlProfilerSettings::QmlProfilerSettings()
|
|||||||
"for example if multiple QML engines start and stop sequentially during a single run of\n"
|
"for example if multiple QML engines start and stop sequentially during a single run of\n"
|
||||||
"the program."));
|
"the program."));
|
||||||
|
|
||||||
connect(&flushEnabled, &BoolAspect::volatileValueChanged,
|
|
||||||
&flushInterval, &BaseAspect::setEnabled);
|
|
||||||
connect(&flushEnabled, &BoolAspect::valueChanged,
|
|
||||||
&flushInterval, &BaseAspect::setEnabled);
|
|
||||||
|
|
||||||
// Read stored values
|
// Read stored values
|
||||||
readSettings(Core::ICore::settings());
|
readSettings(Core::ICore::settings());
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,7 @@ namespace Internal {
|
|||||||
class QmlProfilerSettings : public ProjectExplorer::ISettingsAspect
|
class QmlProfilerSettings : public ProjectExplorer::ISettingsAspect
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QmlProfilerSettings();
|
QmlProfilerSettings();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user