]> git.sesse.net Git - kdenlive/commitdiff
Ask for profile on new document
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 8 Mar 2008 18:56:19 +0000 (18:56 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 8 Mar 2008 18:56:19 +0000 (18:56 +0000)
svn path=/branches/KDE4/; revision=2020

src/mainwindow.cpp
src/profilesdialog.cpp
src/profilesdialog.h
src/projectsettings.cpp
src/projectsettings.h
src/widgets/projectsettings_ui.ui

index c097243143019122d138b8664680b41a2530e0ff..d442ffb35002c664957a52f436c2256feab8a1b4 100644 (file)
@@ -316,7 +316,15 @@ void MainWindow::readOptions() {
 }
 
 void MainWindow::newFile() {
-    MltVideoProfile prof = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile());
+    QString profileName;
+    if (m_timelineArea->count() == 0) profileName = KdenliveSettings::default_profile();
+    else {
+        ProjectSettings *w = new ProjectSettings;
+        w->exec();
+        profileName = w->selectedProfile();
+        delete w;
+    }
+    MltVideoProfile prof = ProfilesDialog::getVideoProfile(profileName);
     if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal");
     KdenliveDoc *doc = new KdenliveDoc(KUrl(), prof, m_commandStack);
     TrackView *trackView = new TrackView(doc);
index 0f338a0de2560d0f9c307445611dde5c17e465ed..6bec5c5badf1a48e3bbe3340a0840037470591f4 100644 (file)
@@ -204,6 +204,35 @@ QMap< QString, QString > ProfilesDialog::getSettingsForProfile(const QString pro
     return QMap< QString, QString >();
 }
 
+// static
+QString ProfilesDialog::getPathFromDescription(const QString profileDesc) {
+    QStringList profilesNames;
+    QStringList profilesFiles;
+    QStringList profilesFilter;
+    profilesFilter << "*";
+
+    // List the Mlt profiles
+    profilesFiles = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files);
+    for (int i = 0; i < profilesFiles.size(); ++i) {
+        KConfig confFile(KdenliveSettings::mltpath() + "/" + profilesFiles.at(i));
+        QMap< QString, QString > values = confFile.entryMap();
+        if (values.value("description") == profileDesc) return profilesFiles.at(i);
+    }
+
+    // List custom profiles
+    QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles");
+    for (int i = 0; i < customProfiles.size(); ++i) {
+        QStringList profiles = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files);
+        for (int i = 0; i < profiles.size(); ++i) {
+            KConfig confFile(customProfiles.at(i) + "/" + profiles.at(i));
+            QMap< QString, QString > values = confFile.entryMap();
+            if (values.value("description") == profileDesc) return customProfiles.at(i) + "/" + profiles.at(i);
+        }
+    }
+    return QString();
+}
+
+
 void ProfilesDialog::slotUpdateDisplay() {
     QString currentProfile = m_view.profiles_list->currentText();
     QString currentProfilePath;
index 0046104e01fb628e91c0adbcf5813a7295809f96..2e0d032b10207d42bb27415e964fdec382628383 100644 (file)
@@ -36,6 +36,7 @@ public:
     static QString getProfileDescription(QString name);
     static QMap< QString, QString > getSettingsForProfile(const QString profileName);
     static QMap< QString, QString > getSettingsFromFile(const QString path);
+    static QString getPathFromDescription(const QString profileDesc);
     static MltVideoProfile getVideoProfile(QString name);
 
 private slots:
index 1a3988a031fb66f1e173b02659415cdefed0bc2d..1aaa15e23b405ec6370715aa5690ccde25efb995 100644 (file)
@@ -31,11 +31,16 @@ ProjectSettings::ProjectSettings(QWidget * parent): QDialog(parent), m_isCustomP
 
     QStringList profilesNames = ProfilesDialog::getProfileNames();
     m_view.profiles_list->addItems(profilesNames);
+    m_view.project_folder->setMode(KFile::Directory);
     QString defaulfProf = ProfilesDialog::getSettingsFromFile(KdenliveSettings::current_profile()).value("description");
     if (profilesNames.contains(defaulfProf)) m_view.profiles_list->setCurrentItem(defaulfProf);
-
+    buttonOk = m_view.buttonBox->button(QDialogButtonBox::Ok);
+    //buttonOk->setEnabled(false);
+    m_view.audio_thumbs->setChecked(KdenliveSettings::audiothumbnails());
+    m_view.video_thumbs->setChecked(KdenliveSettings::videothumbnails());
     slotUpdateDisplay();
     connect(m_view.profiles_list, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateDisplay()));
