korganizer 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 
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     // TODO: Replace the default by the real one.
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 //  job->dumpObjectInfo();
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 }
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 15 11:41:10 2004 by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2001