File indexing completed on 2024-05-05 05:50:38
0001 /* 0002 SPDX-FileCopyrightText: 2016 Ragnar Thomsen <rthomsen6@gmail.com> 0003 0004 SPDX-License-Identifier: BSD-2-Clause 0005 */ 0006 0007 #include "adddialog.h" 0008 #include "archiveformat.h" 0009 #include "ark_debug.h" 0010 #include "mimetypes.h" 0011 0012 #include <QDialogButtonBox> 0013 #include <QPushButton> 0014 #include <QUrl> 0015 #include <QVBoxLayout> 0016 0017 namespace Kerfuffle 0018 { 0019 AddDialog::AddDialog(QWidget *parent, const QString &title, const QUrl &startDir, const QMimeType &mimeType, const CompressionOptions &opts) 0020 : QDialog(parent, Qt::Dialog) 0021 , m_mimeType(mimeType) 0022 , m_compOptions(opts) 0023 { 0024 qCDebug(ARK) << "AddDialog loaded with options:" << m_compOptions; 0025 0026 setWindowTitle(title); 0027 0028 QVBoxLayout *vlayout = new QVBoxLayout(this); 0029 m_fileWidget = new KFileWidget(startDir, this); 0030 vlayout->addWidget(m_fileWidget); 0031 0032 QPushButton *optionsButton = new QPushButton(QIcon::fromTheme(QStringLiteral("settings-configure")), i18n("Advanced Options")); 0033 optionsButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); 0034 m_fileWidget->setCustomWidget(optionsButton); 0035 0036 connect(optionsButton, &QPushButton::clicked, this, &AddDialog::slotOpenOptions); 0037 0038 m_fileWidget->setMode(KFile::Files | KFile::Directory | KFile::LocalOnly | KFile::ExistingOnly); 0039 m_fileWidget->setOperationMode(KFileWidget::Opening); 0040 0041 m_fileWidget->okButton()->setText(i18nc("@action:button", "Add")); 0042 m_fileWidget->okButton()->show(); 0043 connect(m_fileWidget->okButton(), &QPushButton::clicked, m_fileWidget, &KFileWidget::slotOk); 0044 connect(m_fileWidget, &KFileWidget::accepted, m_fileWidget, &KFileWidget::accept); 0045 connect(m_fileWidget, &KFileWidget::accepted, this, &QDialog::accept); 0046 0047 m_fileWidget->cancelButton()->show(); 0048 connect(m_fileWidget->cancelButton(), &QPushButton::clicked, this, &QDialog::reject); 0049 } 0050 0051 AddDialog::~AddDialog() 0052 { 0053 } 0054 0055 QStringList AddDialog::selectedFiles() const 0056 { 0057 return m_fileWidget->selectedFiles(); 0058 } 0059 0060 CompressionOptions AddDialog::compressionOptions() const 0061 { 0062 qCDebug(ARK) << "Returning with options:" << m_compOptions; 0063 return m_compOptions; 0064 } 0065 0066 void AddDialog::slotOpenOptions() 0067 { 0068 optionsDialog = new QDialog(this); 0069 QVBoxLayout *vlayout = new QVBoxLayout(optionsDialog); 0070 optionsDialog->setWindowTitle(i18n("Advanced Options")); 0071 0072 CompressionOptionsWidget *optionsWidget = new CompressionOptionsWidget(optionsDialog, m_compOptions); 0073 optionsWidget->setMimeType(m_mimeType); 0074 optionsWidget->setEncryptionVisible(false); 0075 optionsWidget->collapsibleMultiVolume->setVisible(false); 0076 optionsWidget->collapsibleCompression->expand(); 0077 vlayout->addWidget(optionsWidget); 0078 0079 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, optionsDialog); 0080 vlayout->addWidget(buttonBox); 0081 connect(buttonBox, &QDialogButtonBox::accepted, optionsDialog, &QDialog::accept); 0082 connect(buttonBox, &QDialogButtonBox::rejected, optionsDialog, &QDialog::reject); 0083 0084 optionsDialog->layout()->setSizeConstraint(QLayout::SetFixedSize); 0085 0086 connect(optionsDialog, &QDialog::finished, this, [this, optionsWidget](int result) { 0087 if (result == QDialog::Accepted) { 0088 m_compOptions = optionsWidget->commpressionOptions(); 0089 } 0090 optionsDialog->deleteLater(); 0091 }); 0092 0093 optionsDialog->open(); 0094 } 0095 0096 } 0097 0098 #include "moc_adddialog.cpp"