File indexing completed on 2024-05-05 05:50:40
0001 /* 0002 SPDX-FileCopyrightText: 2016 Ragnar Thomsen <rthomsen6@gmail.com> 0003 0004 SPDX-License-Identifier: BSD-2-Clause 0005 */ 0006 #ifndef CLIPROPERTIES_H 0007 #define CLIPROPERTIES_H 0008 0009 #include "archiveinterface.h" 0010 #include "kerfuffle_export.h" 0011 0012 namespace Kerfuffle 0013 { 0014 class KERFUFFLE_EXPORT CliProperties : public QObject 0015 { 0016 Q_OBJECT 0017 0018 Q_PROPERTY(QString addProgram MEMBER m_addProgram) 0019 Q_PROPERTY(QString deleteProgram MEMBER m_deleteProgram) 0020 Q_PROPERTY(QString extractProgram MEMBER m_extractProgram) 0021 Q_PROPERTY(QString listProgram MEMBER m_listProgram) 0022 Q_PROPERTY(QString moveProgram MEMBER m_moveProgram) 0023 Q_PROPERTY(QString testProgram MEMBER m_testProgram) 0024 0025 Q_PROPERTY(QStringList addSwitch MEMBER m_addSwitch) 0026 Q_PROPERTY(QStringList commentSwitch MEMBER m_commentSwitch) 0027 Q_PROPERTY(QString deleteSwitch MEMBER m_deleteSwitch) 0028 Q_PROPERTY(QStringList extractSwitch MEMBER m_extractSwitch) 0029 Q_PROPERTY(QStringList extractSwitchNoPreserve MEMBER m_extractSwitchNoPreserve) 0030 Q_PROPERTY(QStringList listSwitch MEMBER m_listSwitch) 0031 Q_PROPERTY(QString moveSwitch MEMBER m_moveSwitch) 0032 Q_PROPERTY(QStringList testSwitch MEMBER m_testSwitch) 0033 0034 Q_PROPERTY(QStringList passwordSwitch MEMBER m_passwordSwitch) 0035 Q_PROPERTY(QStringList passwordSwitchHeaderEnc MEMBER m_passwordSwitchHeaderEnc) 0036 Q_PROPERTY(QString compressionLevelSwitch MEMBER m_compressionLevelSwitch) 0037 Q_PROPERTY(QHash<QString, QVariant> compressionMethodSwitch MEMBER m_compressionMethodSwitch) 0038 Q_PROPERTY(QHash<QString, QVariant> encryptionMethodSwitch MEMBER m_encryptionMethodSwitch) 0039 Q_PROPERTY(QString multiVolumeSwitch MEMBER m_multiVolumeSwitch) 0040 0041 Q_PROPERTY(QStringList testPassedPatterns MEMBER m_testPassedPatterns) 0042 Q_PROPERTY(QStringList fileExistsFileNameRegExp MEMBER m_fileExistsFileNameRegExp) 0043 0044 Q_PROPERTY(QStringList fileExistsInput MEMBER m_fileExistsInput) 0045 Q_PROPERTY(QStringList multiVolumeSuffix MEMBER m_multiVolumeSuffix) 0046 0047 Q_PROPERTY(bool captureProgress MEMBER m_captureProgress) 0048 0049 public: 0050 explicit CliProperties(QObject *parent, const KPluginMetaData &metaData, const QMimeType &archiveType); 0051 0052 QStringList addArgs(const QString &archive, 0053 const QStringList &files, 0054 const QString &password, 0055 bool headerEncryption, 0056 int compressionLevel, 0057 const QString &compressionMethod, 0058 const QString &encryptionMethod, 0059 ulong volumeSize); 0060 QStringList commentArgs(const QString &archive, const QString &commentfile); 0061 QStringList deleteArgs(const QString &archive, const QVector<Archive::Entry *> &files, const QString &password); 0062 QStringList extractArgs(const QString &archive, const QStringList &files, bool preservePaths, const QString &password); 0063 QStringList listArgs(const QString &archive, const QString &password); 0064 QStringList moveArgs(const QString &archive, const QVector<Archive::Entry *> &entries, Archive::Entry *destination, const QString &password); 0065 QStringList testArgs(const QString &archive, const QString &password); 0066 0067 bool isTestPassedMsg(const QString &line); 0068 0069 private: 0070 QStringList substituteCommentSwitch(const QString &commentfile) const; 0071 QStringList substitutePasswordSwitch(const QString &password, bool headerEnc = false) const; 0072 QString substituteCompressionLevelSwitch(int level) const; 0073 QString substituteCompressionMethodSwitch(const QString &method) const; 0074 QString substituteEncryptionMethodSwitch(const QString &method) const; 0075 QString substituteMultiVolumeSwitch(ulong volumeSize) const; 0076 0077 QString m_addProgram; 0078 QString m_deleteProgram; 0079 QString m_extractProgram; 0080 QString m_listProgram; 0081 QString m_moveProgram; 0082 QString m_testProgram; 0083 0084 QStringList m_addSwitch; 0085 QStringList m_commentSwitch; 0086 QString m_deleteSwitch; 0087 QStringList m_extractSwitch; 0088 QStringList m_extractSwitchNoPreserve; 0089 QStringList m_listSwitch; 0090 QString m_moveSwitch; 0091 QStringList m_testSwitch; 0092 0093 QStringList m_passwordSwitch; 0094 QStringList m_passwordSwitchHeaderEnc; 0095 QString m_compressionLevelSwitch; 0096 QHash<QString, QVariant> m_compressionMethodSwitch; 0097 QHash<QString, QVariant> m_encryptionMethodSwitch; 0098 QString m_multiVolumeSwitch; 0099 0100 QStringList m_testPassedPatterns; 0101 QStringList m_fileExistsFileNameRegExp; 0102 0103 QStringList m_fileExistsInput; 0104 QStringList m_multiVolumeSuffix; 0105 0106 bool m_captureProgress = false; 0107 0108 QMimeType m_mimeType; 0109 KPluginMetaData m_metaData; 0110 }; 0111 } 0112 0113 #endif /* CLIPROPERTIES_H */