File indexing completed on 2024-04-28 03:43:17

0001 /*
0002     SPDX-FileCopyrightText: 2020 Jasem Mutlaq <mutlaqja@ikarustech.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include <QFileDialog>
0008 #include <QFileInfo>
0009 
0010 #include "scriptsmanager.h"
0011 #include "ui_scriptsmanager.h"
0012 #include "auxiliary/ksnotification.h"
0013 
0014 #include "scriptsmanager.h"
0015 #include "ui_scriptsmanager.h"
0016 
0017 namespace Ekos
0018 {
0019 ScriptsManager::ScriptsManager(QWidget *parent) :
0020     QDialog(parent),
0021     ui(new Ui::ScriptsManager)
0022 {
0023     ui->setupUi(this);
0024 
0025     connect(ui->preJobB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts);
0026     connect(ui->postJobB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts);
0027     connect(ui->preCaptureB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts);
0028     connect(ui->postCaptureB, &QPushButton::clicked, this, &ScriptsManager::handleSelectScripts);
0029 
0030     connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
0031     connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
0032 }
0033 
0034 void ScriptsManager::handleSelectScripts()
0035 {
0036     QPushButton *button = qobject_cast<QPushButton*>(sender());
0037     if (!button)
0038         return;
0039 
0040     QString title;
0041     if (button == ui->preJobB)
0042         title = i18nc("@title:window", "Pre Job Script");
0043     else if (button == ui->postJobB)
0044         title = i18nc("@title:window", "Post Job Script");
0045     else if (button == ui->postCaptureB)
0046         title = i18nc("@title:window", "Post Capture Script");
0047     else if (button == ui->preCaptureB)
0048         title = i18nc("@title:window", "Pre Capture Script");
0049 
0050     QUrl url = QFileDialog::getOpenFileUrl(this, title);
0051     if (!url.isValid())
0052         return;
0053 
0054     QString localFile = url.toLocalFile();
0055     QFileInfo info(localFile);
0056 
0057     if (info.permission(QFileDevice::ExeOwner) == false)
0058     {
0059         KSNotification::error(i18n("File %1 is not executable.", localFile));
0060         return;
0061     }
0062 
0063     if (button == ui->preJobB)
0064         ui->preJobScript->setText(localFile);
0065     else if (button == ui->postJobB)
0066         ui->postJobScript->setText(localFile);
0067     else if (button == ui->postCaptureB)
0068         ui->postCaptureScript->setText(localFile);
0069     else if (button == ui->preCaptureB)
0070         ui->preCaptureScript->setText(localFile);
0071 
0072     connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
0073     connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
0074 }
0075 
0076 void ScriptsManager::setScripts(const QMap<ScriptTypes, QString> &scripts)
0077 {
0078     ui->preJobScript->setText(scripts[SCRIPT_PRE_JOB]);
0079     ui->postJobScript->setText(scripts[SCRIPT_POST_JOB]);
0080     ui->preCaptureScript->setText(scripts[SCRIPT_PRE_CAPTURE]);
0081     ui->postCaptureScript->setText(scripts[SCRIPT_POST_CAPTURE]);
0082 }
0083 
0084 QMap<ScriptTypes, QString> ScriptsManager::getScripts()
0085 {
0086     QMap<ScriptTypes, QString> scripts;
0087 
0088     scripts[SCRIPT_PRE_JOB] = ui->preJobScript->text();
0089     scripts[SCRIPT_POST_JOB] = ui->postJobScript->text();
0090     scripts[SCRIPT_PRE_CAPTURE] = ui->preCaptureScript->text();
0091     scripts[SCRIPT_POST_CAPTURE] = ui->postCaptureScript->text();
0092 
0093     return scripts;
0094 }
0095 
0096 ScriptsManager::~ScriptsManager()
0097 {
0098     delete ui;
0099 }
0100 
0101 }