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 ) );
ProviderLoader(TQWidget *parentWidget)
Constructor.
void providersLoaded(Provider::List *)
Indicates that the list of providers has been successfully loaded.
void load(const TQString &type, const TQString &providerList=TQString::null)
Starts asynchronously loading the list of providers of the specified type.
KNewStuff provider container.
KURL downloadUrl() const
Retrieves the download URL.
TQString name() const
Retrieves the common name of the provider.
void setNoUpload(bool)
Indicate whether provider supports uploads.
KURL uploadUrl() const
Retrieves the upload URL.
void setIcon(const KURL &)
Sets the URL for an icon for this provider.
bool noUpload() const
Query whether provider supports uploads.
KURL icon() const
Retrieves the icon URL for this provider.
KURL noUploadUrl() const
Retrieves the URL where a user is led if the provider does not support uploads.
void setNoUploadUrl(const KURL &)
Sets 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.
void setName(const TQString &)
Sets the common name of the provider.
void setUploadUrl(const KURL &)
Sets the upload URL.
void setDownloadUrl(const KURL &)
Sets the download URL.
Handles security releated issues, like signing, verifying.