@@ -656,6 +656,9 @@ QStringList QgsStyleV2::findSymbols( QString qword )
656656 }
657657
658658 QStringList symbols;
659+ QStringList tagids;
660+ QStringList symbolids;
661+
659662 char *query;
660663 sqlite3_stmt *ppStmt;
661664 QByteArray array = qword.toUtf8 ();
@@ -669,6 +672,37 @@ QStringList QgsStyleV2::findSymbols( QString qword )
669672 }
670673 sqlite3_finalize ( ppStmt );
671674
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+
672706 return symbols;
673707}
674708
0 commit comments