[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