31 precisionSpinBox->setClearValue( 4 );
34 minimumSpinBox->setMinimum( std::numeric_limits<int>::lowest() );
35 minimumSpinBox->setMaximum( std::numeric_limits<int>::max() );
36 minimumSpinBox->setValue( std::numeric_limits<int>::lowest() );
38 maximumSpinBox->setMinimum( std::numeric_limits<int>::lowest() );
39 maximumSpinBox->setMaximum( std::numeric_limits<int>::max() );
40 maximumSpinBox->setValue( std::numeric_limits<int>::max() );
42 stepSpinBox->setMaximum( std::numeric_limits<int>::max() );
43 stepSpinBox->setValue( 1 );
44 stepSpinBox->setClearValue( 1 );
46 minimumDoubleSpinBox->setMinimum( std::numeric_limits<double>::lowest() );
47 minimumDoubleSpinBox->setMaximum( std::numeric_limits<double>::max() );
48 minimumDoubleSpinBox->setValue( std::numeric_limits<double>::min() );
50 maximumDoubleSpinBox->setMinimum( std::numeric_limits<double>::lowest() );
51 maximumDoubleSpinBox->setMaximum( std::numeric_limits<double>::max() );
52 maximumDoubleSpinBox->setValue( std::numeric_limits<double>::max() );
55 stepDoubleSpinBox->setMaximum( std::numeric_limits<int>::max() );
56 stepDoubleSpinBox->setValue( 1 );
57 stepDoubleSpinBox->setClearValue( 1 );
62 const QMetaType::Type fieldType( vl->
fields().
at( fieldIdx ).
type() );
66 case QMetaType::Type::Int:
67 case QMetaType::Type::LongLong:
68 case QMetaType::Type::Double:
72 rangeStackedWidget->setCurrentIndex( fieldType == QMetaType::Type::Int ? 0 : 1 );
73 if ( fieldType == QMetaType::Type::LongLong )
75 minimumDoubleSpinBox->setDecimals( 0 );
76 maximumDoubleSpinBox->setDecimals( 0 );
77 stepDoubleSpinBox->setDecimals( 0 );
81 rangeWidget->addItem( tr(
"Editable" ), u
"SpinBox"_s );
82 rangeWidget->addItem( tr(
"Slider" ), u
"Slider"_s );
83 rangeWidget->addItem( tr(
"Dial" ), u
"Dial"_s );
89 text = tr(
"Current minimum for this value is %1 and current maximum is %2." ).arg( min.toString(), max.toString() );
94 text = tr(
"Attribute has no integer or real type, therefore range is not usable." );
99 if ( fieldType != QMetaType::Type::Double )
101 precisionSpinBox->hide();
102 precisionLabel->hide();
105 valuesLabel->setText( text );
111 connect( minimumDoubleSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &
QgsEditorConfigWidget::changed );
112 connect( maximumDoubleSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &
QgsEditorConfigWidget::changed );
113 connect( stepDoubleSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &
QgsEditorConfigWidget::changed );
124 switch (
layer()->fields().at(
field() ).type() )
126 case QMetaType::Type::Int:
127 cfg.insert( u
"Min"_s, minimumSpinBox->value() );
128 cfg.insert( u
"Max"_s, maximumSpinBox->value() );
129 cfg.insert( u
"Step"_s, stepSpinBox->value() );
134 case QMetaType::Type::Double:
135 case QMetaType::Type::LongLong:
136 cfg.insert( u
"Min"_s, minimumDoubleSpinBox->value() );
137 cfg.insert( u
"Max"_s, maximumDoubleSpinBox->value() );
138 cfg.insert( u
"Step"_s, stepDoubleSpinBox->value() );
145 cfg.insert( u
"Style"_s, rangeWidget->currentData().toString() );
146 cfg.insert( u
"AllowNull"_s, allowNullCheckBox->isChecked() );
147 cfg.insert( u
"Precision"_s, precisionSpinBox->value() );
149 if ( !suffixLineEdit->text().isEmpty() )
151 cfg.insert( u
"Suffix"_s, suffixLineEdit->text() );
159 minimumDoubleSpinBox->setValue(
config.value( u
"Min"_s, std::numeric_limits<double>::lowest() ).toDouble() );
160 maximumDoubleSpinBox->setValue(
config.value( u
"Max"_s, std::numeric_limits<double>::max() ).toDouble() );
161 stepDoubleSpinBox->setValue(
config.value( u
"Step"_s, 1.0 ).toDouble() );
162 minimumSpinBox->setValue(
config.value( u
"Min"_s, std::numeric_limits<int>::lowest() ).toInt() );
163 maximumSpinBox->setValue(
config.value( u
"Max"_s, std::numeric_limits<int>::max() ).toInt() );
164 stepSpinBox->setValue(
config.value( u
"Step"_s, 1 ).toInt() );
165 rangeWidget->setCurrentIndex( rangeWidget->findData(
config.value( u
"Style"_s,
"SpinBox" ) ) );
166 suffixLineEdit->setText(
config.value( u
"Suffix"_s ).toString() );
167 allowNullCheckBox->setChecked(
config.value( u
"AllowNull"_s,
true ).toBool() );
171 precisionSpinBox->setValue(
config.value( u
"Precision"_s, fieldPrecision ).toInt() );