[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-03-31 18:57:02
Message-ID: 20100331185702.3472EAC84E () svn ! kde ! org
[Download RAW message or body]
SVN commit 1109697 by gladhorn:
implement searching via downloadmanager
M +11 -0 core/engine.cpp
M +3 -0 core/engine.h
M +56 -10 downloadmanager.cpp
M +25 -6 downloadmanager.h
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/core/engine.cpp #1109696:1109697
@@ -355,7 +355,18 @@
}
m_currentRequest.page++;
+ doRequest();
+}
+void Engine::requestData(int page, int pageSize)
+{
+ m_currentRequest.page = page;
+ m_currentRequest.pageSize = pageSize;
+ doRequest();
+}
+
+void Engine::doRequest()
+{
foreach (const QSharedPointer<KNS3::Provider> &p, m_providers) {
if (p->isInitialized()) {
p->loadEntries(m_currentRequest);
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/core/engine.h #1109696:1109697
@@ -108,6 +108,7 @@
void setSearchTerm(const QString& searchString);
void reloadEntries();
void requestMoreData();
+ void requestData(int page, int pageSize);
void checkForUpdates();
@@ -190,6 +191,8 @@
void addProvider(QSharedPointer<KNS3::Provider> provider);
void updateStatus();
+
+ void doRequest();
// If the provider is ready to be used
bool m_initialized;
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/downloadmanager.cpp #1109696:1109697
@@ -23,7 +23,6 @@
#include "core/engine.h"
-
namespace KNS3 {
class DownloadManager::Private
{
@@ -36,15 +35,24 @@
, engine(new Engine)
, isInitialized(false)
, checkForUpdates(false)
+ , doSearch(false)
+ , page(0)
+ , pageSize(100)
{}
~Private() { delete engine; }
bool isInitialized;
bool checkForUpdates;
-
+ bool doSearch;
+
+ int page;
+ int pageSize;
+
+ void init(const QString& configFile);
void _k_slotProvidersLoaded();
void _k_slotUpdatesLoaded(const KNS3::EntryInternal::List& entries);
void _k_slotEntryStatusChanged(const KNS3::EntryInternal& entry);
+ void _k_slotEntriesLoaded(const KNS3::EntryInternal::List& entries);
};
}
@@ -56,22 +64,23 @@
{
KComponentData component = KGlobal::activeComponent();
QString name = component.componentName();
- init(name + ".knsrc");
+ d->init(name + ".knsrc");
}
DownloadManager::DownloadManager(const QString& configFile, QObject * parent)
: QObject(parent)
, d(new Private(this))
{
- init(configFile);
+ d->init(configFile);
}
-void DownloadManager::init(const QString& configFile)
+void DownloadManager::Private::init(const QString& configFile)
{
- connect(d->engine, SIGNAL(signalProvidersLoaded()), this, \
SLOT(_k_slotProvidersLoaded()));
- connect(d->engine, \
SIGNAL(signalUpdateableEntriesLoaded(KNS3::EntryInternal::List)), this, \
SLOT(_k_slotUpdatesLoaded(KNS3::EntryInternal::List)));
- connect(d->engine, SIGNAL(signalEntryChanged(KNS3::EntryInternal)), this, \
SLOT(_k_slotEntryStatusChanged(KNS3::EntryInternal)));
- d->engine->init(configFile);
+ q->connect(engine, SIGNAL(signalProvidersLoaded()), q, \
SLOT(_k_slotProvidersLoaded())); + q->connect(engine, \
SIGNAL(signalUpdateableEntriesLoaded(KNS3::EntryInternal::List)), q, \
SLOT(_k_slotEntriesLoaded(KNS3::EntryInternal::List))); + q->connect(engine, \
SIGNAL(signalEntriesLoaded(KNS3::EntryInternal::List)), q, \
SLOT(_k_slotEntriesLoaded(KNS3::EntryInternal::List))); + q->connect(engine, \
SIGNAL(signalEntryChanged(KNS3::EntryInternal)), q, \
SLOT(_k_slotEntryStatusChanged(KNS3::EntryInternal))); + engine->init(configFile);
}
DownloadManager::~DownloadManager()
@@ -85,6 +94,8 @@
isInitialized = true;
if (checkForUpdates) {
engine->checkForUpdates();
+ } else if (doSearch) {
+ engine->requestData(page, pageSize);
}
}
@@ -97,7 +108,7 @@
}
}
-void DownloadManager::Private::_k_slotUpdatesLoaded(const KNS3::EntryInternal::List& \
entries) +void DownloadManager::Private::_k_slotEntriesLoaded(const \
KNS3::EntryInternal::List& entries) {
KNS3::Entry::List result;
foreach (const KNS3::EntryInternal& entry, entries) {
@@ -119,5 +130,40 @@
}
}
+void DownloadManager::search(int page, int pageSize)
+{
+ d->page = page;
+ d->pageSize = pageSize;
+ if (d->isInitialized) {
+ d->engine->requestData(page, pageSize);
+ } else {
+ d->doSearch = true;
+ }
+}
+
+void DownloadManager::setSearchOrder(DownloadManager::SortOrder order)
+{
+ switch (order) {
+ case Newest:
+ d->engine->setSortMode(Provider::Newest);
+ break;
+ case Rating:
+ d->engine->setSortMode(Provider::Rating);
+ break;
+ case Alphabetical:
+ d->engine->setSortMode(Provider::Alphabetical);
+ break;
+ case Downloads:
+ d->engine->setSortMode(Provider::Downloads);
+ break;
+ }
+}
+
+void DownloadManager::setSearchTerm(const QString& searchTerm)
+{
+ d->engine->setSearchTerm(searchTerm);
+}
+
+
#include "downloadmanager.moc"
--- trunk/KDE/kdelibs/knewstuff/knewstuff3/downloadmanager.h #1109696:1109697
@@ -36,10 +36,16 @@
Q_OBJECT
public:
+ enum SortOrder {
+ Newest,
+ Alphabetical,
+ Rating,
+ Downloads
+ };
/**
* Create a DownloadManager
- * It will try to find a appname.knsrc file with the configuration.
+ * It will try to find a appname.knsrc file (using KComponentData).
* Appname is the name of your application as provided in the about data->
*
* @param parent the parent of the dialog
@@ -59,10 +65,10 @@
*/
~DownloadManager();
- /*
+ /**
Search for a list of entries. searchResult will be emitted with the requested \
list.
*/
- //void search(const QStringList& categories = QStringList(), const QString& \
searchTerm = QString(), int page = 0, int pageSize = 100); + void search(int page \
= 0, int pageSize = 100);
/**
Check for available updates.
@@ -76,6 +82,21 @@
*/
void installEntry(const KNS3::Entry& entry);
+ /**
+ Sets the search term to filter the results on the server.
+ Note that this function does not trigger a search. Use search after setting \
this. + @param searchTerm
+ */
+ void setSearchTerm(const QString& searchTerm);
+
+ /**
+ Set the sort order of the results. This depends on the server.
+ Note that this function does not trigger a search. Use search after setting \
this. + @see SortOrder
+ @param order
+ */
+ void setSearchOrder(SortOrder order);
+
Q_SIGNALS:
/**
Returns the search result.
@@ -92,11 +113,9 @@
void entryStatusChanged(const KNS3::Entry& entry);
private:
- void init(const QString& configFile);
-
Q_PRIVATE_SLOT( d, void _k_slotProvidersLoaded() )
Q_PRIVATE_SLOT( d, void _k_slotEntryStatusChanged(const KNS3::EntryInternal& \
entry) )
- Q_PRIVATE_SLOT( d, void _k_slotUpdatesLoaded(const KNS3::EntryInternal::List& \
entries) ) + Q_PRIVATE_SLOT( d, void _k_slotEntriesLoaded(const \
KNS3::EntryInternal::List& entries) ) class Private;
Private *const d;
Q_DISABLE_COPY(DownloadManager)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic