[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/knewstuff/knewstuff3
From:       Frederik Gladhorn <gladhorn () kde ! org>
Date:       2010-01-01 21:25:21
Message-ID: 1262381121.157219.15783.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1068708 by gladhorn:

let atticaprovider cancel old jobs when a new search is started


 M  +14 -9     attica/atticaprovider.cpp  
 M  +4 -3      core/engine.cpp  
 M  +1 -1      core/engine.h  
 M  +1 -1      downloaddialog_p.cpp  
 M  +1 -0      staticxml/staticxmlprovider.cpp  


--- trunk/KDE/kdelibs/knewstuff/knewstuff3/attica/atticaprovider.cpp #1068707:1068708
@@ -56,10 +56,12 @@
     // when the result is there.
     QHash<BaseJob*, EntryInternal> downloadLinkJobs;
 
-    // keep track of the pages we requested
-    QHash<BaseJob*, int> entryJobs;
+    // keep track of the current request
+    Attica::BaseJob* entryJob;
+    int currentPage;
 
     AtticaProviderPrivate()
+        : entryJob(0)
     {
     }
 };
@@ -150,7 +152,6 @@
     Attica::ListJob<Attica::Category>* job = d->m_provider.requestCategories();
     connect(job, SIGNAL(finished(Attica::BaseJob*)), \
SLOT(listOfCategoriesLoaded(Attica::BaseJob*)));  job->start();
-
 }
 
 
@@ -181,6 +182,11 @@
 {
     Q_D(AtticaProvider);
 
+    if (d->entryJob) {
+        d->entryJob->abort();
+        d->entryJob = 0;
+    }
+
     if (sortMode == Installed) {
         emit loadingFinished(sortMode, searchString, 0, 1, 10000, \
installedEntries());  return;
@@ -201,8 +207,8 @@
     ListJob<Content>* job = d->m_provider.searchContents(categoriesToSearch, \
                searchString, sorting, page, pageSize);
     connect(job, SIGNAL(finished(Attica::BaseJob*)), \
SLOT(categoryContentsLoaded(Attica::BaseJob*)));  
-    d->entryJobs[job] = page;
-
+    d->currentPage = page;
+    d->entryJob = job;
     job->start();
 }
 
@@ -243,7 +249,6 @@
         entry.setHomepage(content.detailpage());
         entry.setRating(content.rating());
         entry.setDownloads(content.downloads());
-        //entry.setPreview(content.previewPicture("1"));
         entry.setPreviewSmall(content.smallPreviewPicture("1"));
         entry.setPreviewBig(content.previewPicture("1"));
         entry.setLicense(content.license());
@@ -258,9 +263,9 @@
     }
 
     // FIXME page number and strings
-    emit loadingFinished(Rating, "", d->entryJobs.value(job), entries.count(), 20, \
                entries);
-    kDebug() << "loading finished page " << d->entryJobs.value(job);
-    d->entryJobs.remove(job);
+    emit loadingFinished(Rating, "", d->currentPage, entries.count(), 20, entries);
+    kDebug() << "loading finished page " << d->entryJob;
+    d->entryJob = 0;
 }
 
 Attica::Provider::SortMode AtticaProvider::atticaSortMode(const SortMode& sortMode)
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/core/engine.cpp #1068707:1068708
@@ -107,6 +107,7 @@
         int currentPage;
         // the page that was last requested, so it is not requested repeatedly
         int requestedPage;
+
         // when requesting entries from a provider, how many to ask for
         int pageSize;
 
@@ -356,7 +357,7 @@
 {
     d->searchTimer->stop();
     d->searchTerm = searchString;
-    EntryInternal::List cache = d->cache->requestFromCache(d->sortMode, \
d->searchTerm, d->categoriesFilter, 0, 20); +    EntryInternal::List cache = \
d->cache->requestFromCache(d->sortMode, d->searchTerm, d->categoriesFilter, 0, \
d->pageSize);  if (!cache.isEmpty()) {
         reloadEntries();
     } else {
@@ -369,7 +370,7 @@
     reloadEntries();
 }
 
-void Engine::slotRequestMoreData()
+void Engine::requestMoreData()
 {
     kDebug() << "Get more data! cur "  << d->currentPage << " req " << \
d->requestedPage;  
@@ -383,7 +384,7 @@
         if (p.provider->isInitialized()) {
             // FIXME: other parameters
             // FIXME use cache, if this request was sent already, take it from the \
                cache
-            EntryInternal::List cache = d->cache->requestFromCache(d->sortMode, \
d->searchTerm, d->categoriesFilter, d->requestedPage, 20); +            \
EntryInternal::List cache = d->cache->requestFromCache(d->sortMode, d->searchTerm, \
d->categoriesFilter, d->requestedPage, d->pageSize);  if (!cache.isEmpty()) {
                 kDebug() << "From cache";
                 emit signalEntriesLoaded(cache);
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/core/engine.h #1068707:1068708
@@ -111,7 +111,7 @@
     void setCategoriesFilter(const QStringList& categories);
     void setSearchTerm(const QString& searchString);
     void reloadEntries();
-    void slotRequestMoreData();
+    void requestMoreData();
 
     void vote(const EntryInternal& entry, bool positiveVote);
     void becomeFan(const EntryInternal& entry);
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/downloaddialog_p.cpp #1068707:1068708
@@ -156,7 +156,7 @@
 void DownloadDialogPrivate::scrollbarValueChanged(int value)
 {
     if ((double)value/ui.m_listView->verticalScrollBar()->maximum() > 0.9) {
-        engine->slotRequestMoreData();
+        engine->requestMoreData();
     }
 }
 
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/staticxml/staticxmlprovider.cpp \
#1068707:1068708 @@ -333,6 +333,7 @@
 
 void StaticXmlProvider::loadPayloadLink(const KNS3::EntryInternal& entry)
 {
+    kDebug() << "Payload: " << entry.payload();
     emit payloadLinkLoaded(entry);
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic