25 minimumSpinBox->setMinimum( std::numeric_limits<int>::lowest() );
26 minimumSpinBox->setMaximum( std::numeric_limits<int>::max() );
27 minimumSpinBox->setValue( std::numeric_limits<int>::lowest() );
29 maximumSpinBox->setMinimum( std::numeric_limits<int>::lowest() );
30 maximumSpinBox->setMaximum( std::numeric_limits<int>::max() );
31 maximumSpinBox->setValue( std::numeric_limits<int>::max() );
33 stepSpinBox->setMaximum( std::numeric_limits<int>::max() );
34 stepSpinBox->setValue( 1 );
36 minimumDoubleSpinBox->setMinimum( std::numeric_limits<double>::lowest() );
37 minimumDoubleSpinBox->setMaximum( std::numeric_limits<double>::max() );
38 minimumDoubleSpinBox->setValue( std::numeric_limits<double>::min() );
40 maximumDoubleSpinBox->setMinimum( std::numeric_limits<double>::lowest() );
41 maximumDoubleSpinBox->setMaximum( std::numeric_limits<double>::max() );
42 maximumDoubleSpinBox->setValue( std::numeric_limits<double>::max() );
45 stepDoubleSpinBox->setMaximum( std::numeric_limits<int>::max() );
46 stepDoubleSpinBox->setValue( 1 );
51 QVariant::Type fieldType( vl->
fields().
at( fieldIdx ).
type() );
56 case QVariant::LongLong:
57 case QVariant::Double:
59 rangeStackedWidget->setCurrentIndex( vl->
fields().
at( fieldIdx ).
type() == QVariant::Double ? 1 : 0 );
62 rangeWidget->addItem( tr(
"Editable" ), QStringLiteral(
"SpinBox" ) );
63 rangeWidget->addItem( tr(
"Slider" ), QStringLiteral(
"Slider" ) );
64 rangeWidget->addItem( tr(
"Dial" ), QStringLiteral(
"Dial" ) );
69 text = tr(
"Current minimum for this value is %1 and current maximum is %2." ).arg( min.toString(), max.toString() );
74 text = tr(
"Attribute has no integer or real type, therefore range is not usable." );
79 if ( fieldType != QVariant::Double )
81 precisionSpinBox->hide();
82 precisionLabel->hide();
85 valuesLabel->setText( text );
91 connect( minimumDoubleSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &
QgsEditorConfigWidget::changed );
92 connect( maximumDoubleSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &
QgsEditorConfigWidget::changed );
93 connect( stepDoubleSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &
QgsEditorConfigWidget::changed );
103 switch (
layer()->fields().at(
field() ).type() )
106 case QVariant::LongLong:
107 cfg.insert( QStringLiteral(
"Min" ), minimumSpinBox->value() );
108 cfg.insert( QStringLiteral(
"Max" ), maximumSpinBox->value() );
109 cfg.insert( QStringLiteral(
"Step" ), stepSpinBox->value() );
112 case QVariant::Double:
113 cfg.insert( QStringLiteral(
"Min" ), minimumDoubleSpinBox->value() );
114 cfg.insert( QStringLiteral(
"Max" ), maximumDoubleSpinBox->value() );
115 cfg.insert( QStringLiteral(
"Step" ), stepDoubleSpinBox->value() );
122 cfg.insert( QStringLiteral(
"Style" ), rangeWidget->currentData().toString() );
123 cfg.insert( QStringLiteral(
"AllowNull" ), allowNullCheckBox->isChecked() );
124 cfg.insert( QStringLiteral(
"Precision" ), precisionSpinBox->value() );
126 if ( !suffixLineEdit->text().isEmpty() )
128 cfg.insert( QStringLiteral(
"Suffix" ), suffixLineEdit->text() );
136 minimumDoubleSpinBox->setValue( config.value( QStringLiteral(
"Min" ), std::numeric_limits<double>::lowest() ).toDouble( ) );
137 maximumDoubleSpinBox->setValue( config.value( QStringLiteral(
"Max" ), std::numeric_limits<double>::max() ).toDouble( ) );
138 stepDoubleSpinBox->setValue( config.value( QStringLiteral(
"Step" ), 1.0 ).toDouble() );
139 minimumSpinBox->setValue( config.value( QStringLiteral(
"Min" ), std::numeric_limits<int>::lowest() ).toInt() );
140 maximumSpinBox->setValue( config.value( QStringLiteral(
"Max" ), std::numeric_limits<int>::max() ).toInt() );
141 stepSpinBox->setValue( config.value( QStringLiteral(
"Step" ), 1 ).toInt() );
142 rangeWidget->setCurrentIndex( rangeWidget->findData( config.value( QStringLiteral(
"Style" ),
"SpinBox" ) ) );
143 suffixLineEdit->setText( config.value( QStringLiteral(
"Suffix" ) ).toString() );
144 allowNullCheckBox->setChecked( config.value( QStringLiteral(
"AllowNull" ),
true ).toBool() );
145 precisionSpinBox->setValue( config.value( QStringLiteral(
"Precision" ),
layer()->fields().at(
field() ).
precision() ).toInt( ) );
150 QString style = rangeWidget->itemData( index ).toString();
151 allowNullCheckBox->setEnabled( style == QLatin1String(
"SpinBox" ) );
void rangeWidgetChanged(int index)
QVariantMap config() override
Create a configuration from the current GUI state.
QgsField at(int i) const
Gets field at particular index (must be in range 0..N-1)
QgsFields fields() const FINAL
Returns the list of fields of this layer.
QVariant minimumValue(int index) const FINAL
Returns the minimum value for an attribute column or an invalid variant in case of error...
QgsRangeConfigDlg(QgsVectorLayer *vl, int fieldIdx, QWidget *parent)
QVariant maximumValue(int index) const FINAL
Returns the maximum value for an attribute column or an invalid variant in case of error...
Represents a vector layer which manages a vector based data sets.
void setConfig(const QVariantMap &config) override
Update the configuration widget to represent the given configuration.