File indexing completed on 2024-05-12 05:50:21

0001 /*
0002     SPDX-FileCopyrightText: 2011 Raphael Kubo da Costa <rakuco@FreeBSD.org>
0003     SPDX-FileCopyrightText: 2016 Vladyslav Batyrenko <mvlabat@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef CLIPLUGIN_H
0009 #define CLIPLUGIN_H
0010 
0011 #include "cliinterface.h"
0012 
0013 using namespace Kerfuffle;
0014 
0015 class CliPlugin : public Kerfuffle::CliInterface
0016 {
0017     Q_OBJECT
0018 
0019 public:
0020     explicit CliPlugin(QObject *parent, const QVariantList &args);
0021     ~CliPlugin() override;
0022 
0023     void resetParsing() override;
0024     QString escapeFileName(const QString &fileName) const override;
0025     bool readListLine(const QString &line) override;
0026     bool readExtractLine(const QString &line) override;
0027     bool isPasswordPrompt(const QString &line) override;
0028     bool isWrongPasswordMsg(const QString &line) override;
0029     bool isCorruptArchiveMsg(const QString &line) override;
0030     bool isDiskFullMsg(const QString &line) override;
0031     bool isFileExistsMsg(const QString &line) override;
0032     bool isFileExistsFileName(const QString &line) override;
0033 
0034     bool moveFiles(const QVector<Archive::Entry *> &files, Archive::Entry *destination, const CompressionOptions &options) override;
0035     int moveRequiredSignals() const override;
0036 
0037 private Q_SLOTS:
0038     void continueMoving(bool result);
0039 
0040 private:
0041     void setupCliProperties();
0042     bool setMovingAddedFiles();
0043     void finishMoving(bool result);
0044     QString convertCompressionMethod(const QString &method);
0045 
0046     enum ParseState { ParseStateHeader = 0, ParseStateComment, ParseStateEntry } m_parseState;
0047 
0048     int m_linesComment;
0049     QString m_tempComment;
0050 };
0051 
0052 #endif // CLIPLUGIN_H