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 #include <kmessagebox.h>
00026 #include <klocale.h>
00027
00028 #include "provider.h"
00029 #include "provider.moc"
00030
00031 using namespace KNS;
00032
00033 Provider::Provider() : mNoUpload( false )
00034 {
00035 }
00036
00037 Provider::Provider( const QDomElement &e ) : mNoUpload( false )
00038 {
00039 parseDomElement( e );
00040 }
00041
00042 Provider::~Provider()
00043 {
00044 }
00045
00046
00047 void Provider::setName( const QString &name )
00048 {
00049 mName = name;
00050 }
00051
00052 QString Provider::name() const
00053 {
00054 return mName;
00055 }
00056
00057
00058 void Provider::setIcon( const KURL &url )
00059 {
00060 mIcon = url;
00061 }
00062
00063 KURL Provider::icon() const
00064 {
00065 return mIcon;
00066 }
00067
00068
00069 void Provider::setDownloadUrl( const KURL &url )
00070 {
00071 mDownloadUrl = url;
00072 }
00073
00074 KURL Provider::downloadUrl() const
00075 {
00076 return mDownloadUrl;
00077 }
00078
00079
00080 void Provider::setUploadUrl( const KURL &url )
00081 {
00082 mUploadUrl = url;
00083 }
00084
00085 KURL Provider::uploadUrl() const
00086 {
00087 return mUploadUrl;
00088 }
00089
00090
00091 void Provider::setNoUploadUrl( const KURL &url )
00092 {
00093 mNoUploadUrl = url;
00094 }
00095
00096 KURL Provider::noUploadUrl() const
00097 {
00098 return mNoUploadUrl;
00099 }
00100
00101
00102 void Provider::setNoUpload( bool enabled )
00103 {
00104 mNoUpload = enabled;
00105 }
00106
00107 bool Provider::noUpload() const
00108 {
00109 return mNoUpload;
00110 }
00111
00112
00113 void Provider::parseDomElement( const QDomElement &element )
00114 {
00115 if ( element.tagName() != "provider" ) return;
00116
00117 setDownloadUrl( KURL( element.attribute("downloadurl") ) );
00118 setUploadUrl( KURL( element.attribute("uploadurl") ) );
00119 setNoUploadUrl( KURL( element.attribute("nouploadurl") ) );
00120 setIcon( KURL( element.attribute("icon") ) );
00121
00122 QDomNode n;
00123 for ( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
00124 QDomElement p = n.toElement();
00125
00126 if ( p.tagName() == "noupload" ) setNoUpload( true );
00127 if ( p.tagName() == "title" ) setName( p.text().stripWhiteSpace() );
00128 }
00129 }
00130
00131 QDomElement Provider::createDomElement( QDomDocument &doc, QDomElement &parent )
00132 {
00133 QDomElement entry = doc.createElement( "stuff" );
00134 parent.appendChild( entry );
00135
00136 QDomElement n = doc.createElement( "name" );
00137 n.appendChild( doc.createTextNode( name() ) );
00138 entry.appendChild( n );
00139
00140 return entry;
00141 }
00142
00143
00144 ProviderLoader::ProviderLoader( QWidget *parentWidget ) :
00145 mParentWidget( parentWidget )
00146 {
00147 mProviders.setAutoDelete( true );
00148 }
00149
00150 void ProviderLoader::load( const QString &type, const QString &providersList )
00151 {
00152 kdDebug(5850) << "ProviderLoader::load()" << endl;
00153
00154 mProviders.clear();
00155 mJobData = "";
00156
00157 KConfig *cfg = KGlobal::config();
00158 cfg->setGroup("KNewStuff");
00159
00160 QString providersUrl = providersList;
00161 if( providersUrl.isEmpty() )
00162 providersUrl = cfg->readEntry( "ProvidersUrl" );
00163
00164 if ( providersUrl.isEmpty() ) {
00165
00166 QString server = cfg->readEntry( "MasterServer",
00167 "http://korganizer.kde.org" );
00168
00169 providersUrl = server + "/knewstuff/" + type + "/providers.xml";
00170 }
00171
00172 kdDebug(5850) << "ProviderLoader::load(): providersUrl: " << providersUrl << endl;
00173
00174 KIO::TransferJob *job = KIO::get( KURL( providersUrl ) );
00175 connect( job, SIGNAL( result( KIO::Job * ) ),
00176 SLOT( slotJobResult( KIO::Job * ) ) );
00177 connect( job, SIGNAL( data( KIO::Job *, const QByteArray & ) ),
00178 SLOT( slotJobData( KIO::Job *, const QByteArray & ) ) );
00179
00180
00181 }
00182
00183 void ProviderLoader::slotJobData( KIO::Job *, const QByteArray &data )
00184 {
00185 kdDebug(5850) << "ProviderLoader::slotJobData()" << endl;
00186
00187 if ( data.size() == 0 ) return;
00188
00189 QCString str( data, data.size() + 1 );
00190
00191 mJobData.append( QString::fromUtf8( str ) );
00192 }
00193
00194 void ProviderLoader::slotJobResult( KIO::Job *job )
00195 {
00196 if ( job->error() ) {
00197 job->showErrorDialog( mParentWidget );
00198 }
00199
00200 kdDebug(5850) << "--PROVIDERS-START--" << endl << mJobData << "--PROV_END--"
00201 << endl;
00202
00203 QDomDocument doc;
00204 if ( !doc.setContent( mJobData ) ) {
00205 KMessageBox::error( mParentWidget, i18n("Error parsing providers list.") );
00206 return;
00207 }
00208
00209 QDomElement providers = doc.documentElement();
00210
00211 if ( providers.isNull() ) {
00212 kdDebug(5850) << "No document in Providers.xml." << endl;
00213 }
00214
00215 QDomNode n;
00216 for ( n = providers.firstChild(); !n.isNull(); n = n.nextSibling() ) {
00217 QDomElement p = n.toElement();
00218
00219 mProviders.append( new Provider( p ) );
00220 }
00221
00222 emit providersLoaded( &mProviders );
00223 }
This file is part of the documentation for knewstuff Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Sep 23 17:12:35 2004 by
doxygen 1.3.8-20040913 written by
Dimitri van Heesch, © 1997-2003