File indexing completed on 2024-03-24 05:43:54
0001 /* 0002 SPDX-FileCopyrightText: 2020 Nikolai Krasheninnikov <nkrasheninnikov@yandex.ru> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "svncleanupdialog.h" 0008 0009 #include <QFileDialog> 0010 #include <QFileInfo> 0011 #include <QDebug> 0012 0013 #include "svncommands.h" 0014 0015 SvnCleanupDialog::SvnCleanupDialog(const QString& workingDir, QWidget *parent) : 0016 QDialog(parent) 0017 { 0018 m_ui.setupUi(this); 0019 0020 /* 0021 * Add actions, establish connections. 0022 */ 0023 connect(m_ui.buttonCancel, &QPushButton::clicked, this, &QDialog::reject); 0024 QAction *pickDirectory = m_ui.lineEditDirectory->addAction(QIcon::fromTheme(QStringLiteral("folder")), QLineEdit::TrailingPosition); 0025 connect(pickDirectory, &QAction::triggered, this, [this] () { 0026 const QString dir = QFileDialog::getExistingDirectory(this, i18nc("@title:window", "Choose a directory to clean up"), 0027 m_ui.lineEditDirectory->text(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); 0028 0029 if (!dir.isEmpty()) { 0030 m_ui.lineEditDirectory->setText(dir); 0031 } 0032 } ); 0033 0034 /* 0035 * Additional setup. 0036 */ 0037 m_ui.lineEditDirectory->setText(workingDir); 0038 0039 setAttribute(Qt::WA_DeleteOnClose); 0040 show(); 0041 activateWindow(); 0042 } 0043 0044 SvnCleanupDialog::~SvnCleanupDialog() = default; 0045 0046 void SvnCleanupDialog::on_lineEditDirectory_textChanged(const QString &text) 0047 { 0048 m_ui.buttonOk->setEnabled(QFileInfo(text).isDir()); 0049 } 0050 0051 void SvnCleanupDialog::on_buttonOk_clicked() 0052 { 0053 const QString workDir = m_ui.lineEditDirectory->text(); 0054 const bool removeUnversioned = m_ui.checkBoxUnversioned->isChecked(); 0055 const bool removeIgnored = m_ui.checkBoxIgnored->isChecked(); 0056 const bool includeExternals = m_ui.checkBoxExternals->isChecked(); 0057 0058 const CommandResult result = SvnCommands::cleanup(workDir, removeUnversioned, removeIgnored, includeExternals); 0059 if (result.success) { 0060 Q_EMIT operationCompletedMessage(i18nc("@info:status", "SVN clean up completed successfully.")); 0061 } else { 0062 Q_EMIT errorMessage(i18nc("@info:status", "SVN clean up failed for %1", workDir)); 0063 qDebug() << result.stdErr; 0064 } 0065 0066 QDialog::accept(); 0067 } 0068 0069 #include "moc_svncleanupdialog.cpp"