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 ***************************************************************************/
22 #include <KStandardDirs>
25 #include "kdenlivesettings.h"
26 #include "profilesdialog.h"
28 ProfilesDialog::ProfilesDialog(QWidget * parent): QDialog(parent), m_isCustomProfile(false) {
31 QStringList profilesFilter;
32 profilesFilter << "*";
34 // List the Mlt profiles
35 m_mltProfilesList = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files);
36 m_view.profiles_list->addItems(m_mltProfilesList);
38 // List custom profiles
39 QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles");
40 for (int i = 0; i < customProfiles.size(); ++i)
41 m_customProfilesList << QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
42 m_view.profiles_list->addItems(m_customProfilesList);
44 if (!KdenliveSettings::default_profile().isEmpty()) {
45 int ix = m_view.profiles_list->findText(KdenliveSettings::default_profile());
46 m_view.profiles_list->setCurrentIndex(ix);
49 connect(m_view.profiles_list, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateDisplay()));
54 QString ProfilesDialog::getProfileDescription(QString name) {
55 QStringList profilesNames;
56 QStringList profilesFiles;
57 QStringList profilesFilter;
58 profilesFilter << "*";
60 // List the Mlt profiles
61 profilesFiles = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files);
62 if (profilesFiles.contains(name)) {
63 KConfig confFile(KdenliveSettings::mltpath() + "/" + name);
64 return confFile.entryMap().value("description");
67 // List custom profiles
68 QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles");
69 for (int i = 0; i < customProfiles.size(); ++i) {
70 profilesFiles = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
71 if (profilesFiles.contains(name)) {
72 KConfig confFile(customProfiles.at(i) + "/" + name);
73 return confFile.entryMap().value("description");
81 QStringList ProfilesDialog::getProfileNames() {
82 QStringList profilesNames;
83 QStringList profilesFiles;
84 QStringList profilesFilter;
85 profilesFilter << "*";
87 // List the Mlt profiles
88 profilesFiles = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files);
89 for (int i = 0; i < profilesFiles.size(); ++i) {
90 KConfig confFile(KdenliveSettings::mltpath() + "/" + profilesFiles.at(i));
91 QString desc = confFile.entryMap().value("description");
92 if (!desc.isEmpty()) profilesNames.append(desc);
95 // List custom profiles
96 QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles");
97 for (int i = 0; i < customProfiles.size(); ++i) {
98 profilesFiles = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
99 for (int i = 0; i < profilesFiles.size(); ++i) {
100 KConfig confFile(customProfiles.at(i) + "/" + profilesFiles.at(i));
101 QString desc = confFile.entryMap().value("description");
102 if (!desc.isEmpty()) profilesNames.append(desc);
106 return profilesNames;
110 QMap< QString, QString > ProfilesDialog::getSettingsFromFile(const QString path) {
111 QStringList profilesNames;
112 QStringList profilesFiles;
113 QStringList profilesFilter;
114 profilesFilter << "*";
116 // List the Mlt profiles
117 profilesFiles = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files);
118 for (int i = 0; i < profilesFiles.size(); ++i) {
119 if (profilesFiles.at(i) == path) {
120 KConfig confFile(KdenliveSettings::mltpath() + "/" + profilesFiles.at(i));
121 return confFile.entryMap();
125 // List custom profiles
126 QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles");
127 for (int i = 0; i < customProfiles.size(); ++i) {
128 QStringList profiles = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
129 for (int i = 0; i < profiles.size(); ++i) {
130 if (profiles.at(i) == path) {
131 KConfig confFile(customProfiles.at(i) + "/" + profiles.at(i));
132 return confFile.entryMap();
136 return QMap< QString, QString >();
140 QMap< QString, QString > ProfilesDialog::getSettingsForProfile(const QString profileName) {
141 QStringList profilesNames;
142 QStringList profilesFiles;
143 QStringList profilesFilter;
144 profilesFilter << "*";
146 // List the Mlt profiles
147 profilesFiles = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files);
148 for (int i = 0; i < profilesFiles.size(); ++i) {
149 KConfig confFile(KdenliveSettings::mltpath() + "/" + profilesFiles.at(i));
150 QMap< QString, QString > values = confFile.entryMap();
151 if (values.value("description") == profileName) return values;
154 // List custom profiles
155 QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles");
156 for (int i = 0; i < customProfiles.size(); ++i) {
157 QStringList profiles = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
158 for (int i = 0; i < profiles.size(); ++i) {
159 KConfig confFile(customProfiles.at(i) + "/" + profiles.at(i));
160 QMap< QString, QString > values = confFile.entryMap();
161 if (values.value("description") == profileName) return values;
164 return QMap< QString, QString >();
167 void ProfilesDialog::slotUpdateDisplay() {
168 QString currentProfile = m_view.profiles_list->currentText();
169 QString currentProfilePath;
170 if (m_mltProfilesList.indexOf(currentProfile) != -1) {
171 currentProfilePath = KdenliveSettings::mltpath() + "/" + currentProfile;
172 m_isCustomProfile = false;
174 m_isCustomProfile = true;
175 QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "mltprofiles");
176 QStringList profilesFilter;
177 profilesFilter << "*";
179 for (i = 0; i < customProfiles.size(); ++i) {
180 QStringList profs = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
181 if (profs.indexOf(currentProfile) != -1) break;
183 currentProfilePath = customProfiles.at(i) + "/" + currentProfile;
185 m_view.button_delete->setEnabled(m_isCustomProfile);
186 m_view.properties->setEnabled(m_isCustomProfile);
188 KConfig confFile(currentProfilePath);
189 QMap< QString, QString > values = confFile.entryMap();
190 m_view.description->setText(values.value("description"));
191 m_view.size_w->setValue(values.value("width").toInt());
192 m_view.size_h->setValue(values.value("height").toInt());
193 m_view.aspect_num->setValue(values.value("sample_aspect_num").toInt());
194 m_view.aspect_den->setValue(values.value("sample_aspect_den").toInt());
195 m_view.display_num->setValue(values.value("display_aspect_num").toInt());
196 m_view.display_den->setValue(values.value("display_aspect_den").toInt());
197 m_view.frame_num->setValue(values.value("frame_rate_num").toInt());
198 m_view.frame_den->setValue(values.value("frame_rate_den").toInt());
199 m_view.progressive->setChecked(values.value("progressive").toInt());
204 #include "profilesdialog.moc"