diff --git a/archive/CMakeLists.txt b/archive/CMakeLists.txt --- a/archive/CMakeLists.txt +++ b/archive/CMakeLists.txt @@ -71,4 +71,4 @@ target_link_libraries(kio_archive KF5::KIOCore KF5::Archive kioarchive Qt5::Network) set_target_properties(kio_archive PROPERTIES OUTPUT_NAME "archive") install(TARGETS kio_archive DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) -install(FILES tar.protocol ar.protocol zip.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) +install(FILES tar.protocol ar.protocol zip.protocol sevenz.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) diff --git a/archive/kio_archive.cpp b/archive/kio_archive.cpp --- a/archive/kio_archive.cpp +++ b/archive/kio_archive.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include "kio_archive_debug.h" @@ -63,16 +64,20 @@ KArchive *ArchiveProtocol::createArchive( const QString & proto, const QString & archiveFile ) { if ( proto == "ar" ) { - qCDebug(KIO_ARCHIVE_LOG) << "Opening KAr on " << archiveFile; - return new KAr( archiveFile ); + qCDebug(KIO_ARCHIVE_LOG) << "Opening KAr on " << archiveFile; + return new KAr( archiveFile ); } else if ( proto == "tar" ) { qCDebug(KIO_ARCHIVE_LOG) << "Opening KTar on " << archiveFile; return new KTar( archiveFile ); } else if ( proto == "zip" ) { qCDebug(KIO_ARCHIVE_LOG) << "Opening KZip on " << archiveFile; return new KZip( archiveFile ); + } + else if ( proto == "sevenz" ) { + qCDebug(KIO_ARCHIVE_LOG) << "Opening K7Zip on " << archiveFile; + return new K7Zip( archiveFile ); } else { qCWarning(KIO_ARCHIVE_LOG) << "Protocol" << proto << "not supported by this IOSlave" ; return nullptr; diff --git a/archive/kio_archivebase.cpp b/archive/kio_archivebase.cpp --- a/archive/kio_archivebase.cpp +++ b/archive/kio_archivebase.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/archive/sevenz.protocol b/archive/sevenz.protocol new file mode 100644 --- /dev/null +++ b/archive/sevenz.protocol @@ -0,0 +1,11 @@ +[Protocol] +exec=kf5/kio/archive +protocol=sevenz +archiveMimetype=application/x-7z-compressed +input=filesystem +output=filesystem +listing=Name,Type,Size,Date,Access,Owner,Group,Link +reading=true +source=true +Icon=package-x-generic +Class=:local