25 #include <kmessagebox.h> 28 #include <tqptrdict.h> 29 #include <tqwindowdefs.h> 32 #include "provider.moc" 42 KURL mDownloadUrlLatest;
43 KURL mDownloadUrlScore;
44 KURL mDownloadUrlDownloads;
47 static TQPtrDict<ProviderPrivate> *d_ptr_prov = 0;
49 static ProviderPrivate *d_prov(
const Provider *p)
53 d_ptr_prov =
new TQPtrDict<ProviderPrivate>();
54 d_ptr_prov->setAutoDelete(
true);
56 ProviderPrivate *ret = d_ptr_prov->find((
void*)p);
59 ret =
new ProviderPrivate();
60 d_ptr_prov->replace((
void*)p, ret);
67 if((variant ==
"latest") && (d_prov(
this)->mDownloadUrlLatest.isValid()))
68 return d_prov(
this)->mDownloadUrlLatest;
69 if((variant ==
"score") && (d_prov(
this)->mDownloadUrlScore.isValid()))
70 return d_prov(
this)->mDownloadUrlScore;
71 if((variant ==
"downloads") && (d_prov(
this)->mDownloadUrlDownloads.isValid()))
72 return d_prov(
this)->mDownloadUrlDownloads;
92 ProviderPrivate *p = d_ptr_prov->find(
this);
94 d_ptr_prov->remove(p);
96 if (d_ptr_prov->isEmpty())
171 void Provider::parseDomElement(
const TQDomElement &element )
173 if ( element.tagName() !=
"provider" )
return;
179 d_prov(
this)->mDownloadUrlLatest = KURL( element.attribute(
"downloadurl-latest") );
180 d_prov(
this)->mDownloadUrlScore = KURL( element.attribute(
"downloadurl-score") );
181 d_prov(
this)->mDownloadUrlDownloads = KURL( element.attribute(
"downloadurl-downloads") );
183 KURL iconurl( element.attribute(
"icon") );
184 if(!iconurl.isValid()) iconurl.setPath( element.attribute(
"icon") );
188 for ( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
189 TQDomElement p = n.toElement();
191 if ( p.tagName() ==
"noupload" )
setNoUpload(
true );
192 if ( p.tagName() ==
"title" )
setName( p.text().stripWhiteSpace() );
196 TQDomElement Provider::createDomElement( TQDomDocument &doc, TQDomElement &parent )
198 TQDomElement entry = doc.createElement(
"stuff" );
199 parent.appendChild( entry );
201 TQDomElement n = doc.createElement(
"name" );
202 n.appendChild( doc.createTextNode(
name() ) );
203 entry.appendChild( n );
210 TQObject( parentWidget )
212 mProviders.setAutoDelete(
true );
217 kdDebug() <<
"ProviderLoader::load()" << endl;
222 KConfig *cfg = KGlobal::config();
223 cfg->setGroup(
"KNewStuff");
225 TQString providersUrl = providersList;
226 if( providersUrl.isEmpty() )
227 providersUrl = cfg->readEntry(
"ProvidersUrl" );
229 if ( providersUrl.isEmpty() ) {
231 TQString server = cfg->readEntry(
"MasterServer",
232 "http://korganizer.kde.org" );
234 providersUrl = server +
"/knewstuff/" + type +
"/providers.xml";
237 kdDebug() <<
"ProviderLoader::load(): providersUrl: " << providersUrl << endl;
239 KIO::TransferJob *job = KIO::get( KURL( providersUrl ),
false,
false );
240 connect( job, TQT_SIGNAL( result( KIO::Job * ) ),
241 TQT_SLOT( slotJobResult( KIO::Job * ) ) );
242 connect( job, TQT_SIGNAL( data( KIO::Job *,
const TQByteArray & ) ),
243 TQT_SLOT( slotJobData( KIO::Job *,
const TQByteArray & ) ) );
248 void ProviderLoader::slotJobData( KIO::Job *,
const TQByteArray &data )
250 kdDebug() <<
"ProviderLoader::slotJobData()" << endl;
252 if ( data.size() == 0 )
return;
254 TQCString str( data, data.size() + 1 );
256 mJobData.append( TQString::fromUtf8( str ) );
259 void ProviderLoader::slotJobResult( KIO::Job *job )
261 if ( job->error() ) {
262 job->showErrorDialog( TQT_TQWIDGET(parent()) );
265 kdDebug() <<
"--PROVIDERS-START--" << endl << mJobData <<
"--PROV_END--" 269 if ( !doc.setContent( mJobData ) ) {
270 KMessageBox::error( TQT_TQWIDGET(parent()), i18n(
"Error parsing providers list.") );
274 TQDomElement providers = doc.documentElement();
276 if ( providers.isNull() ) {
277 kdDebug() <<
"No document in Providers.xml." << endl;
281 for ( n = providers.firstChild(); !n.isNull(); n = n.nextSibling() ) {
282 TQDomElement p = n.toElement();
284 if ( p.tagName() ==
"provider" ) {
285 mProviders.append(
new Provider( p ) );
KURL icon() const
Retrieves the icon URL for this provider.
void setNoUpload(bool)
Indicate whether provider supports uploads.
void load(const TQString &type, const TQString &providerList=TQString::null)
Starts asynchronously loading the list of providers of the specified type.
KURL noUploadUrl() const
Retrieves the URL where a user is led if the provider does not support uploads.
KURL downloadUrlVariant(TQString variant) const
Variant to retrieve 'tagged' download URLs.
bool noUpload() const
Query whether provider supports uploads.
ProviderLoader(TQWidget *parentWidget)
Constructor.
TQString name() const
Retrieves the common name of the provider.
KURL downloadUrl() const
Retrieves the download URL.
void setDownloadUrl(const KURL &)
Sets the download URL.
KURL uploadUrl() const
Retrieves the upload URL.
void setNoUploadUrl(const KURL &)
Sets the URL where a user is led if the provider does not support uploads.
void setUploadUrl(const KURL &)
Sets the upload URL.
void providersLoaded(Provider::List *)
Indicates that the list of providers has been successfully loaded.
Handles security releated issues, like signing, verifying.
void setName(const TQString &)
Sets the common name of the provider.
void setIcon(const KURL &)
Sets the URL for an icon for this provider.
KNewStuff provider container.