diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,17 @@ Xml ) +# determine kf5 version is at least 5.23 +find_package(KF5 5.23 QUIET COMPONENTS + KIO +) +if(KF5_FOUND) + set(KRARC_QUERY_ENABLED TRUE) + add_definitions( "-DKRARC_QUERY_ENABLED" ) +else(KF5_FOUND) + set(KRARC_QUERY_ENABLED FALSE) +endif(KF5_FOUND) + find_package(KF5 REQUIRED COMPONENTS Archive Bookmarks diff --git a/krusader/Konfigurator/kgprotocols.h b/krusader/Konfigurator/kgprotocols.h --- a/krusader/Konfigurator/kgprotocols.h +++ b/krusader/Konfigurator/kgprotocols.h @@ -78,11 +78,6 @@ QPushButton *btnRemoveProtocol; QPushButton *btnAddMime; QPushButton *btnRemoveMime; - - static QString defaultProtocols; - static QString defaultIsoMimes; - static QString defaultKrarcMimes; - static QString defaultTarMimes; }; #endif /* __KgProtocols_H__ */ diff --git a/krusader/Konfigurator/kgprotocols.cpp b/krusader/Konfigurator/kgprotocols.cpp --- a/krusader/Konfigurator/kgprotocols.cpp +++ b/krusader/Konfigurator/kgprotocols.cpp @@ -45,9 +45,6 @@ #include #include -QString KgProtocols::defaultProtocols = "krarc"; -QString KgProtocols::defaultKrarcMimes = "application/zip"; - KgProtocols::KgProtocols(bool first, QWidget* parent) : KonfiguratorPage(first, parent) { @@ -331,14 +328,6 @@ while (linkList->topLevelItemCount() != 0) removeProtocol(linkList->topLevelItem(0)->text(0)); -#ifdef KRARC_ENABLED - addProtocol("krarc"); - QStringList krarcMimes = defaultKrarcMimes.split(','); - foreach(const QString &mime, krarcMimes) { - addMime(mime, "krarc"); - } -#endif - slotDisableButtons(); if (isChanged()) @@ -406,9 +395,4 @@ void KgProtocols::init() { - if (!krConfig->groupList().contains("Protocols")) { - KConfigGroup group(krConfig, "Protocols"); - group.writeEntry("Handled Protocols", defaultProtocols); - group.writeEntry("Mimes For krarc", defaultKrarcMimes); - } } diff --git a/krusader/krservices.h b/krusader/krservices.h --- a/krusader/krservices.h +++ b/krusader/krservices.h @@ -55,6 +55,7 @@ private: static QMap* slaveMap; + static QSet krarcArchiveMimetypes; }; diff --git a/krusader/krservices.cpp b/krusader/krservices.cpp --- a/krusader/krservices.cpp +++ b/krusader/krservices.cpp @@ -30,6 +30,11 @@ #include "defaults.h" QMap* KrServices::slaveMap = 0; +#ifdef KRARC_QUERY_ENABLED +QSet KrServices::krarcArchiveMimetypes = QSet::fromList(KProtocolInfo::archiveMimetypes("krarc")); +#else +QSet KrServices::krarcArchiveMimetypes; +#endif bool KrServices::cmdExist(QString cmdName) { @@ -92,7 +97,10 @@ } } QString protocol = (*slaveMap)[mimetype]; - if(protocol.isEmpty()) { + if (protocol.isEmpty()) { + if (krarcArchiveMimetypes.contains(mimetype)) { + return "krarc"; + } protocol = KProtocolManager::protocolForArchiveMimetype(mimetype); } return protocol;