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 #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 // TODO: Replace the default by the real one. 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 // job->dumpObjectInfo(); 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 }
KDE Logo
This file is part of the documentation for korganizer Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 1 15:19:32 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003