knewstuff Library API Documentation

provider.cpp

00001 /* 00002 This file is part of KOrganizer. 00003 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 Boston, MA 02111-1307, USA. 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 // TODO: Replace the default by the real one. 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 // job->dumpObjectInfo(); 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 }
KDE Logo
This file is part of the documentation for knewstuff Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:22:21 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003