-rw-r--r-- | library/mimetype.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/library/mimetype.cpp b/library/mimetype.cpp index c6a4453..9fab160 100644 --- a/library/mimetype.cpp +++ b/library/mimetype.cpp @@ -13,16 +13,17 @@ ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#define QTOPIA_INTERNAL_MIMEEXT #include "mimetype.h" #include "applnk.h" #include "resource.h" #include "qpeapplication.h" #include <qfile.h> #include <qdict.h> #include <qregexp.h> #include <qstringlist.h> @@ -41,29 +42,31 @@ public: bigIcon = lnk.bigPixmap(); } else { QImage unscaledIcon = Resource::loadImage( icon ); regIcon.convertFromImage( unscaledIcon.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) ); bigIcon.convertFromImage( unscaledIcon.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ) ); } } QString id; + QString extension; QString desc; QPixmap regIcon; QPixmap bigIcon; AppLnk app; }; class MimeType::Dict : public QDict<MimeTypeData> { public: Dict() {} }; MimeType::Dict* MimeType::d=0; static QMap<QString,QString> *typeFor = 0; +static QMap<QString,QString> *extFor = 0; MimeType::Dict& MimeType::dict() { if ( !d ) { d = new Dict; d->setAutoDelete(TRUE); } return *d; @@ -91,16 +94,22 @@ QString MimeType::description() const } QPixmap MimeType::pixmap() const { MimeTypeData* d = data(i); return d ? d->regIcon : QPixmap(); } +QString MimeType::extension() const +{ + loadExtensions(); + return *(*extFor).find(i); +} + QPixmap MimeType::bigPixmap() const { MimeTypeData* d = data(i); return d ? d->bigIcon : QPixmap(); } const AppLnk* MimeType::application() const { @@ -123,16 +132,17 @@ void MimeType::clear() { delete d; d = 0; } void MimeType::loadExtensions() { if ( !typeFor ) { + extFor = new QMap<QString,QString>; typeFor = new QMap<QString,QString>; loadExtensions("/etc/mime.types"); loadExtensions(QPEApplication::qpeDir()+"etc/mime.types"); } } void MimeType::loadExtensions(const QString& filename) { @@ -140,24 +150,27 @@ void MimeType::loadExtensions(const QString& filename) if ( file.open(IO_ReadOnly) ) { QTextStream in(&file); QRegExp space("[ \t]+"); while (!in.atEnd()) { QStringList tokens = QStringList::split(space, in.readLine()); QStringList::ConstIterator it = tokens.begin(); if ( it != tokens.end() ) { QString id = *it; ++it; + if ( it != tokens.end() ) { + (*extFor)[id] = *it; while (it != tokens.end()) { (*typeFor)[*it] = id; ++it; } } } } } +} void MimeType::init( const QString& ext_or_id ) { if ( ext_or_id[0] != '/' && ext_or_id.contains('/') ) { i = ext_or_id.lower(); } else { loadExtensions(); int dot = ext_or_id.findRev('.'); |