summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/applnk.cpp2
-rw-r--r--library/mimetype.cpp10
2 files changed, 8 insertions, 4 deletions
diff --git a/library/applnk.cpp b/library/applnk.cpp
index 5f7da8e..e9d519e 100644
--- a/library/applnk.cpp
+++ b/library/applnk.cpp
@@ -1267,25 +1267,25 @@ DocLnkSet::DocLnkSet()
1267 only documents with a MIME type matching \a mimefilter are selected. 1267 only documents with a MIME type matching \a mimefilter are selected.
1268 The value may contain multiple wild-card patterns separated by ";", 1268 The value may contain multiple wild-card patterns separated by ";",
1269 such as \c{*o/mpeg;audio/x-wav}. 1269 such as \c{*o/mpeg;audio/x-wav}.
1270 1270
1271 See also \link applnk.html#files-and-links Files and Links\endlink. 1271 See also \link applnk.html#files-and-links Files and Links\endlink.
1272 1272
1273*/ 1273*/
1274DocLnkSet::DocLnkSet( const QString &directory, const QString& mimefilter ) : 1274DocLnkSet::DocLnkSet( const QString &directory, const QString& mimefilter ) :
1275 AppLnkSet() 1275 AppLnkSet()
1276{ 1276{
1277 QDir dir( directory ); 1277 QDir dir( directory );
1278 mFile = dir.dirName(); 1278 mFile = dir.dirName();
1279 QDict<void> reference; 1279 QDict<void> reference(1021);
1280 1280
1281 QStringList subFilter = QStringList::split(";", mimefilter); 1281 QStringList subFilter = QStringList::split(";", mimefilter);
1282 QValueList<QRegExp> mimeFilters; 1282 QValueList<QRegExp> mimeFilters;
1283 for( QStringList::Iterator it = subFilter.begin(); it != subFilter.end(); ++ it ) 1283 for( QStringList::Iterator it = subFilter.begin(); it != subFilter.end(); ++ it )
1284 mimeFilters.append( QRegExp(*it, FALSE, TRUE) ); 1284 mimeFilters.append( QRegExp(*it, FALSE, TRUE) );
1285 1285
1286 findChildren(directory, mimeFilters, reference); 1286 findChildren(directory, mimeFilters, reference);
1287 1287
1288 const QList<DocLnk> &list = children(); 1288 const QList<DocLnk> &list = children();
1289 for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) { 1289 for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) {
1290 reference.remove( (*it)->file() ); 1290 reference.remove( (*it)->file() );
1291 } 1291 }
diff --git a/library/mimetype.cpp b/library/mimetype.cpp
index 23de70b..ec45794 100644
--- a/library/mimetype.cpp
+++ b/library/mimetype.cpp
@@ -102,24 +102,25 @@ private:
102 102
103class MimeType::Private : public QDict<MimeTypeData> { 103class MimeType::Private : public QDict<MimeTypeData> {
104public: 104public:
105 Private() {} 105 Private() {}
106 ~Private() {} 106 ~Private() {}
107 107
108 // ... 108 // ...
109}; 109};
110 110
111MimeType::Private* MimeType::d=0; 111MimeType::Private* MimeType::d=0;
112static QMap<QString,QString> *typeFor = 0; 112static QMap<QString,QString> *typeFor = 0;
113static QMap<QString,QStringList> *extFor = 0; 113static QMap<QString,QStringList> *extFor = 0;
114static bool appsUpdated = FALSE;
114 115
115MimeType::Private& MimeType::data() 116MimeType::Private& MimeType::data()
116{ 117{
117 if ( !d ) { 118 if ( !d ) {
118 d = new Private; 119 d = new Private;
119 d->setAutoDelete(TRUE); 120 d->setAutoDelete(TRUE);
120 static bool setCleanup = FALSE; 121 static bool setCleanup = FALSE;
121 if ( !setCleanup ) { 122 if ( !setCleanup ) {
122 qAddPostRoutine( cleanupMime ); 123 qAddPostRoutine( cleanupMime );
123 setCleanup = TRUE; 124 setCleanup = TRUE;
124 } 125 }
125 } 126 }
@@ -262,24 +263,27 @@ void MimeType::registerApp( const AppLnk& lnk )
262 cur->apps.append(l); 263 cur->apps.append(l);
263 } 264 }
264 } 265 }
265} 266}
266 267
267/*! 268/*!
268 \internal 269 \internal
269*/ 270*/
270void MimeType::clear() 271void MimeType::clear()
271{ 272{
272 delete d; 273 delete d;
273 d = 0; 274 d = 0;
275 delete typeFor; typeFor = 0;
276 delete extFor ; extFor = 0;
277 appsUpdated = FALSE;
274} 278}
275 279
276void MimeType::loadExtensions() 280void MimeType::loadExtensions()
277{ 281{
278 if ( !typeFor ) { 282 if ( !typeFor ) {
279 extFor = new QMap<QString,QStringList>; 283 extFor = new QMap<QString,QStringList>;
280 typeFor = new QMap<QString,QString>; 284 typeFor = new QMap<QString,QString>;
281 loadExtensions("/etc/mime.types"); 285 loadExtensions("/etc/mime.types");
282 loadExtensions(QPEApplication::qpeDir()+"etc/mime.types"); 286 loadExtensions(QPEApplication::qpeDir()+"etc/mime.types");
283 } 287 }
284} 288}
285 289
@@ -313,27 +317,26 @@ void MimeType::loadExtensions(const QString& filename)
313void MimeType::init( const QString& ext_or_id ) 317void MimeType::init( const QString& ext_or_id )
314{ 318{
315 if ( ext_or_id[0] != '/' && ext_or_id.contains('/') ) { 319 if ( ext_or_id[0] != '/' && ext_or_id.contains('/') ) {
316 i = ext_or_id.lower(); 320 i = ext_or_id.lower();
317 } else { 321 } else {
318 loadExtensions(); 322 loadExtensions();
319 int dot = ext_or_id.findRev('.'); 323 int dot = ext_or_id.findRev('.');
320 QString ext = dot >= 0 ? ext_or_id.mid(dot+1) : ext_or_id; 324 QString ext = dot >= 0 ? ext_or_id.mid(dot+1) : ext_or_id;
321 i = (*typeFor)[ext.lower()]; 325 i = (*typeFor)[ext.lower()];
322 if ( i.isNull() ) 326 if ( i.isNull() )
323 i = "application/octet-stream"; 327 i = "application/octet-stream";
324 } 328 }
325 static bool appsUpdated = FALSE; 329
326 if ( !appsUpdated ) { 330 if ( !appsUpdated ) {
327 appsUpdated = TRUE;
328 updateApplications(); 331 updateApplications();
329 } 332 }
330} 333}
331 334
332MimeTypeData* MimeType::data(const QString& id) 335MimeTypeData* MimeType::data(const QString& id)
333{ 336{
334 MimeTypeData* d = data()[id]; 337 MimeTypeData* d = data()[id];
335 if ( !d ) { 338 if ( !d ) {
336 int s = id.find('/'); 339 int s = id.find('/');
337 QString idw = id.left(s)+"/*"; 340 QString idw = id.left(s)+"/*";
338 d = data()[idw]; 341 d = data()[idw];
339 } 342 }
@@ -344,23 +347,24 @@ MimeTypeData* MimeType::data(const QString& id)
344 Returns a Qtopia folder containing application definitions. 347 Returns a Qtopia folder containing application definitions.
345*/ 348*/
346QString MimeType::appsFolderName() 349QString MimeType::appsFolderName()
347{ 350{
348 return QPEApplication::qpeDir() + "apps"; 351 return QPEApplication::qpeDir() + "apps";
349} 352}
350 353
351/*! 354/*!
352 Reloads application definitions. 355 Reloads application definitions.
353*/ 356*/
354void MimeType::updateApplications() 357void MimeType::updateApplications()
355{ 358{
356 clear(); 359// clear();
360 appsUpdated = true;
357 AppLnkSet apps( appsFolderName() ); 361 AppLnkSet apps( appsFolderName() );
358 updateApplications(&apps); 362 updateApplications(&apps);
359} 363}
360 364
361void MimeType::updateApplications(AppLnkSet* folder) 365void MimeType::updateApplications(AppLnkSet* folder)
362{ 366{
363 for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) { 367 for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) {
364 registerApp(*it.current()); 368 registerApp(*it.current());
365 } 369 }
366} 370}