File indexing completed on 2024-05-12 05:50:21
0001 /* 0002 SPDX-FileCopyrightText: 2009 Harald Hvaal <haraldhv@stud.ntnu.no> 0003 SPDX-FileCopyrightText: 2009-2010 Raphael Kubo da Costa <rakuco@FreeBSD.org> 0004 SPDX-FileCopyrightText: 2015-2016 Ragnar Thomsen <rthomsen6@gmail.com> 0005 SPDX-FileCopyrightText: 2016 Vladyslav Batyrenko <mvlabat@gmail.com> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #ifndef CLIPLUGIN_H 0011 #define CLIPLUGIN_H 0012 0013 #include "cliinterface.h" 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 bool readListLine(const QString &line) override; 0025 bool readExtractLine(const QString &line) override; 0026 bool hasBatchExtractionProgress() const 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 bool isLocked() const override; 0034 0035 private: 0036 enum ParseState { 0037 ParseStateTitle = 0, 0038 ParseStateComment, 0039 ParseStateHeader, 0040 ParseStateEntryFileName, 0041 ParseStateEntryDetails, 0042 ParseStateLinkTarget 0043 } m_parseState; 0044 0045 void setupCliProperties(); 0046 0047 bool handleUnrar5Line(const QString &line); 0048 void handleUnrar5Entry(); 0049 bool handleUnrar4Line(const QString &line); 0050 void handleUnrar4Entry(); 0051 void ignoreLines(int lines, ParseState nextState); 0052 0053 QStringList m_unrar4Details; 0054 QHash<QString, QString> m_unrar5Details; 0055 0056 QString m_unrarVersion; 0057 bool m_isUnrar5; 0058 bool m_isPasswordProtected; 0059 bool m_isSolid; 0060 bool m_isRAR5; 0061 bool m_isLocked; 0062 0063 int m_remainingIgnoreLines; 0064 int m_linesComment; 0065 }; 0066 0067 #endif // CLIPLUGIN_H