bool collision = false;
if (m_tool != RAZORTOOL) activateMonitor();
+ else if (m_document->renderer()->playSpeed() != 0.0) {
+ m_document->renderer()->pause();
+ return;
+ }
m_clickEvent = event->pos();
// special cases (middle click button or ctrl / shift click
if (itemList.at(i)->type() == AVWIDGET) {
item = static_cast <ClipItem *>(itemList.at(i));
item->refreshClip();
- qApp->processEvents();
+ //qApp->processEvents();
}
}
}
#include "clipmanager.h"
DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QString &id):
- m_id(id), m_description(QString()), m_refcount(0), m_audioThumbCreated(false), m_duration(GenTime()), m_thumbProd(NULL), m_audioTimer(NULL), m_clipProducer(NULL) {
+ m_id(id), m_description(QString()), m_refcount(0), m_audioThumbCreated(false), m_duration(GenTime()), m_thumbProd(NULL), m_audioTimer(NULL), m_clipProducer(NULL), m_properties(QMap <QString, QString> ()) {
int type = xml.attribute("type").toInt();
m_clipType = (CLIPTYPE) type;
m_name = xml.attribute("name");
if (refreshProducer) slotRefreshProducer();
}
+void DocClipBase::clearProperty(const QString &key) {
+ m_properties.remove(key);
+}
+
void DocClipBase::setProperty(const QString &key, const QString &value) {
m_properties.insert(key, value);
if (key == "resource") m_thumbProd->updateClipUrl(KUrl(value));
/** Returns any property of this clip. */
const QString getProperty(const QString prop) const;
void setProperty(const QString &key, const QString &value);
+ void clearProperty(const QString &key);
/** Returns the internal unique id of the clip. */
const QString &getId() const;
m_timePos->setInputMask("99:99:99:99");
toolbar->addWidget(m_timePos);
+ connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek()));
+
layout2->addWidget(toolbar);
ui.button_frame->setLayout(layout2);
const int toolHeight = toolbar->height();
if (!m_isActive) m_monitorManager->activateMonitor(m_name);
}
+void Monitor::slotSeek() {
+ const int frames = m_monitorManager->timecode().getFrameCount(m_timePos->text(), m_monitorManager->timecode().fps());
+ slotSeek(frames);
+}
+
void Monitor::slotSeek(int pos) {
if (!m_isActive) m_monitorManager->activateMonitor(m_name);
if (render == NULL) return;
void slotSetSizeOneToOne();
void slotSetSizeOneToTwo();
void slotSaveZone();
+ void slotSeek();
public slots:
void slotOpenFile(const QString &);
// folder
ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, const QString &clipId)
- : QTreeWidgetItem(parent, strings), m_clipType(FOLDER), m_groupName(strings.at(1)), m_clipId(clipId), m_clip(NULL) {
+ : QTreeWidgetItem(parent, strings), m_clipType(FOLDER), m_clipId(clipId), m_clip(NULL), m_groupname(strings.at(1)) {
setSizeHint(0, QSize(65, 45));
setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable);
setIcon(0, KIcon("folder"));
return m_clipType == FOLDER;
}
-const QString ProjectItem::groupName() const {
- return m_groupName;
-}
-
-void ProjectItem::setGroupName(const QString name) {
- m_groupName = name;
-}
-
QStringList ProjectItem::names() const {
QStringList result;
result.append(text(0));
}
void ProjectItem::setProperties(QMap <QString, QString> props) {
+ if (m_clip == NULL) return;
m_clip->setProperties(props);
}
void ProjectItem::setProperty(const QString &key, const QString &value) {
+ if (m_clip == NULL) return;
m_clip->setProperty(key, value);
}
+void ProjectItem::clearProperty(const QString &key) {
+ if (m_clip == NULL) return;
+ m_clip->clearProperty(key);
+}
+
+const QString ProjectItem::groupName() const {
+ return m_groupname;
+}
+
+void ProjectItem::setGroupName(const QString name) {
+ m_groupname = name;
+ setText(1, name);
+}
+
DocClipBase *ProjectItem::referencedClip() {
return m_clip;
}
const QString &clipId() const;
QStringList names() const;
bool isGroup() const;
- const QString groupName() const;
- void setGroupName(const QString name);
const KUrl clipUrl() const;
int clipMaxDuration() const;
CLIPTYPE clipType() const;
DocClipBase *referencedClip();
void setProperties(QMap <QString, QString> props);
void setProperty(const QString &key, const QString &value);
+ void clearProperty(const QString &key);
+ const QString groupName() const;
+ void setGroupName(const QString name);
private:
- QString m_groupName;
+ QString m_groupname;
CLIPTYPE m_clipType;
QString m_clipId;
void slotSetToolTip();
slotUpdateClipProperties(clip, props);
} else if (column == 1 && clip->isGroup()) {
m_doc->slotEditFolder(item->text(1), clip->groupName(), clip->clipId());
+ clip->setGroupName(item->text(1));
const int children = item->childCount();
for (int i = 0; i < children; i++) {
ProjectItem *child = static_cast <ProjectItem *>(item->child(i));
}
} else {
if (edit) {
- disconnect(listView, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotUpdateItemDescription(QTreeWidgetItem *, int)));
+ listView->blockSignals(true);
ProjectItem *item;
QTreeWidgetItemIterator it(listView);
while (*it) {
item = static_cast <ProjectItem *>(*it);
if (item->isGroup() && item->clipId() == clipId) {
- item->setText(1, foldername);
+ item->setGroupName(foldername);
const int children = item->childCount();
for (int i = 0; i < children; i++) {
ProjectItem *child = static_cast <ProjectItem *>(item->child(i));
}
++it;
}
- connect(listView, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotUpdateItemDescription(QTreeWidgetItem *, int)));
+ listView->blockSignals(false);
} else {
QStringList text;
text << QString() << foldername;
QString groupId = QString();
if (group.isEmpty()) {
ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
- if (item && item->clipType() != FOLDER) {
+ if (item && !item->isGroup()) {
while (item->parent()) {
item = static_cast <ProjectItem*>(item->parent());
- if (item->clipType() == FOLDER) break;
+ if (item->isGroup()) break;
}
}
- if (item && item->clipType() == FOLDER) {
+ if (item && item->isGroup()) {
group = item->groupName();
groupId = item->clipId();
}
QString group = QString();
QString groupId = QString();
ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
- if (item && item->clipType() != FOLDER) {
+ if (item && !item->isGroup()) {
while (item->parent()) {
item = static_cast <ProjectItem*>(item->parent());
- if (item->clipType() == FOLDER) break;
+ if (item->isGroup()) break;
}
}
- if (item && item->clipType() == FOLDER) {
+ if (item && item->isGroup()) {
group = item->groupName();
groupId = item->clipId();
}
QString group = QString();
QString groupId = QString();
ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
- if (item && item->clipType() != FOLDER) {
+ if (item && !item->isGroup()) {
while (item->parent()) {
item = static_cast <ProjectItem*>(item->parent());
- if (item->clipType() == FOLDER) break;
+ if (item->isGroup()) break;
}
}
- if (item && item->clipType() == FOLDER) {
+ if (item && item->isGroup()) {
group = item->groupName();
groupId = item->clipId();
}
QString group = QString();
QString groupId = QString();
ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
- if (item && item->clipType() != FOLDER) {
+ if (item && !item->isGroup()) {
while (item->parent()) {
item = static_cast <ProjectItem*>(item->parent());
- if (item->clipType() == FOLDER) break;
+ if (item->isGroup()) break;
}
}
- if (item && item->clipType() == FOLDER) {
+ if (item && item->isGroup()) {
group = item->groupName();
groupId = item->clipId();
}
QTreeWidgetItem *parent = it->parent();
if (parent/* && ((ProjectItem *) it)->clipId() < 10000*/) {
kDebug() << "++ item parent: " << parent->text(1);
- clone = (ProjectItem*) parent->takeChild(parent->indexOfChild(it));
- if (clone) addTopLevelItem(clone);
+ clone = static_cast <ProjectItem*>(parent->takeChild(parent->indexOfChild(it)));
+ if (clone) {
+ addTopLevelItem(clone);
+ clone->clearProperty("groupname");
+ clone->clearProperty("groupid");
+ }
}
}
}
void Render::pause() {
if (!m_mltProducer || !m_mltConsumer)
return;
+ if (m_mltProducer->get_speed() == 0.0) return;
if (m_isZoneMode) resetZoneMode();
m_isBlocked = true;
m_mltConsumer->set("refresh", 0);