File indexing completed on 2024-04-28 04:51:35
0001 /* 0002 SPDX-FileCopyrightText: 2023 Jean-Baptiste Mardelle <jb@kdenlive.org> 0003 0004 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include "definitions.h" 0010 #include "jobs/abstracttask.h" 0011 #include "ui_clipjobmanager_ui.h" 0012 0013 #include <KConfig> 0014 #include <QDialog> 0015 0016 /** 0017 * @class ClipJobManager 0018 * @brief A dialog for editing Bin Clip jobs. 0019 * @author Jean-Baptiste Mardelle 0020 */ 0021 0022 class ClipJobManager : public QDialog, public Ui::ClipJobManager_UI 0023 { 0024 Q_OBJECT 0025 0026 public: 0027 enum class JobCompletionAction { ReplaceOriginal = 0, RootFolder = 1, SubFolder = 2, NoAction = 3 }; 0028 0029 explicit ClipJobManager(AbstractTask::JOBTYPE type, QWidget *parent = nullptr); 0030 virtual ~ClipJobManager() override; 0031 static QMap<QString, QString> getClipJobNames(); 0032 /** @brief Returns the {wanted action, folder name} for clip job type @jobId */ 0033 static std::pair<JobCompletionAction, QString> getJobAction(const QString &jobId); 0034 /** @brief Resutrns the params list as {binary, parameters, output} for clip job type @jobId */ 0035 static QMap<QString, QString> getJobParameters(const QString &jobId); 0036 0037 private: 0038 /** @brief Populate the list view with jobs */ 0039 void loadJobs(); 0040 /** @brief Map of clip job ids */ 0041 QMap<QString, QString> m_ids; 0042 /** @brief Map of clip job params */ 0043 QMap<QString, QString> m_params; 0044 /** @brief Map of clip job folder names */ 0045 QMap<QString, QString> m_folderNames; 0046 /** @brief Map of clip job folder usage */ 0047 QMap<QString, QString> m_folderUse; 0048 /** @brief Map of clip job binaries */ 0049 QMap<QString, QString> m_binaries; 0050 /** @brief Map of clip job output pattern */ 0051 QMap<QString, QString> m_output; 0052 /** @brief Map of clip job enablements */ 0053 QMap<QString, QString> m_enableType; 0054 /** @brief Map of clip param types*/ 0055 QMap<QString, QString> m_param1Type; 0056 QMap<QString, QString> m_param2Type; 0057 /** @brief Map of clip param optional list*/ 0058 QMap<QString, QString> m_param1List; 0059 QMap<QString, QString> m_param2List; 0060 QMap<QString, QString> m_param1Name; 0061 QMap<QString, QString> m_param2Name; 0062 QMap<QString, QString> m_description; 0063 0064 /** @brief Sync a group to config file */ 0065 void writeGroup(KConfig &conf, const QString &groupName, QMap<QString, QString> values); 0066 /** @brief Remember current changes */ 0067 void saveCurrentPreset(); 0068 /** @brief Save all jobs to the config file */ 0069 void writePresetsToConfig(); 0070 0071 private Q_SLOTS: 0072 /** @brief Display a job's parameters */ 0073 void displayJob(int row); 0074 void setDirty(); 0075 void validate(); 0076 /** @brief Create a new Clip Job entry */ 0077 void addJob(); 0078 /** @brief Delete current Clip Job entry */ 0079 void deleteJob(); 0080 /** @brief Check if job name was edited and correctly store it */ 0081 void updateName(QListWidgetItem *item); 0082 /** @brief Check if the script file or application exists and is executable */ 0083 void checkScript(); 0084 0085 private: 0086 QString m_dirty; 0087 };