provider.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <kconfig.h>
00022 #include <kdebug.h>
00023 #include <kio/job.h>
00024 #include <kglobal.h>
00025
00026 #include "provider.h"
00027 #include "provider.moc"
00028
00029 using namespace KNS;
00030
00031 Provider::Provider() : mNoUpload( false )
00032 {
00033 }
00034
00035 Provider::Provider( const QDomElement &e ) : mNoUpload( false )
00036 {
00037 parseDomElement( e );
00038 }
00039
00040 Provider::~Provider()
00041 {
00042 }
00043
00044
00045 void Provider::setName( const QString &name )
00046 {
00047 mName = name;
00048 }
00049
00050 QString Provider::name() const
00051 {
00052 return mName;
00053 }
00054
00055
00056 void Provider::setDownloadUrl( const KURL &url )
00057 {
00058 mDownloadUrl = url;
00059 }
00060
00061 KURL Provider::downloadUrl() const
00062 {
00063 return mDownloadUrl;
00064 }
00065
00066
00067 void Provider::setUploadUrl( const KURL &url )
00068 {
00069 mUploadUrl = url;
00070 }
00071
00072 KURL Provider::uploadUrl() const
00073 {
00074 return mUploadUrl;
00075 }
00076
00077
00078 void Provider::setNoUploadUrl( const KURL &url )
00079 {
00080 mNoUploadUrl = url;
00081 }
00082
00083 KURL Provider::noUploadUrl() const
00084 {
00085 return mNoUploadUrl;
00086 }
00087
00088
00089 void Provider::setNoUpload( bool enabled )
00090 {
00091 mNoUpload = enabled;
00092 }
00093
00094 bool Provider::noUpload() const
00095 {
00096 return mNoUpload;
00097 }
00098
00099
00100 void Provider::parseDomElement( const QDomElement &element )
00101 {
00102 if ( element.tagName() != "provider" ) return;
00103
00104 setDownloadUrl( KURL( element.attribute("downloadurl") ) );
00105 setUploadUrl( KURL( element.attribute("uploadurl") ) );
00106 setNoUploadUrl( KURL( element.attribute("nouploadurl") ) );
00107
00108 QDomNode n;
00109 for ( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
00110 QDomElement p = n.toElement();
00111
00112 if ( p.tagName() == "noupload" ) setNoUpload( true );
00113 if ( p.tagName() == "title" ) setName( p.text().stripWhiteSpace() );
00114 }
00115 }
00116
00117 QDomElement Provider::createDomElement( QDomDocument &doc, QDomElement &parent )
00118 {
00119 QDomElement entry = doc.createElement( "stuff" );
00120 parent.appendChild( entry );
00121
00122 QDomElement n = doc.createElement( "name" );
00123 n.appendChild( doc.createTextNode( name() ) );
00124 entry.appendChild( n );
00125
00126 return entry;
00127 }
00128
00129
00130 ProviderLoader::ProviderLoader( QWidget *parentWidget ) :
00131 mParentWidget( parentWidget )
00132 {
00133 mProviders.setAutoDelete( true );
00134 }
00135
00136 void ProviderLoader::load( const QString &type )
00137 {
00138 kdDebug() << "ProviderLoader::load()" << endl;
00139
00140 mProviders.clear();
00141 mJobData = "";
00142
00143 KConfig *cfg = KGlobal::config();
00144 cfg->setGroup("KNewStuff");
00145
00146 QString providersUrl = cfg->readEntry( "ProvidersUrl" );
00147
00148 if ( providersUrl.isEmpty() ) {
00149
00150 QString server = cfg->readEntry( "MasterServer",
00151 "http://korganizer.kde.org" );
00152
00153 providersUrl = server + "/knewstuff/" + type + "/providers.xml";
00154 }
00155
00156 kdDebug() << "ProviderLoader::load(): providersUrl: " << providersUrl << endl;
00157
00158 KIO::TransferJob *job = KIO::get( providersUrl );
00159 connect( job, SIGNAL( result( KIO::Job * ) ),
00160 SLOT( slotJobResult( KIO::Job * ) ) );
00161 connect( job, SIGNAL( data( KIO::Job *, const QByteArray & ) ),
00162 SLOT( slotJobData( KIO::Job *, const QByteArray & ) ) );
00163
00164
00165 }
00166
00167 void ProviderLoader::slotJobData( KIO::Job *, const QByteArray &data )
00168 {
00169 kdDebug() << "ProviderLoader::slotJobData()" << endl;
00170
00171 if ( data.size() == 0 ) return;
00172
00173 QString s = data;
00174 mJobData.append( s );
00175 }
00176
00177 void ProviderLoader::slotJobResult( KIO::Job *job )
00178 {
00179 if ( job->error() ) {
00180 job->showErrorDialog( mParentWidget );
00181 }
00182
00183 kdDebug() << "--PROVIDERS-START--" << endl << mJobData << "--PROV_END--"
00184 << endl;
00185
00186 QDomDocument doc;
00187 if ( !doc.setContent( QString::fromUtf8( mJobData ) ) ) {
00188 kdDebug() << "Error parsing Providers.xml." << endl;
00189 return;
00190 }
00191
00192 QDomElement providers = doc.documentElement();
00193
00194 if ( providers.isNull() ) {
00195 kdDebug() << "No document in Providers.xml." << endl;
00196 }
00197
00198 QDomNode n;
00199 for ( n = providers.firstChild(); !n.isNull(); n = n.nextSibling() ) {
00200 QDomElement p = n.toElement();
00201
00202 mProviders.append( new Provider( p ) );
00203 }
00204
00205 emit providersLoaded( &mProviders );
00206 }
This file is part of the documentation for kdelibs Version 3.1.4.