#endif
}
-void ClipManager::requestThumbs(const QString id, QList <int> frames)
+void ClipManager::slotRequestThumbs(const QString id, QList <int> frames)
{
m_thumbsMutex.lock();
foreach (int frame, frames) {
void removeGroup(AbstractGroupItem *group);
QDomElement groupsXml() const;
int clipsCount() const;
- /** @brief Request creation of a clip thumbnail for specified frames. */
- void requestThumbs(const QString id, QList <int> frames);
/** @brief remove a clip id from the queue list. */
void stopThumbs(const QString &id);
void projectTreeThumbReady(const QString &id, int frame, QImage img, int type);
KImageCache* pixmapCache;
#endif
+public slots:
+ /** @brief Request creation of a clip thumbnail for specified frames. */
+ void slotRequestThumbs(const QString id, QList <int> frames);
+
private slots:
/** A clip was externally modified, monitor for more changes and prepare for reload */
void slotClipModified(const QString &path);
}
connect(m_view.clip_force_framerate, SIGNAL(toggled(bool)), this, SLOT(slotModified()));
connect(m_view.clip_framerate, SIGNAL(valueChanged(double)), this, SLOT(slotModified()));
+ m_view.clip_progressive->addItem(i18n("Interlaced"), 0);
+ m_view.clip_progressive->addItem(i18n("Progressive"), 1);
if (props.contains("force_progressive")) {
m_view.clip_force_progressive->setChecked(true);
m_view.clip_progressive->setEnabled(true);
- m_view.clip_progressive->setValue(props.value("force_progressive").toInt());
+ m_view.clip_progressive->setCurrentIndex(props.value("force_progressive").toInt());
}
connect(m_view.clip_force_progressive, SIGNAL(toggled(bool)), this, SLOT(slotModified()));
- connect(m_view.clip_progressive, SIGNAL(valueChanged(int)), this, SLOT(slotModified()));
+ connect(m_view.clip_progressive, SIGNAL(currentIndexChanged(int)), this, SLOT(slotModified()));
m_view.clip_fieldorder->addItem(i18n("Bottom first"), 0);
m_view.clip_fieldorder->addItem(i18n("Top first"), 1);
m_view.clip_aproperties->setItemDelegate(del2);
m_view.clip_aproperties->setStyleSheet(QString("QTreeWidget { background-color: transparent;}"));
m_view.clip_vproperties->setStyleSheet(QString("QTreeWidget { background-color: transparent;}"));
-
- if (props.contains("videocodec"))
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Video codec") << props.value("videocodec"));
- else if (props.contains("videocodecid"))
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Video codec") << props.value("videocodecid"));
-
- if (props.contains("frame_size"))
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Frame size") << props.value("frame_size"));
-
- if (props.contains("fps")) {
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Frame rate") << props.value("fps"));
- if (!m_view.clip_framerate->isEnabled()) m_view.clip_framerate->setValue(props.value("fps").toDouble());
- }
-
- if (props.contains("progressive")) {
- int scanning = props.value("progressive").toInt();
- QString txt = scanning == 1 ? i18n("Progressive") : i18n("Interlaced");
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Scanning") << txt);
- }
-
- if (props.contains("aspect_ratio"))
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Pixel aspect ratio") << props.value("aspect_ratio"));
-
- if (props.contains("pix_fmt"))
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Pixel format") << props.value("pix_fmt"));
-
- if (props.contains("colorspace"))
- new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Colorspace") << ProfilesDialog::getColorspaceDescription(props.value("colorspace").toInt()));
+ loadVideoProperties(props);
m_view.clip_thumb->setMinimumSize(180 * KdenliveSettings::project_display_ratio(), 180);
if (commonproperties.contains("force_progressive") && !commonproperties.value("force_progressive").isEmpty()) {
m_view.clip_force_progressive->setChecked(true);
m_view.clip_progressive->setEnabled(true);
- m_view.clip_progressive->setValue(commonproperties.value("force_progressive").toInt());
+ m_view.clip_progressive->setCurrentIndex(commonproperties.value("force_progressive").toInt());
}
if (commonproperties.contains("force_tff") && !commonproperties.value("force_tff").isEmpty()) {
if (del2) delete del2;
}
+
+void ClipProperties::loadVideoProperties(QMap <QString, QString> props)
+{
+ m_view.clip_vproperties->clear();
+ if (props.contains("videocodec"))
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Video codec") << props.value("videocodec"));
+ else if (props.contains("videocodecid"))
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Video codec") << props.value("videocodecid"));
+
+ if (props.contains("frame_size"))
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Frame size") << props.value("frame_size"));
+
+ if (props.contains("fps")) {
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Frame rate") << props.value("fps"));
+ if (!m_view.clip_framerate->isEnabled()) m_view.clip_framerate->setValue(props.value("fps").toDouble());
+ }
+
+ if (props.contains("progressive")) {
+ int scanning = props.value("progressive").toInt();
+ QString txt = scanning == 1 ? i18n("Progressive") : i18n("Interlaced");
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Scanning") << txt);
+ }
+
+ if (props.contains("aspect_ratio"))
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Pixel aspect ratio") << props.value("aspect_ratio"));
+
+ if (props.contains("pix_fmt"))
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Pixel format") << props.value("pix_fmt"));
+
+ if (props.contains("colorspace"))
+ new QTreeWidgetItem(m_view.clip_vproperties, QStringList() << i18n("Colorspace") << ProfilesDialog::getColorspaceDescription(props.value("colorspace").toInt()));
+}
+
void ClipProperties::slotGotThumbnail(const QString &id, QImage img)
{
if (id != m_clip->getId()) return;
if (m_clip != NULL) {
QMap <QString, QString> props = properties();
emit applyNewClipProperties(m_clip->getId(), m_clip->currentProperties(props), props, needsTimelineRefresh(), needsTimelineReload());
+ QTimer::singleShot(1000, this, SLOT(slotReloadVideoProperties()));
+ if (props.contains("force_aspect_num")) QTimer::singleShot(1000, this, SLOT(slotReloadVideoThumb()));
}
m_view.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
}
+void ClipProperties::slotReloadVideoProperties()
+{
+ if (m_clip == NULL) return;
+ loadVideoProperties(m_clip->properties());
+}
+
+void ClipProperties::slotReloadVideoThumb()
+{
+ if (m_clip == NULL) return;
+ emit requestThumb(QString('?' + m_clip->getId()), QList<int>() << m_clip->getClipThumbFrame());
+}
+
void ClipProperties::disableClipId(const QString &id)
{
if (m_clip && m_view.buttonBox->button(QDialogButtonBox::Ok)->isEnabled()) {
m_clipNeedsRefresh = true;
}
- int progressive = m_view.clip_progressive->value();
+ int progressive = m_view.clip_progressive->currentIndex();
if (m_view.clip_force_progressive->isChecked()) {
- if (progressive != m_old_props.value("force_progressive").toInt()) {
+ if (!m_old_props.contains("force_progressive") || progressive != m_old_props.value("force_progressive").toInt()) {
props["force_progressive"] = QString::number(progressive);
}
} else if (m_old_props.contains("force_progressive") && !m_old_props.value("force_progressive").isEmpty()) {
int fieldOrder = m_view.clip_fieldorder->currentIndex();
if (m_view.clip_force_fieldorder->isChecked()) {
- if (fieldOrder != m_old_props.value("force_tff").toInt()) {
+ if (!m_old_props.contains("force_tff") || fieldOrder != m_old_props.value("force_tff").toInt()) {
props["force_tff"] = QString::number(fieldOrder);
}
} else if (m_old_props.contains("force_tff") && !m_old_props.value("force_tff").isEmpty()) {
void slotGotThumbnail(const QString &id, QImage img);
void slotSaveAnalysis();
void slotLoadAnalysis();
+ void slotReloadVideoProperties();
+ void slotReloadVideoThumb();
private:
Ui::ClipProperties_UI m_view;
bool m_clipNeedsReLoad;
/** Frame with proxy info / delete button */
QFrame* m_proxyContainer;
+ void loadVideoProperties(QMap <QString, QString> props);
signals:
void addMarkers(const QString &, QList <CommentedTime>);
void saveMarkers(const QString &id);
void loadMarkers(const QString &id);
void editAnalysis(const QString &id, const QString &name, const QString &value);
+ void requestThumb(const QString id, QList <int> frames);
};
LITTLE_MARK_X = BIG_MARK_X + mark_length / 3;
updateFrameSize();
m_scale = 3;
- m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
+ m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::FocusColor, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
m_zoneStart = 0;
m_zoneEnd = 100;
m_contextMenu = new QMenu(this);
void CustomRuler::updatePalette()
{
- m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
+ m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::FocusColor, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
}
void CustomRuler::updateProjectFps(Timecode t)
void KThumb::extractImage(QList <int>frames)
{
if (!KdenliveSettings::videothumbnails() || m_producer == NULL) return;
- m_clipManager->requestThumbs(m_id, frames);
+ m_clipManager->slotRequestThumbs(m_id, frames);
}
if (clip->clipType() == AV || clip->clipType() == VIDEO || clip->clipType() == PLAYLIST || clip->clipType() == SLIDESHOW) {
// request clip thumbnails
- m_activeDocument->clipManager()->requestThumbs(QString('?' + clip->getId()), QList<int>() << clip->getClipThumbFrame());
connect(m_activeDocument->clipManager(), SIGNAL(gotClipPropertyThumbnail(const QString&,QImage)), dia, SLOT(slotGotThumbnail(const QString&,QImage)));
+ connect(dia, SIGNAL(requestThumb(const QString, QList <int>)), m_activeDocument->clipManager(), SLOT(slotRequestThumbs(QString,QList<int>)));
+ m_activeDocument->clipManager()->slotRequestThumbs(QString('?' + clip->getId()), QList<int>() << clip->getClipThumbFrame());
}
connect(dia, SIGNAL(addMarkers(const QString &, QList <CommentedTime>)), m_activeTimeline->projectView(), SLOT(slotAddClipMarker(const QString &, QList <CommentedTime>)));
ProjectItem *item = getItemById(id);
if (item) {
slotUpdateClipProperties(item, properties);
- if (properties.contains("out") || properties.contains("force_fps") || properties.contains("resource") || properties.contains("video_index") || properties.contains("audio_index") || properties.contains("full_luma")) {
+ if (properties.contains("out") || properties.contains("force_fps") || properties.contains("resource") || properties.contains("video_index") || properties.contains("audio_index") || properties.contains("full_luma") || properties.contains("force_progressive") || properties.contains("force_tff") || properties.contains("force_colorspace")) {
slotReloadClip(id);
} else if (properties.contains("colour") ||
properties.contains("xmldata") ||
properties.contains("templatetext")) {
slotRefreshClipThumbnail(item);
emit refreshClip(id, true);
- } else if (properties.contains("force_colorspace") || properties.contains("loop")) {
+ } else if (properties.contains("loop")) {
emit refreshClip(id, false);
}
}
m_listView->scrollToItem(sub);
m_listView->editItem(sub, 1);
}
- m_doc->clipManager()->requestThumbs(QString('#' + id), QList <int>() << in);
+ m_doc->clipManager()->slotRequestThumbs(QString('#' + id), QList <int>() << in);
monitorItemEditing(true);
}
emit projectModified();
m_zoneStart = 10;
m_zoneEnd = 60;
KSharedConfigPtr config = KSharedConfig::openConfig(KdenliveSettings::colortheme());
- m_zoneBrush = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, config);
+ m_zoneBrush = KStatefulBrush(KColorScheme::View, KColorScheme::FocusColor, config);
setMouseTracking(true);
setMinimumHeight(8);
void SmallRuler::updatePalette()
{
KSharedConfigPtr config = KSharedConfig::openConfig(KdenliveSettings::colortheme());
- m_zoneBrush = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, config);
+ m_zoneBrush = KStatefulBrush(KColorScheme::View, KColorScheme::FocusColor, config);
updatePixmap();
}
<rect>
<x>0</x>
<y>0</y>
- <width>306</width>
- <height>539</height>
+ <width>323</width>
+ <height>556</height>
</rect>
</property>
<property name="windowTitle">
<string>Advanced</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
- <item row="12" column="2">
+ <item row="13" column="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
- <item row="6" column="2">
+ <item row="7" column="2">
<widget class="QSpinBox" name="clip_vindex">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="7" column="2">
+ <item row="8" column="2">
<widget class="QSpinBox" name="clip_aindex">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="5" column="1">
+ <item row="6" column="1">
<widget class="QCheckBox" name="clip_force_threads">
<property name="text">
<string>Decoding threads</string>
</property>
</widget>
</item>
- <item row="6" column="1">
+ <item row="7" column="1">
<widget class="QCheckBox" name="clip_force_vindex">
<property name="text">
<string>Video index</string>
</property>
</widget>
</item>
- <item row="7" column="1">
+ <item row="8" column="1">
<widget class="QCheckBox" name="clip_force_aindex">
<property name="text">
<string>Audio index</string>
</property>
</widget>
</item>
- <item row="5" column="2">
+ <item row="6" column="2">
<widget class="QSpinBox" name="clip_threads">
<property name="enabled">
<bool>false</bool>
<item row="3" column="1">
<widget class="QCheckBox" name="clip_force_progressive">
<property name="text">
- <string>Force progressive</string>
- </property>
- </widget>
- </item>
- <item row="3" column="2">
- <widget class="QSpinBox" name="clip_progressive">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="maximum">
- <number>1</number>
- </property>
- <property name="value">
- <number>1</number>
+ <string>Force scanning</string>
</property>
</widget>
</item>
</property>
</widget>
</item>
- <item row="8" column="1">
+ <item row="9" column="1">
<widget class="QCheckBox" name="clip_force_colorspace">
<property name="text">
<string>Force colorspace</string>
</property>
</widget>
</item>
- <item row="8" column="2">
+ <item row="9" column="2">
<widget class="KComboBox" name="clip_colorspace">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="9" column="1" colspan="2">
+ <item row="10" column="1" colspan="2">
<widget class="QCheckBox" name="clip_full_luma">
<property name="text">
<string>Full luma range</string>
</item>
</layout>
</item>
- <item row="4" column="1">
+ <item row="5" column="1">
<widget class="QCheckBox" name="clip_force_fieldorder">
<property name="text">
<string>Force field order</string>
</property>
</widget>
</item>
- <item row="4" column="2">
+ <item row="5" column="2">
<widget class="KComboBox" name="clip_fieldorder">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="10" column="1">
+ <item row="11" column="1">
<widget class="QCheckBox" name="clip_force_transparency">
<property name="text">
<string>Image background</string>
</property>
</widget>
</item>
- <item row="10" column="2">
+ <item row="11" column="2">
<widget class="KComboBox" name="clip_transparency">
<item>
<property name="text">
</item>
</widget>
</item>
+ <item row="3" column="2">
+ <widget class="KComboBox" name="clip_progressive">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</widget>