Skip to content

Commit dec6216

Browse files
author
Arunmozhi
committed
tags included in symbol searching
1 parent 4a6ac28 commit dec6216

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/core/symbology-ng/qgsstylev2.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)