[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/runtime/nepomuk/services/queryservice
From: Sebastian Trueg <sebastian () trueg ! de>
Date: 2011-01-10 16:31:57
Message-ID: 20110110163157.23298AC8B2 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1213499 by trueg:
Use a hash for the results in order to ensure that no duplicates are emitted.
M +19 -13 folder.cpp
M +5 -3 folder.h
--- trunk/KDE/kdebase/runtime/nepomuk/services/queryservice/folder.cpp #1213498:1213499
@@ -104,7 +104,7 @@
QList<Nepomuk::Query::Result> Nepomuk::Query::Folder::entries() const
{
- return m_results.values();
+ return m_results.toList();
}
@@ -135,23 +135,22 @@
// called from SearchRunnable in the search thread
void Nepomuk::Query::Folder::addResults( const QList<Nepomuk::Query::Result>& results )
{
- if ( m_initialListingDone ) {
- QList<Result> newResults;
+ QSet<Result> newResults;
Q_FOREACH( const Result& result, results ) {
- m_newResults.insert( result.resource().resourceUri(), result );
- if ( !m_results.contains( result.resource().resourceUri() ) ) {
- newResults << result;
+ if ( !m_results.contains( result ) ) {
+ newResults.insert( result );
}
}
- if( !newResults.isEmpty() ) {
- emit newEntries( newResults );
+
+ if ( m_initialListingDone ) {
+ m_newResults += newResults;
}
- }
else {
- Q_FOREACH( const Result& result, results ) {
- m_results.insert( result.resource().resourceUri(), result );
+ m_results += newResults;
}
- emit newEntries( results );
+
+ if( !newResults.isEmpty() ) {
+ emit newEntries( newResults.toList() );
}
}
@@ -167,7 +166,7 @@
// legacy removed results
foreach( const Result& result, m_results ) {
- if ( !m_newResults.contains( result.resource().resourceUri() ) ) {
+ if ( !m_newResults.contains( result ) ) {
removedResults << result;
emit entriesRemoved( QList<QUrl>() << KUrl(result.resource().resourceUri()).url() );
}
@@ -257,4 +256,11 @@
return m_connections;
}
+
+uint Nepomuk::Query::qHash( const Result& result )
+{
+ // we only use this to ensure that we do not emit duplicates
+ return qHash(result.resource().resourceUri());
+}
+
#include "folder.moc"
--- trunk/KDE/kdebase/runtime/nepomuk/services/queryservice/folder.h #1213498:1213499
@@ -24,7 +24,7 @@
#include <Nepomuk/Query/Result>
#include <Nepomuk/Query/Query>
-#include <QtCore/QHash>
+#include <QtCore/QSet>
#include <QtCore/QTimer>
#include <QtCore/QPointer>
@@ -39,6 +39,8 @@
namespace Nepomuk {
namespace Query {
+ uint qHash( const Result& );
+
class SearchRunnable;
class CountQueryRunnable;
class FolderConnection;
@@ -157,10 +159,10 @@
bool m_initialListingDone;
/// the actual current results
- QHash<QUrl, Result> m_results;
+ QSet<Result> m_results;
/// the results gathered during an update, needed to find removed items
- QHash<QUrl, Result> m_newResults;
+ QSet<Result> m_newResults;
/// the runnable doing work at the moment or 0 if idle
SearchRunnable* m_currentSearchRunnable;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic