RememberValues.patch
| src/app/qgsattributedialog.cpp (working copy) | ||
|---|---|---|
| 43 | 43 | #include <QLineEdit> | 
| 44 | 44 | |
| 45 | 45 | int QgsAttributeDialog::smFormCounter = 0; | 
| 46 | QCheckBox *cbxReuseValues; | |
| 46 | 47 | |
| 47 | 48 | QgsAttributeDialog::QgsAttributeDialog( QgsVectorLayer *vl, QgsFeature *thepFeature, bool featureOwner ) | 
| 48 | 49 | : mDialog( 0 ) | 
| ... | ... | |
| 99 | 100 | mFrame->setFrameShape( QFrame::StyledPanel ); | 
| 100 | 101 | mFrame->setFrameShadow( QFrame::Raised ); | 
| 101 | 102 | |
| 102 |     gridLayout->addWidget( mFrame, 0, 0, 1, 1 ); | |
| 103 |     gridLayout->addWidget( mFrame, 0, 0, 1, 2 ); | |
| 103 | 104 | |
| 105 | cbxReuseValues = new QCheckBox( "Save values for next time", mDialog ); | |
| 106 | cbxReuseValues->setEnabled( true ); | |
| 107 | ||
| 108 | QSettings settings; | |
| 109 | // read the digitizing settings | |
| 110 | bool reuseLastValues = settings.value( "/qgis/digitizing/reuseLastValues", false ).toBool(); | |
| 111 | if ( reuseLastValues) | |
| 112 |     { | |
| 113 | cbxReuseValues->setCheckState( Qt::Checked ); | |
| 114 | } | |
| 115 | else | |
| 116 |     { | |
| 117 | cbxReuseValues->setCheckState( Qt::Unchecked ); | |
| 118 | } | |
| 119 | ||
| 120 | mFrame->setObjectName( QString::fromUtf8( "cbxRememberLastValues" ) ); | |
| 121 | gridLayout->addWidget( cbxReuseValues, 2 , 0 , 1 , 1 ); | |
| 122 | ||
| 104 | 123 | buttonBox = new QDialogButtonBox( mDialog ); | 
| 105 | 124 | buttonBox->setObjectName( QString::fromUtf8( "buttonBox" ) ); | 
| 106 |     gridLayout->addWidget( buttonBox, 2, 0, 1, 1 ); | |
| 125 |     gridLayout->addWidget( buttonBox, 2, 1, 1, 1 ); | |
| 107 | 126 | |
| 108 | 127 | // | 
| 109 | 128 | //Set up dynamic inside a scroll box | 
| ... | ... | |
| 279 | 298 | if ( !mLayer->isEditable() || !mFeature ) | 
| 280 | 299 | return; | 
| 281 | 300 | |
| 301 | QSettings settings; | |
| 302 | settings.setValue( "/qgis/digitizing/reuseLastValues", cbxReuseValues->isChecked() ); | |
| 303 | #ifdef QGISDEBUG | |
| 304 | QgsDebugMsg( QString( "reuseLastValues bool: %1" ).arg( cbxReuseValues->isChecked() ) ); | |
| 305 | #endif | |
| 306 | ||
| 282 | 307 | //write the new values back to the feature | 
| 283 | 308 | QgsAttributeMap myAttributes = mFeature->attributeMap(); | 
| 284 | 309 | int myIndex = 0; | 
| ... | ... | |
| 292 | 317 | |
| 293 | 318 | ++myIndex; | 
| 294 | 319 | } | 
| 320 | ||
| 321 | ||
| 295 | 322 | } | 
| 296 | 323 | |
| 297 | 324 | int QgsAttributeDialog::exec() | 
| src/app/qgsfeatureaction.cpp (working copy) | ||
|---|---|---|
| 136 | 136 | |
| 137 | 137 | QSettings settings; | 
| 138 | 138 | bool reuseLastValues = settings.value( "/qgis/digitizing/reuseLastValues", false ).toBool(); | 
| 139 | QgsDebugMsg( QString( "reuseLastValues: %1" ).arg( reuseLastValues ) ); | |
| 140 | 139 | |
| 141 | 140 | // add the fields to the QgsFeature | 
| 142 | 141 | const QgsFieldMap fields = mLayer->pendingFields(); | 
| ... | ... | |
| 165 | 164 | } | 
| 166 | 165 | else | 
| 167 | 166 |   { | 
| 168 | QgsAttributeMap origValues; | |
| 169 | if ( reuseLastValues ) | |
| 170 | origValues = mFeature.attributeMap(); | |
| 171 | ||
| 172 | 167 | QgsAttributeDialog *dialog = newDialog( false ); | 
| 173 | 168 | if ( dialog->exec() ) | 
| 174 | 169 |     { | 
| 170 | reuseLastValues = settings.value( "/qgis/digitizing/reuseLastValues", false ).toBool(); | |
| 175 | 171 | if ( reuseLastValues ) | 
| 176 | 172 |       { | 
| 177 | 173 | for ( QgsFieldMap::const_iterator it = fields.constBegin(); it != fields.constEnd(); ++it ) | 
| 178 | 174 |         { | 
| 179 | 175 | const QgsAttributeMap &newValues = mFeature.attributeMap(); | 
| 180 | if ( newValues.contains( it.key() ) | |
| 181 | && origValues.contains( it.key() ) | |
| 182 | && origValues[ it.key()] != newValues[ it.key()] ) | |
| 183 |           { | |
| 184 | QgsDebugMsg( QString( "saving %1 for %2" ).arg( mLastUsedValues[ mLayer ][ it.key()].toString() ).arg( it.key() ) ); | |
| 185 | mLastUsedValues[ mLayer ][ it.key()] = newValues[ it.key()]; | |
| 186 | } | |
| 176 | QgsDebugMsg( QString( "saving %1 for %2" ).arg( mLastUsedValues[ mLayer ][ it.key()].toString() ).arg( it.key() ) ); | |
| 177 | mLastUsedValues[ mLayer ][ it.key()] = newValues[ it.key()]; | |
| 187 | 178 | } | 
| 188 | 179 | } | 
| 189 | 180 | |