File indexing completed on 2024-05-12 16:06:33

0001 /*
0002     SPDX-FileCopyrightText: 2007 Pino Toscano <pino@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef UNRARFLAVOURS_H
0008 #define UNRARFLAVOURS_H
0009 
0010 #include <QString>
0011 #include <QStringList>
0012 
0013 struct ProcessArgs {
0014     ProcessArgs();
0015     ProcessArgs(const QStringList &appArgs, bool useLsar);
0016 
0017     QStringList appArgs;
0018     bool useLsar;
0019 };
0020 
0021 class UnrarFlavour
0022 {
0023 public:
0024     virtual ~UnrarFlavour();
0025 
0026     UnrarFlavour(const UnrarFlavour &) = delete;
0027     UnrarFlavour &operator=(const UnrarFlavour &) = delete;
0028 
0029     virtual QStringList processListing(const QStringList &data) = 0;
0030     virtual QString name() const = 0;
0031 
0032     virtual ProcessArgs processListArgs(const QString &fileName) const = 0;
0033     virtual ProcessArgs processOpenArchiveArgs(const QString &fileName, const QString &path) const = 0;
0034 
0035     void setFileName(const QString &fileName);
0036 
0037 protected:
0038     UnrarFlavour();
0039 
0040     QString fileName() const;
0041 
0042 private:
0043     QString mFileName;
0044 };
0045 
0046 class NonFreeUnrarFlavour : public UnrarFlavour
0047 {
0048 public:
0049     NonFreeUnrarFlavour();
0050 
0051     QStringList processListing(const QStringList &data) override;
0052     QString name() const override;
0053 
0054     ProcessArgs processListArgs(const QString &fileName) const override;
0055     ProcessArgs processOpenArchiveArgs(const QString &fileName, const QString &path) const override;
0056 };
0057 
0058 class FreeUnrarFlavour : public UnrarFlavour
0059 {
0060 public:
0061     FreeUnrarFlavour();
0062 
0063     QStringList processListing(const QStringList &data) override;
0064     QString name() const override;
0065 
0066     ProcessArgs processListArgs(const QString &fileName) const override;
0067     ProcessArgs processOpenArchiveArgs(const QString &fileName, const QString &path) const override;
0068 };
0069 
0070 class UnarFlavour : public UnrarFlavour
0071 {
0072 public:
0073     UnarFlavour();
0074 
0075     QStringList processListing(const QStringList &data) override;
0076     QString name() const override;
0077 
0078     ProcessArgs processListArgs(const QString &fileName) const override;
0079     ProcessArgs processOpenArchiveArgs(const QString &fileName, const QString &path) const override;
0080 };
0081 
0082 #endif