File indexing completed on 2024-04-21 04:51:19

0001 /*
0002     SPDX-FileCopyrightText: 2008 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 <KConfigGroup>
0010 
0011 #include "definitions.h"
0012 #include "ui_manageencodingprofile_ui.h"
0013 
0014 class KMessageWidget;
0015 
0016 class EncodingProfilesManager
0017 {
0018 
0019 public:
0020     enum ProfileType {
0021         ProxyClips = 0,
0022         TimelinePreview = 1,
0023         V4LCapture = 2,
0024         ScreenCapture = 3,
0025         DecklinkCapture = 4
0026     };
0027 
0028     static QString configGroupName(ProfileType type);
0029 };
0030 
0031 class EncodingProfilesDialog : public QDialog, Ui::ManageEncodingProfile_UI
0032 {
0033     Q_OBJECT
0034 
0035 public:
0036     explicit EncodingProfilesDialog(EncodingProfilesManager::ProfileType profileType, QWidget *parent = nullptr);
0037     ~EncodingProfilesDialog() override;
0038 
0039 private Q_SLOTS:
0040     void slotLoadProfiles();
0041     void slotShowParams();
0042     void slotDeleteProfile();
0043     void slotAddProfile();
0044     void slotEditProfile();
0045 
0046 private:
0047     KConfig *m_configFile;
0048     KConfigGroup *m_configGroup;
0049 };
0050 
0051 class EncodingProfilesChooser : public QWidget
0052 {
0053     Q_OBJECT
0054 
0055 public:
0056     EncodingProfilesChooser(QWidget *parent, EncodingProfilesManager::ProfileType, bool showAutoItem = false, const QString &configname = {},
0057                             bool native = true);
0058     QString currentExtension();
0059     QString currentParams();
0060     void hideMessage();
0061     /** @brief Only enable preview profiles with matching framerate */
0062     virtual void filterPreviewProfiles(const QString & /*profile*/);
0063 
0064 public Q_SLOTS:
0065     void slotUpdateProfile(int ix);
0066 
0067 protected:
0068     QComboBox *m_profilesCombo;
0069     EncodingProfilesManager::ProfileType m_type;
0070     bool m_showAutoItem;
0071     KMessageWidget *m_messageWidget;
0072 
0073 private:
0074     QPlainTextEdit *m_info;
0075 
0076 private Q_SLOTS:
0077     void slotManageEncodingProfile();
0078     virtual void loadEncodingProfiles();
0079 };
0080 
0081 class EncodingTimelinePreviewProfilesChooser : public EncodingProfilesChooser
0082 {
0083     Q_OBJECT
0084 
0085 public:
0086     EncodingTimelinePreviewProfilesChooser(QWidget *parent, bool showAutoItem = false, const QString &defaultValue = {}, bool selectFromConfig = false);
0087     /** @brief Only enable preview profiles with matching framerate */
0088     void filterPreviewProfiles(const QString &profile) override;
0089 
0090 private Q_SLOTS:
0091     void loadEncodingProfiles() override;
0092 
0093 Q_SIGNALS:
0094     void currentIndexChanged();
0095 };