1 /*
2     SPDX-FileCopyrightText: 2016 Ragnar Thomsen <rthomsen6@gmail.com>
3 
4     SPDX-License-Identifier: BSD-2-Clause
5 */
6 
7 #ifndef COMPRESSIONOPTIONSWIDGET_H
8 #define COMPRESSIONOPTIONSWIDGET_H
9 
10 #include "kerfuffle_export.h"
11 #include "archive_kerfuffle.h"
12 #include "archiveformat.h"
13 #include "ui_compressionoptionswidget.h"
14 
15 #include <QMimeType>
16 #include <QWidget>
17 
18 namespace Kerfuffle
19 {
20 class KERFUFFLE_EXPORT CompressionOptionsWidget : public QWidget, public Ui::CompressionOptionsWidget
21 {
22     Q_OBJECT
23 
24 public:
25     explicit CompressionOptionsWidget(QWidget *parent = nullptr,
26                                       const CompressionOptions &opts = {});
27     int compressionLevel() const;
28     QString compressionMethod() const;
29     QString encryptionMethod() const;
30     ulong volumeSize() const;
31     QString password() const;
32     CompressionOptions commpressionOptions() const;
33     bool isEncryptionAvailable() const;
34     bool isEncryptionEnabled() const;
35     bool isHeaderEncryptionAvailable() const;
36     bool isHeaderEncryptionEnabled() const;
37     KNewPasswordWidget::PasswordStatus passwordStatus() const;
38 
39     void setEncryptionVisible(bool visible);
40     void setMimeType(const QMimeType &mimeType);
41 
42 private:
43     void updateWidgets();
44     ArchiveFormat archiveFormat() const;
45 
46     QMimeType m_mimetype;
47     CompressionOptions m_opts;
48 
49 private Q_SLOTS:
50     void slotMultiVolumeChecked(int state);
51     void slotCompMethodChanged(const QString &value);
52     void slotEncryptionMethodChanged(const QString &value);
53 };
54 }
55 
56 #endif
57