summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-10-07 10:59:55 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-10-07 10:59:55 -0500
commit72a2afc0afd917e93249d034b968079135588c7e (patch)
treefab115088481ab8a74e57ce03b9cce176bd92007
parent62bfcbe4780e5b08aee6a16895f5e508f0646bd2 (diff)
downloadtdelibs-72a2afc0afd917e93249d034b968079135588c7e.tar.gz
tdelibs-72a2afc0afd917e93249d034b968079135588c7e.zip
Add proper OCS support to the base TDENewStuff class
This relates to Bug 2127
-rw-r--r--tdenewstuff/engine.cpp53
-rw-r--r--tdenewstuff/entry.cpp15
-rw-r--r--tdenewstuff/provider.cpp12
3 files changed, 48 insertions, 32 deletions
diff --git a/tdenewstuff/engine.cpp b/tdenewstuff/engine.cpp
index f8e7163a9..1427f7eb7 100644
--- a/tdenewstuff/engine.cpp
+++ b/tdenewstuff/engine.cpp
@@ -141,34 +141,51 @@ void Engine::slotNewStuffJobResult( TDEIO::Job *job )
TQDomDocument doc;
if ( !doc.setContent( knewstuffDoc ) ) {
- kdDebug() << "Error parsing knewstuff.xml." << endl;
+ kdDebug() << "Error parsing OCS response." << endl;
return;
- } else {
+ }
+ else {
TQDomElement knewstuff = doc.documentElement();
if ( knewstuff.isNull() ) {
- kdDebug() << "No document in knewstuffproviders.xml." << endl;
- } else {
- TQDomNode p;
- for ( p = knewstuff.firstChild(); !p.isNull(); p = p.nextSibling() ) {
- TQDomElement stuff = p.toElement();
- if ( stuff.tagName() != "stuff" ) continue;
- if ( stuff.attribute("type", mType) != mType ) continue;
+ kdDebug() << "No document in OCS response." << endl;
+ }
+ else {
+ TQDomElement content;
+ for(TQDomNode pn = knewstuff.firstChild(); !pn.isNull(); pn = pn.nextSibling())
+ {
+ TQDomElement stuff = pn.toElement();
+
+ if(stuff.tagName() == "data")
+ {
+ content = pn.toElement();
+ }
+ }
+
+ if ( content.isNull() ) {
+ kdDebug() << "No content in OCS response." << endl;
+ }
+ else {
+ TQDomNode p;
+ for ( p = content.firstChild(); !p.isNull(); p = p.nextSibling() ) {
+ TQDomElement stuff = p.toElement();
+ if ( stuff.tagName() != "content" ) continue;
- Entry *entry = new Entry( stuff );
+ Entry *entry = new Entry( stuff );
- mDownloadDialog->show();
+ mDownloadDialog->show();
- mDownloadDialog->addEntry( entry );
+ mDownloadDialog->addEntry( entry );
- kdDebug() << "KNEWSTUFF: " << entry->name() << endl;
+ kdDebug() << "KNEWSTUFF: " << entry->name() << endl;
- kdDebug() << " SUMMARY: " << entry->summary() << endl;
- kdDebug() << " VERSION: " << entry->version() << endl;
- kdDebug() << " RELEASEDATE: " << TQString(entry->releaseDate().toString()) << endl;
- kdDebug() << " RATING: " << entry->rating() << endl;
+ kdDebug() << " SUMMARY: " << entry->summary() << endl;
+ kdDebug() << " VERSION: " << entry->version() << endl;
+ kdDebug() << " RELEASEDATE: " << TQString(entry->releaseDate().toString()) << endl;
+ kdDebug() << " RATING: " << entry->rating() << endl;
- kdDebug() << " LANGS: " << entry->langs().join(", ") << endl;
+ kdDebug() << " LANGS: " << entry->langs().join(", ") << endl;
+ }
}
}
}
diff --git a/tdenewstuff/entry.cpp b/tdenewstuff/entry.cpp
index 2713fadfb..3213f272e 100644
--- a/tdenewstuff/entry.cpp
+++ b/tdenewstuff/entry.cpp
@@ -301,6 +301,10 @@ TQStringList Entry::langs()
// FIXME
// It appears that OCS has removed the ability to retrieve author EMail;
// further confirmation is needed before removing EMail-related code
+// NOTE
+// OCS also removed the ability to have individually localized names and summaries for a single item
+// As this would be a useful feature to add to the OCS system I'm keeping the lang code skeleton in at this time
+// Note that the "language" XML tag refers to the intended language of the content, not the language of the entry!
void Entry::parseDomElement( const TQDomElement &element )
{
if ( element.tagName() != "content" ) return;
@@ -310,17 +314,6 @@ void Entry::parseDomElement( const TQDomElement &element )
TQString lang;
for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
TQDomElement e = n.toElement();
- if ( e.tagName() == "language" )
- {
- lang = e.text();
- }
- }
- if (lang == "") {
- lang = TQString::null;
- }
-
- for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
- TQDomElement e = n.toElement();
if ( e.tagName() == "name" )
{
setName( e.text().stripWhiteSpace(), lang );
diff --git a/tdenewstuff/provider.cpp b/tdenewstuff/provider.cpp
index 8d576ca6c..ee76d887b 100644
--- a/tdenewstuff/provider.cpp
+++ b/tdenewstuff/provider.cpp
@@ -316,7 +316,12 @@ void Provider::slotJobResult( TDEIO::Job *job )
//int maxEntries = 50;
int maxEntries = 100;
- setDownloadUrl( KURL( mBaseURL ) );
+ // FIXME
+ // The download URL assumes no more than 100 entries will be present on the remote server
+ // Any more and assembly of the list from multiple fetched pages will be required; the TDENewStuff Engine class does not have support for paging at this time
+ setDownloadUrl( KURL( mBaseURL + "content/data?categories=" + desiredCategories + "&search=&sortmode=alpha&page=0&pagesize=" + TQString("%1").arg(maxEntries) ) );
+ // FIXME
+ // Uploading is not implemented at this time
setUploadUrl( KURL( mBaseURL ) );
setNoUploadUrl( KURL( mBaseURL ) );
@@ -347,8 +352,9 @@ void ProviderLoader::load( const TQString &type, const TQString &providersList )
cfg->setGroup("TDENewStuff");
TQString providersUrl = providersList;
- if( providersUrl.isEmpty() )
- providersUrl = cfg->readEntry( "ProvidersUrl" );
+ if( providersUrl.isEmpty() ) {
+ providersUrl = cfg->readEntry( "ProvidersUrl" );
+ }
if ( providersUrl.isEmpty() ) {
TQString server = cfg->readEntry( "MasterServer",