summaryrefslogtreecommitdiff
path: root/library/mimetype.cpp
Side-by-side diff
Diffstat (limited to 'library/mimetype.cpp') (more/less context) (show whitespace changes)
-rw-r--r--library/mimetype.cpp13
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
@@ -15,12 +15,13 @@
**
** 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>
@@ -43,12 +44,13 @@ public:
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;
};
@@ -56,12 +58,13 @@ 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);
@@ -93,12 +96,18 @@ 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();
}
@@ -125,12 +134,13 @@ void MimeType::clear()
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");
}
}
@@ -142,20 +152,23 @@ void MimeType::loadExtensions(const QString& filename)
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 {