-rw-r--r-- | library/applnk.cpp | 2 | ||||
-rw-r--r-- | library/mimetype.cpp | 10 |
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 @@ -1271,17 +1271,17 @@ DocLnkSet::DocLnkSet() See also \link applnk.html#files-and-links Files and Links\endlink. */ DocLnkSet::DocLnkSet( const QString &directory, const QString& mimefilter ) : AppLnkSet() { QDir dir( directory ); mFile = dir.dirName(); - QDict<void> reference; + QDict<void> reference(1021); QStringList subFilter = QStringList::split(";", mimefilter); QValueList<QRegExp> mimeFilters; for( QStringList::Iterator it = subFilter.begin(); it != subFilter.end(); ++ it ) mimeFilters.append( QRegExp(*it, FALSE, TRUE) ); findChildren(directory, mimeFilters, reference); diff --git a/library/mimetype.cpp b/library/mimetype.cpp index 23de70b..ec45794 100644 --- a/library/mimetype.cpp +++ b/library/mimetype.cpp @@ -106,16 +106,17 @@ public: ~Private() {} // ... }; MimeType::Private* MimeType::d=0; static QMap<QString,QString> *typeFor = 0; static QMap<QString,QStringList> *extFor = 0; +static bool appsUpdated = FALSE; MimeType::Private& MimeType::data() { if ( !d ) { d = new Private; d->setAutoDelete(TRUE); static bool setCleanup = FALSE; if ( !setCleanup ) { @@ -266,16 +267,19 @@ void MimeType::registerApp( const AppLnk& lnk ) /*! \internal */ void MimeType::clear() { delete d; d = 0; + delete typeFor; typeFor = 0; + delete extFor ; extFor = 0; + appsUpdated = FALSE; } void MimeType::loadExtensions() { if ( !typeFor ) { extFor = new QMap<QString,QStringList>; typeFor = new QMap<QString,QString>; loadExtensions("/etc/mime.types"); @@ -317,19 +321,18 @@ void MimeType::init( const QString& ext_or_id ) } else { loadExtensions(); int dot = ext_or_id.findRev('.'); QString ext = dot >= 0 ? ext_or_id.mid(dot+1) : ext_or_id; i = (*typeFor)[ext.lower()]; if ( i.isNull() ) i = "application/octet-stream"; } - static bool appsUpdated = FALSE; + if ( !appsUpdated ) { - appsUpdated = TRUE; updateApplications(); } } MimeTypeData* MimeType::data(const QString& id) { MimeTypeData* d = data()[id]; if ( !d ) { @@ -348,17 +351,18 @@ QString MimeType::appsFolderName() return QPEApplication::qpeDir() + "apps"; } /*! Reloads application definitions. */ void MimeType::updateApplications() { - clear(); +// clear(); + appsUpdated = true; AppLnkSet apps( appsFolderName() ); updateApplications(&apps); } void MimeType::updateApplications(AppLnkSet* folder) { for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) { registerApp(*it.current()); |