mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-18 00:03:05 -04:00
editor widgets: restore handling of null values in textedit widget (fixes #10497)
This commit is contained in:
parent
f617be13af
commit
e605ad6501
@ -161,20 +161,22 @@ bool QgsFeatureAction::addFeature( const QgsAttributeMap& defaultAttributes )
|
|||||||
mFeature.initAttributes( fields.count() );
|
mFeature.initAttributes( fields.count() );
|
||||||
for ( int idx = 0; idx < fields.count(); ++idx )
|
for ( int idx = 0; idx < fields.count(); ++idx )
|
||||||
{
|
{
|
||||||
|
QVariant v;
|
||||||
|
|
||||||
if ( defaultAttributes.contains( idx ) )
|
if ( defaultAttributes.contains( idx ) )
|
||||||
{
|
{
|
||||||
QgsDebugMsg( QString( "Using specified default %1 for %2" ).arg( defaultAttributes.value( idx ).toString() ).arg( idx ) );
|
v = defaultAttributes.value( idx );
|
||||||
mFeature.setAttribute( idx, defaultAttributes.value( idx ) );
|
|
||||||
}
|
}
|
||||||
else if ( reuseLastValues && sLastUsedValues.contains( mLayer ) && sLastUsedValues[ mLayer ].contains( idx ) )
|
else if ( reuseLastValues && sLastUsedValues.contains( mLayer ) && sLastUsedValues[ mLayer ].contains( idx ) )
|
||||||
{
|
{
|
||||||
QgsDebugMsg( QString( "reusing %1 for %2" ).arg( sLastUsedValues[ mLayer ][idx].toString() ).arg( idx ) );
|
v = sLastUsedValues[ mLayer ][idx];
|
||||||
mFeature.setAttribute( idx, sLastUsedValues[ mLayer ][idx] );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mFeature.setAttribute( idx, provider->defaultValue( idx ) );
|
v = provider->defaultValue( idx );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mFeature.setAttribute( idx, v );
|
||||||
}
|
}
|
||||||
|
|
||||||
// show the dialog to enter attribute values
|
// show the dialog to enter attribute values
|
||||||
|
@ -28,8 +28,7 @@ QgsTextEditWidget::QgsTextEditWidget( QgsVectorLayer* vl, int fieldIdx, QWidget*
|
|||||||
|
|
||||||
QVariant QgsTextEditWidget::value()
|
QVariant QgsTextEditWidget::value()
|
||||||
{
|
{
|
||||||
QSettings settings;
|
QString v;
|
||||||
QVariant v;
|
|
||||||
|
|
||||||
if ( mTextEdit && mTextEdit->document()->isModified() )
|
if ( mTextEdit && mTextEdit->document()->isModified() )
|
||||||
{
|
{
|
||||||
@ -53,12 +52,11 @@ QVariant QgsTextEditWidget::value()
|
|||||||
v = mLineEdit->text();
|
v = mLineEdit->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( v.toString() == settings.value( "qgis/nullValue", "NULL" ).toString() )
|
if (( v.isEmpty() && ( field().type() == QVariant::Int || field().type() == QVariant::Double || field().type() == QVariant::LongLong || field().type() == QVariant::Date ) ) ||
|
||||||
{
|
v == QSettings().value( "qgis/nullValue", "NULL" ).toString() )
|
||||||
v = QVariant( field().type() );
|
return QVariant( field().type() );
|
||||||
}
|
else
|
||||||
|
return QVariant( v );
|
||||||
return v;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget* QgsTextEditWidget::createWidget( QWidget* parent )
|
QWidget* QgsTextEditWidget::createWidget( QWidget* parent )
|
||||||
@ -99,8 +97,7 @@ void QgsTextEditWidget::initWidget( QWidget* editor )
|
|||||||
QgsFilterLineEdit *fle = qobject_cast<QgsFilterLineEdit*>( mLineEdit );
|
QgsFilterLineEdit *fle = qobject_cast<QgsFilterLineEdit*>( mLineEdit );
|
||||||
if ( fle && !( field().type() == QVariant::Int || field().type() == QVariant::Double || field().type() == QVariant::LongLong || field().type() == QVariant::Date ) )
|
if ( fle && !( field().type() == QVariant::Int || field().type() == QVariant::Double || field().type() == QVariant::LongLong || field().type() == QVariant::Date ) )
|
||||||
{
|
{
|
||||||
QSettings settings;
|
fle->setNullValue( QSettings().value( "qgis/nullValue", "NULL" ).toString() );
|
||||||
fle->setNullValue( settings.value( "qgis/nullValue", "NULL" ).toString() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( valueChanged( QString ) ) );
|
connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( valueChanged( QString ) ) );
|
||||||
@ -109,17 +106,25 @@ void QgsTextEditWidget::initWidget( QWidget* editor )
|
|||||||
|
|
||||||
void QgsTextEditWidget::setValue( const QVariant& value )
|
void QgsTextEditWidget::setValue( const QVariant& value )
|
||||||
{
|
{
|
||||||
|
QString v;
|
||||||
|
if ( value.isNull() && !( field().type() == QVariant::Int || field().type() == QVariant::Double || field().type() == QVariant::LongLong || field().type() == QVariant::Date ) )
|
||||||
|
{
|
||||||
|
v = QSettings().value( "qgis/nullValue", "NULL" ).toString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
v = value.toString();
|
||||||
|
|
||||||
if ( mTextEdit )
|
if ( mTextEdit )
|
||||||
{
|
{
|
||||||
if ( config( "UseHtml" ).toBool() )
|
if ( config( "UseHtml" ).toBool() )
|
||||||
mTextEdit->setHtml( value.toString() );
|
mTextEdit->setHtml( v );
|
||||||
else
|
else
|
||||||
mTextEdit->setPlainText( value.toString() );
|
mTextEdit->setPlainText( v );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( mPlainTextEdit )
|
if ( mPlainTextEdit )
|
||||||
mPlainTextEdit->setPlainText( value.toString() );
|
mPlainTextEdit->setPlainText( v );
|
||||||
|
|
||||||
if ( mLineEdit )
|
if ( mLineEdit )
|
||||||
mLineEdit->setText( value.toString() );
|
mLineEdit->setText( v );
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user