diff --git a/krusader/krservices.h b/krusader/krservices.h --- a/krusader/krservices.h +++ b/krusader/krservices.h @@ -32,9 +32,6 @@ class KrServices { public: - KrServices() {} - ~KrServices() {} - static bool cmdExist(QString cmdName); static QString chooseFullPathName(QStringList names, QString confName); static QString fullPathName(QString name, QString confName = QString()); @@ -57,6 +54,9 @@ static QString escape(QString name); private: + KrServices() {} + ~KrServices() {} + static QSet generateKrarcArchiveMimetypes(); static QMap* slaveMap; static QSet krarcArchiveMimetypes; static QSet isoArchiveMimetypes; diff --git a/krusader/krservices.cpp b/krusader/krservices.cpp --- a/krusader/krservices.cpp +++ b/krusader/krservices.cpp @@ -30,14 +30,49 @@ #include "defaults.h" QMap* KrServices::slaveMap = 0; +QSet KrServices::krarcArchiveMimetypes = KrServices::generateKrarcArchiveMimetypes(); #ifdef KRARC_QUERY_ENABLED -QSet KrServices::krarcArchiveMimetypes = QSet::fromList(KProtocolInfo::archiveMimetypes("krarc")); QSet KrServices::isoArchiveMimetypes = QSet::fromList(KProtocolInfo::archiveMimetypes("iso")); #else -QSet KrServices::krarcArchiveMimetypes; QSet KrServices::isoArchiveMimetypes; #endif +QSet KrServices::generateKrarcArchiveMimetypes() +{ + // Hard-code these proven mimetypes openable by krarc protocol. + // They cannot be listed in krarc.protocol itself + // because it would baffle other file managers (like Dolphin). + QSet mimes; + mimes += QString("application/x-deb"); + mimes += QString("application/x-debian-package"); + mimes += QString("application/vnd.debian.binary-package"); + mimes += QString("application/x-java-archive"); + mimes += QString("application/x-rpm"); + mimes += QString("application/x-source-rpm"); + mimes += QString("application/vnd.oasis.opendocument.chart"); + mimes += QString("application/vnd.oasis.opendocument.database"); + mimes += QString("application/vnd.oasis.opendocument.formula"); + mimes += QString("application/vnd.oasis.opendocument.graphics"); + mimes += QString("application/vnd.oasis.opendocument.presentation"); + mimes += QString("application/vnd.oasis.opendocument.spreadsheet"); + mimes += QString("application/vnd.oasis.opendocument.text"); + mimes += QString("application/vnd.openxmlformats-officedocument.presentationml.presentation"); + mimes += QString("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + mimes += QString("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + mimes += QString("application/x-cbz"); + mimes += QString("application/x-cbr"); + mimes += QString("application/epub+zip"); + mimes += QString("application/x-webarchive"); + mimes += QString("application/x-plasma"); + mimes += QString("application/vnd.rar"); + + #ifdef KRARC_QUERY_ENABLED + mimes += QSet::fromList(KProtocolInfo::archiveMimetypes("krarc")); + #endif + + return mimes; +} + bool KrServices::cmdExist(QString cmdName) { KConfigGroup group(krConfig, "Dependencies");