Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix editable attribute of joined fields (fix #7739)
Based on pull request 576 by minorua
  • Loading branch information
m-kuhn committed Jul 3, 2013
1 parent 67b8ee4 commit d2b2bb1
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/app/qgsattributetypedialog.cpp
Expand Up @@ -109,6 +109,11 @@ void QgsAttributeTypeDialog::setFieldEditable( bool editable )
isFieldEditableCheckBox->setChecked( editable );
}

void QgsAttributeTypeDialog::setFieldEditableEnabled( bool enabled )
{
isFieldEditableCheckBox->setEnabled( enabled );
}

void QgsAttributeTypeDialog::setLabelOnTop( bool onTop )
{
labelOnTopCheckBox->setChecked( onTop );
Expand Down
7 changes: 7 additions & 0 deletions src/app/qgsattributetypedialog.h
Expand Up @@ -100,6 +100,13 @@ class QgsAttributeTypeDialog: public QDialog, private Ui::QgsAttributeTypeDialog
*/
void setFieldEditable( bool editable );

/**
* Sets the enabled state of the "editable" checkbox
*
* @param enabled sets the enabled state of the checkbox
*/
void setFieldEditableEnabled( bool enabled );

/**
* Setter for checkbox to label on top
* @param bool onTop
Expand Down
2 changes: 2 additions & 0 deletions src/app/qgsfieldsproperties.cpp
Expand Up @@ -494,6 +494,7 @@ void QgsFieldsProperties::attributeTypeDialog()
attributeTypeDialog.setLabelOnTop( cfg.mLabelOnTop );

attributeTypeDialog.setIndex( index, cfg.mEditType );
attributeTypeDialog.setFieldEditableEnabled( cfg.mEditableEnabled );

if ( !attributeTypeDialog.exec() )
return;
Expand Down Expand Up @@ -930,6 +931,7 @@ QgsFieldsProperties::FieldConfig::FieldConfig( QgsVectorLayer* layer, int idx )
: mButton( NULL )
{
mEditable = layer->fieldEditable( idx );
mEditableEnabled = layer->pendingFields().fieldOrigin( idx ) != QgsFields::OriginJoin;
mLabelOnTop = layer->labelOnTop( idx );
mValueRelationData = layer->valueRelation( idx );
mValueMap = layer->valueMap( idx );
Expand Down
1 change: 1 addition & 0 deletions src/app/qgsfieldsproperties.h
Expand Up @@ -54,6 +54,7 @@ class QgsFieldsProperties : public QWidget, private Ui_QgsFieldsPropertiesBase
FieldConfig( QgsVectorLayer* layer, int idx );

bool mEditable;
bool mEditableEnabled;
bool mLabelOnTop;
QgsVectorLayer::ValueRelationData mValueRelationData;
QMap<QString, QVariant> mValueMap;
Expand Down
2 changes: 2 additions & 0 deletions src/app/qgsvectorlayerproperties.cpp
Expand Up @@ -954,6 +954,7 @@ void QgsVectorLayerProperties::on_mButtonAddJoin_clicked()
pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
!layer->isEditable() && layer->vectorJoins().size() < 1 );
}
mFieldsPropertiesDialog->init();
}
}

Expand Down Expand Up @@ -995,6 +996,7 @@ void QgsVectorLayerProperties::on_mButtonRemoveJoin_clicked()
mJoinTreeWidget->takeTopLevelItem( mJoinTreeWidget->indexOfTopLevelItem( currentJoinItem ) );
pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
!layer->isEditable() && layer->vectorJoins().size() < 1 );
mFieldsPropertiesDialog->init();
}


Expand Down
4 changes: 4 additions & 0 deletions src/core/qgsvectorlayer.cpp
Expand Up @@ -3083,7 +3083,11 @@ bool QgsVectorLayer::fieldEditable( int idx )
{
const QgsFields &fields = pendingFields();
if ( idx >= 0 && idx < fields.count() )
{
if ( mUpdatedFields.fieldOrigin( idx ) == QgsFields::OriginJoin )
return false;
return mFieldEditables.value( fields[idx].name(), true );
}
else
return true;
}
Expand Down

0 comments on commit d2b2bb1

Please sign in to comment.