@@ -299,8 +299,14 @@ bool QgsStyleV2::load( QString filename )
299
299
return false ;
300
300
}
301
301
302
+ // Make sure there are no Null fields in parenting symbols ang groups
303
+ char *query = sqlite3_mprintf ( " UPDATE symbol SET groupid=0 WHERE groupid IS NULL;"
304
+ " UPDATE colorramp SET groupid=0 WHERE groupid IS NULL;"
305
+ " UPDATE symgroup SET parent=0 WHERE parent IS NULL;" );
306
+ runEmptyQuery ( query );
307
+
302
308
// First create all the main symbols
303
- const char * query = " SELECT * FROM symbol" ;
309
+ query = sqlite3_mprintf ( " SELECT * FROM symbol" ) ;
304
310
305
311
sqlite3_stmt *ppStmt;
306
312
int nError = sqlite3_prepare_v2 ( mCurrentDB , query, -1 , &ppStmt, NULL );
@@ -323,8 +329,8 @@ bool QgsStyleV2::load( QString filename )
323
329
324
330
sqlite3_finalize ( ppStmt );
325
331
326
- const char *rquery = " SELECT * FROM colorramp" ;
327
- nError = sqlite3_prepare_v2 ( mCurrentDB , rquery , -1 , &ppStmt, NULL );
332
+ query = sqlite3_mprintf ( " SELECT * FROM colorramp" ) ;
333
+ nError = sqlite3_prepare_v2 ( mCurrentDB , query , -1 , &ppStmt, NULL );
328
334
while ( nError == SQLITE_OK && sqlite3_step ( ppStmt ) == SQLITE_ROW )
329
335
{
330
336
QDomDocument doc;
@@ -470,7 +476,7 @@ QgsSymbolGroupMap QgsStyleV2::childGroupNames( QString parent )
470
476
// decide the query to be run based on parent group
471
477
if ( parent == " " || parent == QString () )
472
478
{
473
- query = sqlite3_mprintf ( " SELECT * FROM symgroup WHERE parent IS NULL " );
479
+ query = sqlite3_mprintf ( " SELECT * FROM symgroup WHERE parent=0 " );
474
480
}
475
481
else
476
482
{
@@ -512,15 +518,11 @@ QStringList QgsStyleV2::symbolsOfGroup( StyleEntity type, int groupid )
512
518
char *query;
513
519
if ( type == SymbolEntity )
514
520
{
515
- query = groupid
516
- ? sqlite3_mprintf ( " SELECT name FROM symbol WHERE groupid=%d" , groupid )
517
- : sqlite3_mprintf ( " SELECT name FROM symbol WHERE groupid IS NULL" );
521
+ query = sqlite3_mprintf ( " SELECT name FROM symbol WHERE groupid=%d" , groupid );
518
522
}
519
523
else if ( type == ColorrampEntity )
520
524
{
521
- query = groupid
522
- ? sqlite3_mprintf ( " SELECT name FROM colorramp WHERE groupid=%d" , groupid )
523
- : sqlite3_mprintf ( " SELECT name FROM colorramp WHERE groupid IS NULL" );
525
+ query = sqlite3_mprintf ( " SELECT name FROM colorramp WHERE groupid=%d" , groupid );
524
526
}
525
527
else
526
528
{
@@ -596,9 +598,7 @@ int QgsStyleV2::addGroup( QString groupName, int parentid )
596
598
if ( !mCurrentDB )
597
599
return 0 ;
598
600
599
- char *query = parentid == 0
600
- ? sqlite3_mprintf ( " INSERT INTO symgroup VALUES (NULL, '%q', NULL)" , groupName.toUtf8 ().constData () )
601
- : sqlite3_mprintf ( " INSERT INTO symgroup VALUES (NULL, '%q', %d)" , groupName.toUtf8 ().constData (), parentid );
601
+ char *query = sqlite3_mprintf ( " INSERT INTO symgroup VALUES (NULL, '%q', %d)" , groupName.toUtf8 ().constData (), parentid );
602
602
603
603
sqlite3_stmt *ppStmt;
604
604
int nErr = sqlite3_prepare_v2 ( mCurrentDB , query, -1 , &ppStmt, NULL );
@@ -666,13 +666,9 @@ char* QgsStyleV2::getGroupRemoveQuery( int id )
666
666
667
667
sqlite3_finalize ( ppStmt );
668
668
669
- return parentid
670
- ? sqlite3_mprintf ( " UPDATE symbol SET groupid=%d WHERE groupid=%d;"
671
- " UPDATE symgroup SET parent=%d WHERE parent=%d;"
672
- " DELETE FROM symgroup WHERE id=%d" , parentid, id, parentid, id, id )
673
- : sqlite3_mprintf ( " UPDATE symbol SET groupid=NULL WHERE groupid=%d;"
674
- " UPDATE symgroup SET parent=NULL WHERE parent=%d;"
675
- " DELETE FROM symgroup WHERE id=%d" , id, id, id );
669
+ return sqlite3_mprintf ( " UPDATE symbol SET groupid=%d WHERE groupid=%d;"
670
+ " UPDATE symgroup SET parent=%d WHERE parent=%d;"
671
+ " DELETE FROM symgroup WHERE id=%d" , parentid, id, parentid, id, id );
676
672
}
677
673
678
674
void QgsStyleV2::remove ( StyleEntity type, int id )
@@ -734,14 +730,10 @@ bool QgsStyleV2::group( StyleEntity type, QString name, int groupid )
734
730
switch ( type )
735
731
{
736
732
case SymbolEntity:
737
- query = groupid
738
- ? sqlite3_mprintf ( " UPDATE symbol SET groupid=%d WHERE name='%q'" , groupid, name.toUtf8 ().constData () )
739
- : sqlite3_mprintf ( " UPDATE symbol SET groupid=NULL WHERE name='%q'" , name.toUtf8 ().constData () );
733
+ query = sqlite3_mprintf ( " UPDATE symbol SET groupid=%d WHERE name='%q'" , groupid, name.toUtf8 ().constData () );
740
734
break ;
741
735
case ColorrampEntity:
742
- query = groupid
743
- ? sqlite3_mprintf ( " UPDATE colorramp SET groupid=%d WHERE name='%q'" , groupid, name.toUtf8 ().constData () )
744
- : sqlite3_mprintf ( " UPDATE colorramp SET groupid=NULL WHERE name='%q'" , name.toUtf8 ().constData () );
736
+ query = sqlite3_mprintf ( " UPDATE colorramp SET groupid=%d WHERE name='%q'" , groupid, name.toUtf8 ().constData () );
745
737
break ;
746
738
747
739
default :
0 commit comments