Skip to content

Commit

Permalink
tags included in symbol searching
Browse files Browse the repository at this point in the history
  • Loading branch information
Arunmozhi committed Jul 18, 2012
1 parent 4a6ac28 commit dec6216
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions src/core/symbology-ng/qgsstylev2.cpp
Expand Up @@ -656,6 +656,9 @@ QStringList QgsStyleV2::findSymbols( QString qword )
}

QStringList symbols;
QStringList tagids;
QStringList symbolids;

char *query;
sqlite3_stmt *ppStmt;
QByteArray array = qword.toUtf8();
Expand All @@ -669,6 +672,37 @@ QStringList QgsStyleV2::findSymbols( QString qword )
}
sqlite3_finalize( ppStmt );

query = sqlite3_mprintf( "SELECT id FROM tag WHERE name LIKE '%%%q%%';", array.constData() );
nErr = sqlite3_prepare_v2( mCurrentDB, query, -1, &ppStmt, NULL );
while ( nErr == SQLITE_OK && sqlite3_step( ppStmt ) == SQLITE_ROW )
{
tagids.append( reinterpret_cast<const char*>( sqlite3_column_text( ppStmt, 0 ) ) );
}
sqlite3_finalize( ppStmt );

QString dummy = tagids.join( ", " );
QByteArray dummyArray = dummy.toUtf8();

query = sqlite3_mprintf( "SELECT symbol_id FROM tagmap WHERE tag_id IN (%q);", dummyArray.constData() );
nErr = sqlite3_prepare_v2( mCurrentDB, query, -1, &ppStmt, NULL );
while ( nErr == SQLITE_OK && sqlite3_step( ppStmt ) == SQLITE_ROW )
{
symbolids.append( reinterpret_cast<const char*>( sqlite3_column_text( ppStmt, 0 ) ) );
}
sqlite3_finalize( ppStmt );

dummy = symbolids.join( ", " );
dummyArray = dummy.toUtf8();
query = sqlite3_mprintf( "SELECT name FROM symbol WHERE id IN (%q);", dummyArray.constData() );
nErr = sqlite3_prepare_v2( mCurrentDB, query, -1, &ppStmt, NULL );
while ( nErr == SQLITE_OK && sqlite3_step( ppStmt ) == SQLITE_ROW )
{
QString symbolName = QString( reinterpret_cast<const char*>( sqlite3_column_text( ppStmt, 0 ) ) );
if ( !symbols.contains( symbolName ) )
symbols.append( symbolName );
}
sqlite3_finalize( ppStmt );

return symbols;
}

Expand Down

0 comments on commit dec6216

Please sign in to comment.