From kde-commits Thu Jun 30 21:10:13 2016 From: Jean-Baptiste Mardelle Date: Thu, 30 Jun 2016 21:10:13 +0000 To: kde-commits Subject: [kdenlive] src: Allow selection of a default timeline preview profile Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=146732102309966 Git commit ef2494e369ecaf392d351d7ac7888af16905ca58 by Jean-Baptiste Mardel= le. Committed on 30/06/2016 at 21:09. Pushed by mardelle into branch 'master'. Allow selection of a default timeline preview profile CCBUG: 364936 M +60 -8 src/dialogs/kdenlivesettingsdialog.cpp M +1 -0 src/dialogs/kdenlivesettingsdialog.h M +7 -0 src/doc/kdenlivedoc.cpp M +14 -0 src/kdenlivesettings.kcfg M +3 -1 src/project/dialogs/projectsettings.cpp M +60 -9 src/ui/configproject_ui.ui M +66 -86 src/ui/configtimeline_ui.ui http://commits.kde.org/kdenlive/ef2494e369ecaf392d351d7ac7888af16905ca58 diff --git a/src/dialogs/kdenlivesettingsdialog.cpp b/src/dialogs/kdenlives= ettingsdialog.cpp index 1bdd060..f5faa87 100644 --- a/src/dialogs/kdenlivesettingsdialog.cpp +++ b/src/dialogs/kdenlivesettingsdialog.cpp @@ -282,7 +282,17 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const Q= Map& map act =3D new QAction(KoIconUtils::themedIcon(QStringLiteral("configure"= )), i18n("Configure profiles"), this); act->setData(1); connect(act, SIGNAL(triggered(bool)), this, SLOT(slotManageEncodingPro= file())); - m_configTimeline.tl_manageprofile->setDefaultAction(act); + m_configProject.preview_manageprofile->setDefaultAction(act); + connect(m_configProject.kcfg_preview_profile, SIGNAL(currentIndexChang= ed(int)), this, SLOT(slotUpdatePreviewProfile())); + connect(m_configProject.preview_showprofileinfo, SIGNAL(clicked(bool))= , m_configProject.previewparams, SLOT(setVisible(bool))); + m_configProject.previewparams->setVisible(false); + m_configProject.previewparams->setMaximumHeight(QFontMetrics(font()).l= ineSpacing() * 3); + m_configProject.previewparams->setPlainText(KdenliveSettings::previewp= arams()); + m_configProject.preview_showprofileinfo->setIcon(KoIconUtils::themedIc= on(QStringLiteral("help-about"))); + m_configProject.preview_showprofileinfo->setToolTip(i18n("Show default= timeline preview parameters")); + m_configProject.preview_manageprofile->setIcon(KoIconUtils::themedIcon= (QStringLiteral("configure"))); + m_configProject.preview_manageprofile->setToolTip(i18n("Manage timelin= e preview profiles")); + m_configProject.kcfg_preview_profile->setToolTip(i18n("Select default = timeline preview profile")); = // Project profile management m_configProject.manage_profiles->setIcon(KoIconUtils::themedIcon("conf= igure")); @@ -296,7 +306,7 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const QM= ap& map m_configProject.proxy_manageprofile->setToolTip(i18n("Manage proxy pro= files")); m_configProject.kcfg_proxy_profile->setToolTip(i18n("Select default pr= oxy profile")); m_configProject.proxyparams->setVisible(false); - m_configProject.proxyparams->setMaximumHeight(QFontMetrics(font()).lin= eSpacing() * 4); + m_configProject.proxyparams->setMaximumHeight(QFontMetrics(font()).lin= eSpacing() * 3); m_configProject.proxyparams->setPlainText(KdenliveSettings::proxyparam= s()); = act =3D new QAction(KoIconUtils::themedIcon(QStringLiteral("configure"= )), i18n("Configure profiles"), this); @@ -800,6 +810,13 @@ void KdenliveSettingsDialog::updateSettings() KdenliveSettings::setProxyextension(data.section(';', 1, 1)); } = + // timeline preview + data =3D m_configProject.kcfg_preview_profile->itemData(m_configProjec= t.kcfg_preview_profile->currentIndex()).toString(); + if (!data.isEmpty() && (data.section(';', 0, 0) !=3D KdenliveSettings:= :previewparams() || data.section(';', 1, 1) !=3D KdenliveSettings::previewe= xtension())) { + KdenliveSettings::setPreviewparams(data.section(';', 0, 0)); + KdenliveSettings::setPreviewextension(data.section(';', 1, 1)); + } + if (updateCapturePath) emit updateCaptureFolder(); if (updateLibrary) emit updateLibraryFolder(); = @@ -1219,6 +1236,27 @@ void KdenliveSettingsDialog::loadEncodingProfiles() } m_configCapture.kcfg_decklink_profile->blockSignals(false); if (!currentItem.isEmpty()) m_configCapture.kcfg_decklink_profile->set= CurrentIndex(m_configCapture.kcfg_decklink_profile->findText(currentItem)); + = + // Load Timeline Preview profiles + m_configProject.kcfg_preview_profile->blockSignals(true); + currentItem =3D m_configProject.kcfg_preview_profile->currentText(); + m_configProject.kcfg_preview_profile->clear(); + KConfigGroup group5(&conf, "timelinepreview"); + values =3D group5.entryMap(); + m_configProject.kcfg_preview_profile->addItem(i18n("Automatic")); + QMapIterator l(values); + while (l.hasNext()) { + l.next(); + if (!l.key().isEmpty()) m_configProject.kcfg_preview_profile->addI= tem(l.key(), l.value()); + } + if (!currentItem.isEmpty()) m_configProject.kcfg_preview_profile->setC= urrentIndex(m_configProject.kcfg_preview_profile->findText(currentItem)); + m_configProject.kcfg_preview_profile->blockSignals(false); + QString data =3D m_configProject.kcfg_preview_profile->itemData(m_conf= igProject.kcfg_preview_profile->currentIndex()).toString(); + if (data.isEmpty()) { + m_configProject.previewparams->clear(); + } else { + m_configProject.previewparams->setPlainText(data.section(';', 0, 0= )); + } = // Load Proxy profiles m_configProject.kcfg_proxy_profile->blockSignals(true); @@ -1226,14 +1264,19 @@ void KdenliveSettingsDialog::loadEncodingProfiles() m_configProject.kcfg_proxy_profile->clear(); KConfigGroup group4(&conf, "proxy"); values =3D group4.entryMap(); - QMapIterator l(values); - while (l.hasNext()) { - l.next(); - if (!l.key().isEmpty()) m_configProject.kcfg_proxy_profile->addIte= m(l.key(), l.value()); + QMapIterator m(values); + while (m.hasNext()) { + m.next(); + if (!m.key().isEmpty()) m_configProject.kcfg_proxy_profile->addIte= m(m.key(), m.value()); } if (!currentItem.isEmpty()) m_configProject.kcfg_proxy_profile->setCur= rentIndex(m_configProject.kcfg_proxy_profile->findText(currentItem)); m_configProject.kcfg_proxy_profile->blockSignals(false); - slotUpdateProxyProfile(); + data =3D m_configProject.kcfg_proxy_profile->itemData(m_configProject.= kcfg_proxy_profile->currentIndex()).toString(); + if (data.isEmpty()) { + m_configProject.proxyparams->clear(); + } else { + m_configProject.proxyparams->setPlainText(data.section(';', 0, 0)); + } } = void KdenliveSettingsDialog::slotUpdateDecklinkProfile(int ix) @@ -1268,13 +1311,22 @@ void KdenliveSettingsDialog::slotUpdateGrabProfile(= int ix) = void KdenliveSettingsDialog::slotUpdateProxyProfile(int ix) { - if (ix =3D=3D -1) ix =3D KdenliveSettings::v4l_profile(); + if (ix =3D=3D -1) ix =3D KdenliveSettings::proxy_profile(); else ix =3D m_configProject.kcfg_proxy_profile->currentIndex(); QString data =3D m_configProject.kcfg_proxy_profile->itemData(ix).toSt= ring(); if (data.isEmpty()) return; m_configProject.proxyparams->setPlainText(data.section(';', 0, 0)); } = +void KdenliveSettingsDialog::slotUpdatePreviewProfile(int ix) +{ + if (ix =3D=3D -1) ix =3D KdenliveSettings::preview_profile(); + else ix =3D m_configProject.kcfg_preview_profile->currentIndex(); + QString data =3D m_configProject.kcfg_preview_profile->itemData(ix).to= String(); + if (data.isEmpty()) return; + m_configProject.previewparams->setPlainText(data.section(';', 0, 0)); +} + void KdenliveSettingsDialog::slotEditVideo4LinuxProfile() { QString vl4ProfilePath =3D QStandardPaths::writableLocation(QStandardP= aths::DataLocation) + "/profiles/video4linux"; diff --git a/src/dialogs/kdenlivesettingsdialog.h b/src/dialogs/kdenliveset= tingsdialog.h index 129a951..ca243af 100644 --- a/src/dialogs/kdenlivesettingsdialog.h +++ b/src/dialogs/kdenlivesettingsdialog.h @@ -77,6 +77,7 @@ private slots: void slotManageEncodingProfile(); void slotUpdateDecklinkProfile(int ix =3D 0); void slotUpdateProxyProfile(int ix =3D 0); + void slotUpdatePreviewProfile(int ix =3D 0); void slotUpdateV4lProfile(int ix =3D 0); void slotUpdateGrabProfile(int ix =3D 0); void slotEditVideo4LinuxProfile(); diff --git a/src/doc/kdenlivedoc.cpp b/src/doc/kdenlivedoc.cpp index 0ce9262..ff7ffde 100644 --- a/src/doc/kdenlivedoc.cpp +++ b/src/doc/kdenlivedoc.cpp @@ -130,6 +130,8 @@ KdenliveDoc::KdenliveDoc(const QUrl &url, const QUrl &p= rojectFolder, QUndoGroup m_documentProperties[QStringLiteral("enableproxy")] =3D QString::numbe= r((int) KdenliveSettings::enableproxy()); m_documentProperties[QStringLiteral("proxyparams")] =3D KdenliveSettin= gs::proxyparams(); m_documentProperties[QStringLiteral("proxyextension")] =3D KdenliveSet= tings::proxyextension(); + m_documentProperties[QStringLiteral("previewparams")] =3D KdenliveSett= ings::previewparams(); + m_documentProperties[QStringLiteral("previewextension")] =3D KdenliveS= ettings::previewextension(); m_documentProperties[QStringLiteral("generateproxy")] =3D QString::num= ber((int) KdenliveSettings::generateproxy()); m_documentProperties[QStringLiteral("proxyminsize")] =3D QString::numb= er(KdenliveSettings::proxyminsize()); m_documentProperties[QStringLiteral("generateimageproxy")] =3D QString= ::number((int) KdenliveSettings::generateimageproxy()); @@ -1539,6 +1541,11 @@ void KdenliveDoc::displayMessage(const QString text,= MessageType type, int timeO void KdenliveDoc::selectPreviewProfile() { // Read preview profiles and find the best match + if (!KdenliveSettings::previewparams().isEmpty()) { + setDocumentProperty(QStringLiteral("previewparameters"), KdenliveS= ettings::previewparams()); + setDocumentProperty(QStringLiteral("previewextension"), KdenliveSe= ttings::previewextension()); + return; + } KConfig conf(QStringLiteral("encodingprofiles.rc"), KConfig::CascadeCo= nfig, QStandardPaths::DataLocation); KConfigGroup group(&conf, "timelinepreview"); QMap< QString, QString > values =3D group.entryMap(); diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index e96610c..7c5b997 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -156,6 +156,20 @@ = + + + + + = + + + 0 + + = + + + + = diff --git a/src/project/dialogs/projectsettings.cpp b/src/project/dialogs/= projectsettings.cpp index b451343..80ba8be 100644 --- a/src/project/dialogs/projectsettings.cpp +++ b/src/project/dialogs/projectsettings.cpp @@ -91,7 +91,7 @@ ProjectSettings::ProjectSettings(KdenliveDoc *doc, QMap <= QString, QString> metad generate_imageproxy->setChecked(doc->getDocumentProperty(QStringLi= teral("generateimageproxy")).toInt()); proxy_imageminsize->setValue(doc->getDocumentProperty(QStringLiter= al("proxyimageminsize")).toInt()); m_proxyextension =3D doc->getDocumentProperty(QStringLiteral("prox= yextension")); - m_previewparams =3D doc->getDocumentProperty(QStringLiteral("previ= ewparameters")); + m_previewparams =3D doc->getDocumentProperty(QStringLiteral("previ= ewparams")); m_previewextension =3D doc->getDocumentProperty(QStringLiteral("pr= eviewextension")); TemporaryData *cacheWidget =3D new TemporaryData(doc, true, this); connect(cacheWidget, SIGNAL(disableProxies()), this, SIGNAL(disabl= eProxies())); @@ -107,6 +107,8 @@ ProjectSettings::ProjectSettings(KdenliveDoc *doc, QMap= metad generate_imageproxy->setChecked(KdenliveSettings::generateimagepro= xy()); proxy_imageminsize->setValue(KdenliveSettings::proxyimageminsize()= ); m_proxyextension =3D KdenliveSettings::proxyextension(); + m_previewparams =3D KdenliveSettings::previewparams(); + m_previewextension =3D KdenliveSettings::previewextension(); } = // Select profile diff --git a/src/ui/configproject_ui.ui b/src/ui/configproject_ui.ui index dda6cc5..bbb7caf 100644 --- a/src/ui/configproject_ui.ui +++ b/src/ui/configproject_ui.ui @@ -6,17 +6,11 @@ 0 0 - 478 - 516 + 505 + 654 - - 0 - - - 0 - @@ -254,7 +248,64 @@ - + + + + + + + 0 + 0 + + + + Timeline Preview + + + + + + + + 0 + 0 + + + + + + + + ... + + + true + + + + + + + ... + + + + + + + + + + 0 + 0 + + + + true + + + + Qt::Vertical diff --git a/src/ui/configtimeline_ui.ui b/src/ui/configtimeline_ui.ui index 6b167af..21eba34 100644 --- a/src/ui/configtimeline_ui.ui +++ b/src/ui/configtimeline_ui.ui @@ -11,6 +11,57 @@ + + + + Use FFmpeg for audio thumbnails (faster) + + + + + + + Display clip markers comments + + + + + + + + + Track height + + + + + + + 10 + + + 999 + + + 10 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -18,6 +69,20 @@ + + + + Autoscroll while playing + + + + + + + Zoom using vertical drag in ruler + + + @@ -68,21 +133,7 @@ - - - - Autoscroll while playing - - - - - - - Use FFmpeg for audio thumbnails (faster) - - - - + Qt::Vertical @@ -95,77 +146,6 @@ - - - - Zoom using vertical drag in ruler - - - - - - - - - Track height - - - - - - - 10 - - - 999 - - - 10 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Display clip markers comments - - - - - - - ... - - - - - - - - 0 - 0 - - - - Timeline preview profiles - - -