+    connect(m_view.project_folder, SIGNAL(textChanged(const QString &)), this, SLOT(slotUpdateButton(const QString &)));
 }
 
 
@@ -50,6 +55,14 @@ void ProjectSettings::slotUpdateDisplay() {
     else m_view.p_progressive->setText(i18n("Progressive"));
 }
 
+void ProjectSettings::slotUpdateButton(const QString &path) {
+    if (path.isEmpty()) buttonOk->setEnabled(false);
+    else buttonOk->setEnabled(true);
+}
+
+QString ProjectSettings::selectedProfile() {
+    return ProfilesDialog::getPathFromDescription(m_view.profiles_list->currentText());
+}
 
 #include "projectsettings.moc"
 
index e165d47bbbcabf4434f07a6f30ee7773c109fc1b..a36f50c542c2f73305f6ebb54243c232763ddc62 100644 (file)
@@ -22,6 +22,7 @@
 #define PROJECTSETTINGS_H
 
 #include <QDialog>
+#include <QPushButton>
 
 #include "ui_projectsettings_ui.h"
 
@@ -30,15 +31,18 @@ class ProjectSettings : public QDialog {
 
 public:
     ProjectSettings(QWidget * parent = 0);
+    QString selectedProfile();
 
 private slots:
     void slotUpdateDisplay();
+    void slotUpdateButton(const QString &path);
 
 private:
     Ui::ProjectSettings_UI m_view;
     QStringList m_mltProfilesList;
     QStringList m_customProfilesList;
     bool m_isCustomProfile;
+    QPushButton *buttonOk;
 };
 
 
index fce04a4e8592cfcfa63bc6f15e6f21fcafc1bc64..ff5c8ba40913ddda474bccba85a043271a671f17 100644 (file)
@@ -5,25 +5,25 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>475</width>
-    <height>333</height>
+    <width>370</width>
+    <height>257</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <string>Project Settings</string>
   </property>
   <layout class="QGridLayout" name="gridLayout_3" >
-   <item row="0" column="0" >
-    <widget class="QLabel" name="label_11" >
+   <item row="0" column="0" colspan="2" >
+    <widget class="QLabel" name="label_4" >
      <property name="text" >
       <string>Project folder</string>
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="3" >
-    <widget class="KUrlRequester" name="kurlrequester" />
+   <item row="0" column="2" colspan="3" >
+    <widget class="KUrlRequester" name="project_folder" />
    </item>
-   <item row="1" column="0" colspan="4" >
+   <item row="1" column="0" colspan="5" >
     <widget class="QGroupBox" name="properties" >
      <property name="title" >
       <string>Video Profile</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="1" >
+   <item row="2" column="1" colspan="2" >
     <widget class="QCheckBox" name="video_thumbs" >
      <property name="text" >
       <string>Video</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="2" >
+   <item row="2" column="3" >
     <widget class="QCheckBox" name="audio_thumbs" >
      <property name="text" >
       <string>Audio</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="3" >
+   <item row="2" column="4" >
     <spacer name="horizontalSpacer" >
      <property name="orientation" >
       <enum>Qt::Horizontal</enum>
      </property>
     </spacer>
    </item>
-   <item row="3" column="0" colspan="4" >
+   <item row="3" column="0" colspan="5" >
     <spacer name="verticalSpacer" >
      <property name="orientation" >
       <enum>Qt::Vertical</enum>
      </property>
     </spacer>
    </item>
-   <item row="4" column="1" colspan="3" >
+   <item row="4" column="1" colspan="4" >
     <widget class="QDialogButtonBox" name="buttonBox" >
      <property name="orientation" >
       <enum>Qt::Horizontal</enum>