@@ -656,6 +656,9 @@ QStringList QgsStyleV2::findSymbols( QString qword )
656
656
}
657
657
658
658
QStringList symbols;
659
+ QStringList tagids;
660
+ QStringList symbolids;
661
+
659
662
char *query;
660
663
sqlite3_stmt *ppStmt;
661
664
QByteArray array = qword.toUtf8 ();
@@ -669,6 +672,37 @@ QStringList QgsStyleV2::findSymbols( QString qword )
669
672
}
670
673
sqlite3_finalize ( ppStmt );
671
674
675
+ query = sqlite3_mprintf ( " SELECT id FROM tag WHERE name LIKE '%%%q%%';" , array.constData () );
676
+ nErr = sqlite3_prepare_v2 ( mCurrentDB , query, -1 , &ppStmt, NULL );
677
+ while ( nErr == SQLITE_OK && sqlite3_step ( ppStmt ) == SQLITE_ROW )
678
+ {
679
+ tagids.append ( reinterpret_cast <const char *>( sqlite3_column_text ( ppStmt, 0 ) ) );
680
+ }
681
+ sqlite3_finalize ( ppStmt );
682
+
683
+ QString dummy = tagids.join ( " , " );
684
+ QByteArray dummyArray = dummy.toUtf8 ();
685
+
686
+ query = sqlite3_mprintf ( " SELECT symbol_id FROM tagmap WHERE tag_id IN (%q);" , dummyArray.constData () );
687
+ nErr = sqlite3_prepare_v2 ( mCurrentDB , query, -1 , &ppStmt, NULL );
688
+ while ( nErr == SQLITE_OK && sqlite3_step ( ppStmt ) == SQLITE_ROW )
689
+ {
690
+ symbolids.append ( reinterpret_cast <const char *>( sqlite3_column_text ( ppStmt, 0 ) ) );
691
+ }
692
+ sqlite3_finalize ( ppStmt );
693
+
694
+ dummy = symbolids.join ( " , " );
695
+ dummyArray = dummy.toUtf8 ();
696
+ query = sqlite3_mprintf ( " SELECT name FROM symbol WHERE id IN (%q);" , dummyArray.constData () );
697
+ nErr = sqlite3_prepare_v2 ( mCurrentDB , query, -1 , &ppStmt, NULL );
698
+ while ( nErr == SQLITE_OK && sqlite3_step ( ppStmt ) == SQLITE_ROW )
699
+ {
700
+ QString symbolName = QString ( reinterpret_cast <const char *>( sqlite3_column_text ( ppStmt, 0 ) ) );
701
+ if ( !symbols.contains ( symbolName ) )
702
+ symbols.append ( symbolName );
703
+ }
704
+ sqlite3_finalize ( ppStmt );
705
+
672
706
return symbols;
673
707
}
674
708
0 commit comments