X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipproperties.cpp;h=a24140a9b092db9aae18559178802f744eb031b2;hb=676263c5c1287a6e89c18d8b67efba7e8ef33045;hp=bff6d90625406cbeb03ab9aff44038fed360f2c7;hpb=c42a026234a44a2d766e57bc64a6ac7bbd094000;p=kdenlive diff --git a/src/clipproperties.cpp b/src/clipproperties.cpp index bff6d906..a24140a9 100644 --- a/src/clipproperties.cpp +++ b/src/clipproperties.cpp @@ -43,7 +43,13 @@ static const int TYPE_PNG = 1; static const int TYPE_BMP = 2; static const int TYPE_GIF = 3; -ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidget * parent): QDialog(parent), m_tc(tc), m_clip(clip), m_fps(fps), m_clipNeedsRefresh(false), m_count(0) +ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidget * parent) : + QDialog(parent), + m_clip(clip), + m_tc(tc), + m_fps(fps), + m_count(0), + m_clipNeedsRefresh(false) { setFont(KGlobalSettings::toolBarFont()); m_view.setupUi(this); @@ -151,6 +157,13 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg else if (path.endsWith("bmp")) m_view.image_type->setCurrentIndex(TYPE_BMP); else if (path.endsWith("gif")) m_view.image_type->setCurrentIndex(TYPE_GIF); m_view.slide_duration->setText(tc.getTimecodeFromFrames(props.value("ttl").toInt())); + + m_view.slide_duration_format->addItem(i18n("hh:mm:ss::ff")); + m_view.slide_duration_format->addItem(i18n("Frames")); + connect(m_view.slide_duration_format, SIGNAL(activated(int)), this, SLOT(slotUpdateDurationFormat(int))); + m_view.slide_duration_frames->setHidden(true); + m_view.luma_duration_frames->setHidden(true); + parseFolder(); m_view.luma_duration->setText(tc.getTimecodeFromFrames(props.value("luma_duration").toInt())); @@ -178,8 +191,8 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg m_view.luma_file->addItem(KIcon(folder + '/' + fname), fname, folder + '/' + fname); } - slotEnableLuma(m_view.slide_fade->isChecked()); - slotEnableLumaFile(m_view.slide_luma->isChecked()); + slotEnableLuma(m_view.slide_fade->checkState()); + slotEnableLumaFile(m_view.slide_luma->checkState()); if (!lumaFile.isEmpty()) { m_view.slide_luma->setChecked(true); @@ -241,6 +254,7 @@ void ClipProperties::slotEnableLuma(int state) bool enable = false; if (state == Qt::Checked) enable = true; m_view.luma_duration->setEnabled(enable); + m_view.luma_duration_frames->setEnabled(enable); m_view.slide_luma->setEnabled(enable); if (enable) { m_view.luma_file->setEnabled(m_view.slide_luma->isChecked()); @@ -262,7 +276,7 @@ void ClipProperties::slotFillMarkersList() { m_view.markers_list->clear(); QList < CommentedTime > marks = m_clip->commentedSnapMarkers(); - for (uint count = 0; count < marks.count(); ++count) { + for (int count = 0; count < marks.count(); ++count) { QString time = m_tc.getTimecode(marks[count].time(), m_tc.fps()); QStringList itemtext; itemtext << time << marks[count].comment(); @@ -403,7 +417,11 @@ QMap ClipProperties::properties() props["resource"] = new_path; kDebug() << "//// SLIDE EDIT, NEW:" << new_path << ", OLD; " << old_props.value("resource"); } - int duration = m_tc.getFrameCount(m_view.slide_duration->text(), m_fps); + int duration; + if (m_view.slide_duration_format->currentIndex() == 1) { + // we are in frames mode + duration = m_view.slide_duration_frames->value(); + } else duration = m_tc.getFrameCount(m_view.slide_duration->text(), m_fps); if (duration != old_props.value("ttl").toInt()) { m_clipNeedsRefresh = true; props["ttl"] = QString::number(duration); @@ -414,7 +432,11 @@ QMap ClipProperties::properties() props["out"] = QString::number(duration * m_count); } if (m_view.slide_fade->isChecked()) { - int luma_duration = m_tc.getFrameCount(m_view.luma_duration->text(), m_fps); + int luma_duration; + if (m_view.slide_duration_format->currentIndex() == 1) { + // we are in frames mode + luma_duration = m_view.luma_duration_frames->value(); + } else luma_duration = m_tc.getFrameCount(m_view.luma_duration->text(), m_fps); if (luma_duration != old_props.value("luma_duration").toInt()) { m_clipNeedsRefresh = true; props["luma_duration"] = QString::number(luma_duration); @@ -488,6 +510,28 @@ void ClipProperties::slotCheckMaxLength() } } +void ClipProperties::slotUpdateDurationFormat(int ix) +{ + bool framesFormat = ix == 1; + if (framesFormat) { + // switching to frames count, update widget + m_view.slide_duration_frames->setValue(m_tc.getFrameCount(m_view.slide_duration->text(), m_tc.fps())); + m_view.luma_duration_frames->setValue(m_tc.getFrameCount(m_view.luma_duration->text(), m_tc.fps())); + m_view.slide_duration->setHidden(true); + m_view.luma_duration->setHidden(true); + m_view.slide_duration_frames->setHidden(false); + m_view.luma_duration_frames->setHidden(false); + } else { + // switching to timecode format + m_view.slide_duration->setText(m_tc.getTimecodeFromFrames(m_view.slide_duration_frames->value())); + m_view.luma_duration->setText(m_tc.getTimecodeFromFrames(m_view.luma_duration_frames->value())); + m_view.slide_duration_frames->setHidden(true); + m_view.luma_duration_frames->setHidden(true); + m_view.slide_duration->setHidden(false); + m_view.luma_duration->setHidden(false); + } +} + #include "clipproperties.moc"