1 /***************************************************************************
2 * Copyright (C) 2008 by Jean-Baptiste Mardelle (jb@kdenlive.org) *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
21 #ifndef PROFILESDIALOG_H
22 #define PROFILESDIALOG_H
25 #include "definitions.h"
26 #include "ui_profiledialog_ui.h"
28 class ProfilesDialog : public QDialog
33 ProfilesDialog(QWidget * parent = 0);
35 void fillList(const QString selectedProfile = QString());
36 static QMap< QString, QString > getSettingsForProfile(const QString profileName);
37 static QMap< QString, QString > getSettingsFromFile(const QString path);
38 static QString getPathFromDescription(const QString profileDesc);
39 static MltVideoProfile getVideoProfile(QString name);
40 static QMap <QString, QString> getProfilesInfo();
41 static void saveProfile(MltVideoProfile &profile);
42 static QString existingProfile(MltVideoProfile profile);
43 static bool existingProfileDescription(const QString &desc);
45 /** @brief Check if a given profile matches passed properties:
46 * @param width The profile frame width
47 * @param height The profile frame height
48 * @param fps The profile fps
49 * @param par The sample aspect ratio
50 * @param isImage If true, compare width with profile's display width ( = dar * height)
51 * @param profile The profile to match
52 * @return true if properties match profile */
53 static bool matchProfile(int width, int height, double fps, double par, bool isImage, MltVideoProfile profile);
55 /** @brief Find a profile to match parameter properties:
56 * @param width The profile frame width
57 * @param height The profile frame height
58 * @param fps The profile fps
59 * @param par The sample aspect ratio
60 * @param useDisplayWidth If true, compare width with profile's display width ( = dar * height)
61 * @return A string list of the matching profiles description */
62 static QMap <QString, QString> getProfilesFromProperties(int width, int height, double fps, double par, bool useDisplayWidth = false);
64 /** @brief Returns an value from a string by replacing "%width" and "%height" with given profile values:
65 * @param profile The profile that gives width & height
66 * @param eval The string to be evaluated, for example: "%width / 2"
67 * @return the evaluated value */
68 static double getStringEval(const MltVideoProfile &profile, QString eval);
71 virtual void closeEvent(QCloseEvent *event);
74 void slotUpdateDisplay();
75 void slotCreateProfile();
76 bool slotSaveProfile();
77 void slotDeleteProfile();
78 void slotSetDefaultProfile();
79 void slotProfileEdited();
80 virtual void accept();
83 Ui::ProfilesDialog_UI m_view;
84 int m_selectedProfileIndex;
85 bool m_profileIsModified;
86 bool m_isCustomProfile;
87 void saveProfile(const QString path);