]> git.sesse.net Git - kdenlive/blobdiff - src/projectsettings.cpp
Fix crash when changing project profile
[kdenlive] / src / projectsettings.cpp
index 0fec99c79d6233f85637a54ce3c1f7feb7a41614..d6762537ec43cfa74e62754371eaf37b564927af 100644 (file)
@@ -65,17 +65,32 @@ ProjectSettings::ProjectSettings(ProjectList *projectlist, QStringList lumas, in
     video_thumbs->setChecked(KdenliveSettings::videothumbnails());
     audio_tracks->setValue(audiotracks);
     video_tracks->setValue(videotracks);
-    connect(enable_proxy, SIGNAL(toggled(bool)), proxy_params, SLOT(setVisible(bool)));
+    proxy_params->setMaximumHeight(QFontMetrics(font()).lineSpacing() * 5);
+    connect(generate_proxy, SIGNAL(toggled(bool)), proxy_minsize, SLOT(setEnabled(bool)));
+    connect(generate_imageproxy, SIGNAL(toggled(bool)), proxy_imageminsize, SLOT(setEnabled(bool)));
+    
     if (projectlist) {
-        enable_proxy->setChecked(projectlist->useProxy());
-        proxy_params->setText(projectlist->proxyParams());
-        proxy_params->setVisible(projectlist->useProxy());
+        enable_proxy->setChecked(projectlist->getDocumentProperty("enableproxy").toInt());
+        generate_proxy->setChecked(projectlist->getDocumentProperty("generateproxy").toInt());
+        proxy_minsize->setValue(projectlist->getDocumentProperty("proxyminsize").toInt());
+        proxy_params->setPlainText(projectlist->getDocumentProperty("proxyparams"));
+        generate_imageproxy->setChecked(projectlist->getDocumentProperty("generateimageproxy").toInt());
+        proxy_imageminsize->setValue(projectlist->getDocumentProperty("proxyimageminsize").toInt());
+        proxy_extension->setText(projectlist->getDocumentProperty("proxyextension"));
     }
     else {
         enable_proxy->setChecked(KdenliveSettings::enableproxy());
-        proxy_params->setText(KdenliveSettings::proxyparams());
-        proxy_params->setVisible(KdenliveSettings::enableproxy());
+        generate_proxy->setChecked(KdenliveSettings::generateproxy());
+        proxy_minsize->setValue(KdenliveSettings::proxyminsize());
+        proxy_params->setPlainText(KdenliveSettings::proxyparams());
+        generate_imageproxy->setChecked(KdenliveSettings::generateimageproxy());
+        proxy_imageminsize->setValue(KdenliveSettings::proxyimageminsize());
+        proxy_extension->setText(KdenliveSettings::proxyextension());
+      
     }
+
+    proxy_minsize->setEnabled(generate_proxy->isChecked());
+    proxy_imageminsize->setEnabled(generate_imageproxy->isChecked());
     
     if (readOnlyTracks) {
         video_tracks->setEnabled(false);
@@ -86,6 +101,7 @@ ProjectSettings::ProjectSettings(ProjectList *projectlist, QStringList lumas, in
         slotUpdateFiles();
         connect(clear_cache, SIGNAL(clicked()), this, SLOT(slotClearCache()));
         connect(delete_unused, SIGNAL(clicked()), this, SLOT(slotDeleteUnused()));
+        connect(delete_proxies, SIGNAL(clicked()), this, SLOT(slotDeleteProxies()));
     } else tabWidget->widget(1)->setEnabled(false);
     connect(profiles_list, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateDisplay()));
     connect(project_folder, SIGNAL(textChanged(const QString &)), this, SLOT(slotUpdateButton(const QString &)));
@@ -134,12 +150,26 @@ void ProjectSettings::slotClearCache()
     slotUpdateFiles(true);
 }
 
+void ProjectSettings::slotDeleteProxies()
+{
+    buttonBox->setEnabled(false);
+    
+    KIO::NetAccess::del(KUrl(project_folder->url().path(KUrl::AddTrailingSlash) + "proxy/"), this);
+    KStandardDirs::makeDir(project_folder->url().path(KUrl::AddTrailingSlash) + "proxy/");
+    buttonBox->setEnabled(true);
+    slotUpdateFiles(true);
+}
+
 void ProjectSettings::slotUpdateFiles(bool cacheOnly)
 {
-    KIO::DirectorySizeJob * job = KIO::directorySize(project_folder->url().path(KUrl::AddTrailingSlash) + "thumbs/");
+    KIO::DirectorySizeJob *job = KIO::directorySize(project_folder->url().path(KUrl::AddTrailingSlash) + "thumbs/");
     job->exec();
     thumbs_count->setText(QString::number(job->totalFiles()));
     thumbs_size->setText(KIO::convertSize(job->totalSize()));
+    job = KIO::directorySize(project_folder->url().path(KUrl::AddTrailingSlash) + "proxy/");
+    job->exec();
+    proxy_count->setText(QString::number(job->totalFiles()));
+    proxy_size->setText(KIO::convertSize(job->totalSize()));
     delete job;
     if (cacheOnly) return;
     int unused = 0;
@@ -320,11 +350,36 @@ bool ProjectSettings::useProxy() const
     return enable_proxy->isChecked();
 }
 
+bool ProjectSettings::generateProxy() const
+{
+    return generate_proxy->isChecked();
+}
+
+bool ProjectSettings::generateImageProxy() const
+{
+    return generate_imageproxy->isChecked();
+}
+
+int ProjectSettings::proxyMinSize() const
+{
+    return proxy_minsize->value();
+}
+
+int ProjectSettings::proxyImageMinSize() const
+{
+    return proxy_imageminsize->value();
+}
+
 QString ProjectSettings::proxyParams() const
 {
     return proxy_params->toPlainText();
 }
 
+QString ProjectSettings::proxyExtension() const
+{
+    return proxy_extension->text();
+}
+
 //static
 QStringList ProjectSettings::extractPlaylistUrls(QString path)
 {