marten created this revision.
Restricted Application added a project: Plasma.
Restricted Application added a subscriber: plasma-devel.

REVISION SUMMARY
  The tar, zip and ar ioslaves are implemented in kio-extras/archive by a 
single plugin (class ArchiveProtocol).  This uses the URL scheme to determine 
which archive decoder to use - KTar, KZip or KAr all from the KArchive (tier 1) 
framework.  Unfortunately, it is not possible to use this ioslave as a base for 
another archive format plugin to be distributed and built outside of the KDE 
source tree, because the supported protocols and their decoders are hardcoded 
in the depths of ArchiveProtocol::checkNewFile().  This means that a new 
ioslave for another archive format would need to copy and adapt the whole of 
the ArchiveProtocol source.
  
  This change makes it possible to do that by moving most of ArchiveProtocol 
into an abstract base class ArchiveProtocolBase, compiled into an library and 
installed along with its supporting files.  This is not a framework library 
(and is not ever intended to be), but a support library similar to libkonq.  It 
calls a virtual function in a derived class to create the KArchive-based 
decoder depending on the URL scheme.  The ioslave plugin for the existing 
archive formats is a single derived class (although it could just as easily be 
three) which is installed in the same way as before.
  
  With this change, it is then possible to build and install an additional 
out-of-tree ioslave plugin, deriving from ArchiveProtocolBase and using its 
installed headers and library, without needing any further changes to 
kio-extras.
  
  The additional files installed are:
  
  lib/cmake/KF5KioArchive/KF5KioArchiveConfig.cmake
  lib/cmake/KF5KioArchive/KF5KioArchiveConfigVersion.cmake
  lib/cmake/KF5KioArchive/KF5KioArchiveTargets.cmake
  lib/cmake/KF5KioArchive/KF5KioArchiveTargets-debug.cmake
  include/KF5/kio_archivebase.h
  include/KF5/libkioarchive_export.h
  lib/libKF5KioArchive.so.5.97.0
  lib/libKF5KioArchive.so.6 -> libKF5KioArchive.so.5.97.0
  lib/libKF5KioArchive.so -> libKF5KioArchive.so.6
  
  The .so versions are set as for libkonq, although they can easily be changed 
if required.

TEST PLAN
  Built kio-extras with this change, all autotests pass.
  Konqueror operates correctly to browse tar and zip archives.
  External archive format plugin builds and works correctly.

REPOSITORY
  R320 KIO Extras

REVISION DETAIL
  https://phabricator.kde.org/D5112

AFFECTED FILES
  archive/CMakeLists.txt
  archive/KF5KioArchiveConfig.cmake.in
  archive/kio_archive.cpp
  archive/kio_archive.h
  archive/kio_archivebase.cpp
  archive/kio_archivebase.h

To: marten, #plasma, dfaure
Cc: plasma-devel, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, 
sebas, apol

Reply via email to