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 )
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 = cfg->readEntry( "ProvidersUrl" );
00161
00162 if ( providersUrl.isEmpty() ) {
00163
00164 QString server = cfg->readEntry( "MasterServer",
00165 "http://korganizer.kde.org" );
00166
00167 providersUrl = server + "/knewstuff/" + type + "/providers.xml";
00168 }
00169
00170 kdDebug(5850) << "ProviderLoader::load(): providersUrl: " << providersUrl << endl;
00171
00172 KIO::TransferJob *job = KIO::get( KURL( providersUrl ) );
00173 connect( job, SIGNAL( result( KIO::Job * ) ),
00174 SLOT( slotJobResult( KIO::Job * ) ) );
00175 connect( job, SIGNAL( data( KIO::Job *, const QByteArray & ) ),
00176 SLOT( slotJobData( KIO::Job *, const QByteArray & ) ) );
00177
00178
00179 }
00180
00181 void ProviderLoader::slotJobData( KIO::Job *, const QByteArray &data )
00182 {
00183 kdDebug(5850) << "ProviderLoader::slotJobData()" << endl;
00184
00185 if ( data.size() == 0 ) return;
00186
00187 QCString str( data, data.size() + 1 );
00188
00189 mJobData.append( QString::fromUtf8( str ) );
00190 }
00191
00192 void ProviderLoader::slotJobResult( KIO::Job *job )
00193 {
00194 if ( job->error() ) {
00195 job->showErrorDialog( mParentWidget );
00196 }
00197
00198 kdDebug(5850) << "--PROVIDERS-START--" << endl << mJobData << "--PROV_END--"
00199 << endl;
00200
00201 QDomDocument doc;
00202 if ( !doc.setContent( mJobData ) ) {
00203 KMessageBox::error( mParentWidget, i18n("Error parsing providers list.") );
00204 return;
00205 }
00206
00207 QDomElement providers = doc.documentElement();
00208
00209 if ( providers.isNull() ) {
00210 kdDebug(5850) << "No document in Providers.xml." << endl;
00211 }
00212
00213 QDomNode n;
00214 for ( n = providers.firstChild(); !n.isNull(); n = n.nextSibling() ) {
00215 QDomElement p = n.toElement();
00216
00217 mProviders.append( new Provider( p ) );
00218 }
00219
00220 emit providersLoaded( &mProviders );
00221 }
This file is part of the documentation for korganizer Library Version 3.2.2.