1. 17 Jul, 2016 1 commit
  2. 16 Jul, 2016 1 commit
    • Ragnar Thomsen's avatar
      Detect multi-volume archives and show info in PropertiesDialog · 0f4ae19b
      Ragnar Thomsen authored
      Two variables were added to ReadOnlyArchiveInterface: A boolean
      describing whether the archive is multi-volume and an int used for
      storing number of volumes. Two corresponding Q_PROPERTY's were added to
      Archive which fetch the info from ReadOnlyArchiveInterface.
      
      The detection of multi-volume archives was fixed in cli7z.
      
      The information is displayed in PropertiesDialog and will be used when
      implementing support for creating multi-volume archives.
      
      GUI:
      0f4ae19b
  3. 01 Jun, 2016 2 commits
    • Elvis Angelaccio's avatar
      Remove RootNodeSwitch leftovers · 4da52b6a
      Elvis Angelaccio authored
      This should have been part of commit 27e5167b.
      4da52b6a
    • Elvis Angelaccio's avatar
      Drop RootNode extraction option · 27e5167b
      Elvis Angelaccio authored
      We never set this option and because of this there is a lot of unused code (e.g. all the `RootNodeSwitch` stuff).
      
      Digging in the history, the last time that this option was set was in commit 10bc72f4.
      This means that this option is fully superseded by `fileNodeRootPair` and we can safely discard all this unused code.
      
      Closes T1942
      
      Differential Revision: D1704
      27e5167b
  4. 03 May, 2016 3 commits
    • Elvis Angelaccio's avatar
      Fix Delete action on header-encrypted archives · 7addb6b7
      Elvis Angelaccio authored
      Forward-port of cdcd6c13.
      7addb6b7
    • Elvis Angelaccio's avatar
      Fix Delete action on header-encrypted archives · cdcd6c13
      Elvis Angelaccio authored
      Ark was ignoring the password prompt, resulting in an endless DeleteJob.
      This is simply fixed by using the PasswordSwitch, like in other jobs.
      cdcd6c13
    • Ragnar Thomsen's avatar
      Add basic test functionality · 13d70a48
      Ragnar Thomsen authored
      Add a TestJob and associated action in Part. Test functionality is
      enabled in plugin json files, currently for clizip, clirar and cli7z.
      Test results are displayed simply as success/failure in a KMessageBox.
      
      Testing password-protected archives will currently result in an
      errorbox, due to these archives potentially having different passwords
      for each file and hence multiple password prompts might pop up.
      
      Libarchive does not support testing archives.
      
      FEATURE: 140492
      FIXED-IN: 16.08.0
      Differential Revision: D1516
      13d70a48
  5. 30 Apr, 2016 1 commit
    • Ragnar Thomsen's avatar
      Add support for editing/adding archive comments · 04d56afa
      Ragnar Thomsen authored
      Support was added for editing comments in supported archive types
      (currently only RAR). A new bool was added to plugin json files
      ("SupportsWriteComment") to indicate support. A new action was added and
      is found in Archive menu. The editing of comment is done in the same
      QPlainTextEdit used to display comments before. When user modifies
      comment, a KMessageWidget pops up with a "Save" button. Actual saving of
      comment to archive is achieved by a new job type: CommentJob.
      
      FEATURE: 357594
      FIXED-IN: 16.08.0
      GUI:
      Differential Revision: D1493
      04d56afa
  6. 07 Apr, 2016 1 commit
  7. 20 Mar, 2016 1 commit
    • Ragnar Thomsen's avatar
      Handle "no space left" messages from cliplugins · 7f65f911
      Ragnar Thomsen authored
      Previously, Ark didn't handle "no space left" error messages from the
      cliplugins. This resulted in either the gui being "busy" continously
      (clizip), or that the user didn't get any indication that there was a
      problem extracting the archive (cli7z and clirar).
      
      This commit adds a pattern (DiskFullPatterns) for catching these errors.
      An errorbox is then displayed to the user. Some of the programs used in
      the cliplugins, such as 7z v9.38, doesn't output a specific message,
      but then a generic "Extraction failed" message is displayed instead.
      
      BUG: 206383, 206385
      FIXED-IN: 16.04.0
      
      Differential Revision: D455
      7f65f911
  8. 08 Mar, 2016 1 commit
    • Elvis Angelaccio's avatar
      Port plugins loading to KPluginLoader · 060d23f0
      Elvis Angelaccio authored
      The ark plugins are now ported to the new KPluingLoader loading mechanism.
      The main advantage is that we now save a call to the Syscoca service trader,
      since the plugins are installed in a private 'kerfuffle' subdirectory of the
      system plugins folder.
      
      In order to be found by KPluginLoader, a plugin has to embed its metadata
      defined in a .json file. We convert the existing .desktop files to .json at build time, when possible.
      Otherwise we use directly .json metadata files (e.g. for clirar or cliunarchiver).
      
      The libarchive plugin had to be split in two different plugins, one for the
      read-only mimetypes and another one for the read-write ones. This is because
      the old plugin was using two .desktop files, but the new plugins can only embed
      a single .json file.
      
      For more details, see task T923 on phabricator.
      060d23f0
  9. 17 Dec, 2015 1 commit
  10. 27 Oct, 2015 1 commit
  11. 26 Oct, 2015 1 commit
    • Ragnar Thomsen's avatar
      Add support for overwrite prompt of p7zip v15.09. · ff4b1345
      Ragnar Thomsen authored
      The overwrite prompt changed from p7zip version 9.38.1 to 15.09. Add
      support for the new prompt. FileExistsExpression had to be changed
      from QString to QStringList.
      
      Also, got rid of unneeded CliInterface::checkForFileExistsMessage().
      Just use CliInterface::checkForErrorMessage() instead.
      ff4b1345
  12. 15 Oct, 2015 1 commit
    • Ragnar Thomsen's avatar
      Use ecm_qt_declare_logging_category() cmake macro · 5e04e640
      Ragnar Thomsen authored
      This macro was introduced in ECM 5.14.0 and generates logging category
      declarations. This removes the necessity of Q_LOGGING_CATEGORY calls in
      cpp files. A header with Q_DECLARE_LOGGING_CATEGORY is automatically
      generated, so the old logging.h file can be removed.
      
      Also the identifier is now ARK everywhere, so all qCDebug() should be
      qCDebug(ARK).
      
      This bumps the required dep version for ECM to 5.14.0.
      5e04e640
  13. 04 Oct, 2015 1 commit
    • Ragnar Thomsen's avatar
      Improve handling of corrupt archives by CliPlugins · 170115f1
      Ragnar Thomsen authored
      A new parameter was added to the Kerfuffle::CliInterfaceParameters enum
      (called CorruptArchivePatterns), containing a list of regexps matching
      output from CliPlugins when a corrupt archive is listed.
      
      Due to the CliInterface not being able to launch a KMessageBox itself, a
      query (LoadCorruptQuery) was added which launches a
      KMessageBox::warningYesNo asking the user if he wants to try to load the
      corrupt archive. This is useful because some files might still be
      recoverable.
      
      If the user answers no, loading of the archive is cancelled.
      
      If the user answers yes the archive is loaded as usual, but to prevent
      the user from trying to add/delete files from the corrupt archive (which
      is likely to fail), the archive is set to readonly. This necessitated a
      new private member in ReadOnlyArchiveInterface (m_isCorrupt) and
      getter/setter functions. The setter function is used in
      CliInterface::HandleLine, while the getter function is used in
      ReadWriteArchiveInterface::isReadOnly().
      
      BUG: 261073
      BUG: 352949
      FIXED-IN: 15.12.0
      REVIEW: 125363
      170115f1
  14. 23 Sep, 2015 2 commits
    • Ragnar Thomsen's avatar
      clirar: Improve parsing of rar output · ee7e9305
      Ragnar Thomsen authored
      Detect solid and multi-volume archives. For now, just store this info in
      member variables and output to debug.
      
      Remove some superfluous m_isUnrar5 checks.
      
      For unrar 5, go back to ParseStateHeader when finding a line that starts
      with "Archive: ". This is needed for multi-volume archives.
      ee7e9305
    • Ragnar Thomsen's avatar
      Add CliInterface::resetParsing() · bf487092
      Ragnar Thomsen authored
      This function is overridden in the individual CliPlugins and resets
      parsing variables, such as ParseState, m_comment, etc. This is needed
      because an archive can be listed several times without the plugin being
      reloaded, e.g. after adding files. This can result in e.g. comments
      being appended to themselves or parsing being started in the wrong
      ParseState.
      resetParsing() is called in CliInterface::list(), before running the
      list process.
      bf487092
  15. 22 Sep, 2015 1 commit
  16. 13 Sep, 2015 1 commit
    • Ragnar Thomsen's avatar
      clirar: Rewrite unrar parsing code · b738a004
      Ragnar Thomsen authored
      readListLine() is now very short. It simply checks the version of unrar
      and calls line-handling functions specific for unrar 3/4 and 5 termed
      handleUnrar4Line() and handleUnrar5Line(), respectively.
      
      When the line-handling functions have completed parsing all the details
      of an archive entry, they call an entry-handling function, either
      handleUnrar4Entry() or handleUnrar5Entry().
      
      BUG: 331065
      FIXED-IN: 15.12.0
      REVIEW: 124503
      b738a004
  17. 08 Sep, 2015 1 commit
    • Ragnar Thomsen's avatar
      Add support for overwrite prompt of unrar 5 · fba2a220
      Ragnar Thomsen authored
      The overwrite prompt changed in unrar 5 compared to unrar 3 and 4. This
      commit adds support for the unrar 5 prompt. Unrar 5 has a multi-line
      overwrite prompt, i.e. the last line of the overwrite prompt does not
      contain the name of the existing file, which is needed by the
      OverwriteQuery to display the filename to the user. This was solved by
      storing the filename in a member variable m_storedFileName, so it is
      available when the last line of the overwrite prompt is reached. To
      capture the filename, a new parameter, FileExistsFileName, was added to
      the CliInterfaceParameters enum.
      
      7z also has a multi-line overwrite prompt, so previously the filename
      was not displayed in the OverwriteQuery dialog. This is now fixed.
      
      BUG: 349131
      FIXED-IN: 15.08.1
      REVIEW: 124111
      fba2a220
  18. 22 Aug, 2015 1 commit
  19. 27 Jul, 2015 1 commit
  20. 26 Jul, 2015 1 commit
    • Ragnar Thomsen's avatar
      Remove noisy debug output · 31acb25f
      Ragnar Thomsen authored
      Remove noisy debug output, e.g. from clirar that gets emitted for each
      entry in an archive. This clutters the console output with alot of
      not-so-useful info.
      31acb25f
  21. 22 Jul, 2015 1 commit
    • Elvis Angelaccio's avatar
      Create password-protected archives with Ark · 402bbe84
      Elvis Angelaccio authored
      This feature allows Ark to create a password-protected archive from
      scratch.
      The 7z and rar plugins support both header encryption and entries-only
      encryption, while the zip one supports only the latter.
      
      An encrypted archive can be created through the CreateDialog (within Ark) or
      through the AddDialog (from e.g. Dolphin).
      
      REVIEW: 120204
      FEATURE: 253694
      FIXED-IN: 15.08
      GUI:
      402bbe84
  22. 18 May, 2015 1 commit
  23. 13 Nov, 2014 1 commit
  24. 10 Nov, 2014 2 commits
  25. 08 Nov, 2014 1 commit
  26. 12 Feb, 2014 1 commit
    • Raphael Kubo da Costa's avatar
      rar: Do not crash when unrar lists a symlink. · e13da507
      Raphael Kubo da Costa authored
      RAR v3 and v4 output an extra line when an entry is a symlink. This line
      contains the symlink target. Since we were not accounting for this extra
      line before, our parser crashed.
      
      Work around the issue by checking if we're listing a symlink and skipping an
      extra line if so.
      
      BUG:		331065
      FIXED-IN:	4.12.3
      e13da507
  27. 19 Sep, 2013 1 commit
  28. 30 Jun, 2013 1 commit
  29. 09 May, 2012 1 commit
  30. 19 Apr, 2012 1 commit
    • Raphael Kubo da Costa's avatar
      Get rid of the Observer class. · 15fce6f5
      Raphael Kubo da Costa authored
      I have never understood why this class was added in the first place,
      and digging through the old commit history does not help much in this
      regard.  It was mostly used as another way of doing signals and slots.
      
       * The calls in ArchiveInterface that called each observer method now
         just emit the signals declared in ReadOnlyArchiveInterface, and the
         observer methods in the Job classes are now slots.
       * ReadOnlyArchiveInterface::removeObserver() has been replaced with
         QObject::disconnect().
      
      All the (few) unit tests we have still pass.
      15fce6f5
  31. 26 Dec, 2011 1 commit
  32. 26 May, 2011 1 commit
  33. 24 Jan, 2011 2 commits
  34. 23 Jan, 2011 1 commit