From a62d4880e5aeccf3fca7d334ce43b55a467a9d0c Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 16 Aug 2009 13:59:42 +0000 Subject: [PATCH] Allow custom name for tracks svn path=/trunk/kdenlive/; revision=3830 --- src/abstractclipitem.cpp | 4 ++-- src/clipitem.cpp | 2 -- src/customtrackview.cpp | 10 +++++----- src/definitions.h | 1 + src/graphicsscenerectmove.cpp | 4 ++-- src/guide.cpp | 2 +- src/headertrack.cpp | 11 ++++++++++- src/headertrack.h | 2 ++ src/kdenlivedoc.cpp | 3 +++ src/trackview.cpp | 16 ++++++++++++++++ src/trackview.h | 2 ++ src/transition.cpp | 3 +-- 12 files changed, 45 insertions(+), 15 deletions(-) diff --git a/src/abstractclipitem.cpp b/src/abstractclipitem.cpp index 605b42dc..5e4c7716 100644 --- a/src/abstractclipitem.cpp +++ b/src/abstractclipitem.cpp @@ -38,7 +38,7 @@ AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, doub m_keyframeFactor(1), m_fps(fps) { - setFlags(/*QGraphicsItem::ItemClipsToShape | */QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); setTrack(info.track); m_startPos = info.startPos; m_cropDuration = info.endPos - info.startPos; @@ -411,7 +411,7 @@ void AbstractClipItem::setItemLocked(bool locked) setSelected(false); setFlag(QGraphicsItem::ItemIsMovable, false); setFlag(QGraphicsItem::ItemIsSelectable, false); - } else setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + } else setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); } bool AbstractClipItem::isItemLocked() const diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 31e89f22..4ba13ad9 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -74,8 +74,6 @@ ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps, double speed, i m_maxDuration = clip->maxDuration(); setAcceptDrops(true); m_audioThumbReady = clip->audioThumbCreated(); - - setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); //setAcceptsHoverEvents(true); connect(this , SIGNAL(prepareAudioThumb(double, int, int, int)) , this, SLOT(slotPrepareAudioThumb(double, int, int, int))); diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 32d5b94b..2efe0305 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -959,11 +959,11 @@ void CustomTrackView::resetSelectionGroup(bool selectItems) for (int i = 0; i < children.count(); i++) { if (children.at(i)->type() == AVWIDGET || children.at(i)->type() == TRANSITIONWIDGET) { if (!static_cast (children.at(i))->isItemLocked()) { - children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); children.at(i)->setSelected(selectItems); } } else if (children.at(i)->type() == GROUPWIDGET) { - children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); children.at(i)->setSelected(selectItems); } } @@ -3075,7 +3075,7 @@ void CustomTrackView::doGroupClips(QList clipInfos, QList m_document->clipManager()->removeGroup(grp); scene()->destroyItemGroup(grp); } - clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); } for (int i = 0; i < transitionInfos.count(); i++) { Transition *tr = getTransitionItemAt(transitionInfos.at(i).startPos, transitionInfos.at(i).track); @@ -3085,7 +3085,7 @@ void CustomTrackView::doGroupClips(QList clipInfos, QList m_document->clipManager()->removeGroup(grp); scene()->destroyItemGroup(grp); } - tr->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + tr->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); } setDocumentModified(); return; @@ -4629,7 +4629,7 @@ void CustomTrackView::doSplitAudio(const GenTime &pos, int track, bool split) break; } } - clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); m_document->clipManager()->removeGroup(grp); scene()->destroyItemGroup(grp); } diff --git a/src/definitions.h b/src/definitions.h index eff9b24e..90d5e313 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -55,6 +55,7 @@ enum TRACKTYPE { AUDIOTRACK = 0, VIDEOTRACK = 1 }; struct TrackInfo { TRACKTYPE type; + QString trackName; bool isMute; bool isBlind; bool isLocked; diff --git a/src/graphicsscenerectmove.cpp b/src/graphicsscenerectmove.cpp index 275c2a4d..47133a20 100644 --- a/src/graphicsscenerectmove.cpp +++ b/src/graphicsscenerectmove.cpp @@ -246,7 +246,7 @@ void GraphicsSceneRectMove::mousePressEvent(QGraphicsSceneMouseEvent* e) } else if (m_tool == TITLE_TEXT) { m_selectedItem = addText(QString()); emit newText((QGraphicsTextItem *) m_selectedItem); - m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); ((QGraphicsTextItem *)m_selectedItem)->setTextInteractionFlags(Qt::TextEditorInteraction); m_selectedItem->setPos(e->scenePos()); QGraphicsScene::mousePressEvent(e); @@ -483,7 +483,7 @@ void GraphicsSceneRectMove::mouseMoveEvent(QGraphicsSceneMouseEvent* e) // create new rect item m_selectedItem = addRect(0, 0, e->scenePos().x() - m_sceneClickPoint.x(), e->scenePos().y() - m_sceneClickPoint.y()); emit newRect((QGraphicsRectItem *) m_selectedItem); - m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemClipsToShape); m_selectedItem->setPos(m_sceneClickPoint); m_resizeMode = BottomRight; QGraphicsScene::mouseMoveEvent(e); diff --git a/src/guide.cpp b/src/guide.cpp index 4fbc53b9..d608d7d0 100644 --- a/src/guide.cpp +++ b/src/guide.cpp @@ -34,7 +34,7 @@ Guide::Guide(CustomTrackView *view, GenTime pos, QString label, double fps, doub m_fps(fps), m_view(view) { - setFlags(QGraphicsItem::ItemIsMovable); + setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemClipsToShape); setToolTip(label); setLine(0, 0, 0, height); setPos(m_position.frames(m_fps), 0); diff --git a/src/headertrack.cpp b/src/headertrack.cpp index 3cb935dd..679e1256 100644 --- a/src/headertrack.cpp +++ b/src/headertrack.cpp @@ -36,7 +36,7 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) { setFixedHeight(height); m_view.setupUi(this); - m_view.track_number->setText(QString::number(m_index)); + m_view.track_number->setText(info.trackName.isEmpty() ? QString::number(m_index) : info.trackName); m_view.buttonVideo->setChecked(!info.isBlind); m_view.buttonVideo->setToolTip(i18n("Hide track")); @@ -83,6 +83,11 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) QAction *changeAction = new QAction(i18n("Change Track Type"), this); addAction(changeAction); connect(changeAction, SIGNAL(triggered()), this, SLOT(slotChangeTrack())); + + QAction *renameAction = new QAction(i18n("Rename Track"), this); + addAction(renameAction); + connect(renameAction, SIGNAL(triggered()), this, SLOT(slotRenameTrack())); + } HeaderTrack::~HeaderTrack() @@ -151,6 +156,10 @@ void HeaderTrack::slotChangeTrack() emit changeTrack(m_index); } +void HeaderTrack::slotRenameTrack() +{ + emit renameTrack(m_index); +} // virtual /*void HeaderTrack::paintEvent(QPaintEvent *e) { diff --git a/src/headertrack.h b/src/headertrack.h index 8ff6f2c7..903e45a3 100644 --- a/src/headertrack.h +++ b/src/headertrack.h @@ -47,6 +47,7 @@ private slots: void slotDeleteTrack(); void slotAddTrack(); void slotChangeTrack(); + void slotRenameTrack(); void switchLock(bool emitSignal = true); signals: @@ -56,6 +57,7 @@ signals: void insertTrack(int); void deleteTrack(int); void changeTrack(int); + void renameTrack(int); }; #endif diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index 6fa0b471..4551ee26 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -121,6 +121,7 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup projectTrack.isMute = e.attribute("mute").toInt(); projectTrack.isBlind = e.attribute("blind").toInt(); projectTrack.isLocked = e.attribute("locked").toInt(); + projectTrack.trackName = e.attribute("trackname"); m_tracksList.append(projectTrack); } } @@ -518,6 +519,7 @@ bool KdenliveDoc::saveSceneList(const QString &path, const QString &scene) trackinfo.setAttribute("mute", info.isMute); trackinfo.setAttribute("blind", info.isBlind); trackinfo.setAttribute("locked", info.isLocked); + trackinfo.setAttribute("trackname", info.trackName); tracksinfo.appendChild(trackinfo); } addedXml.appendChild(tracksinfo); @@ -1176,6 +1178,7 @@ void KdenliveDoc::setTrackType(int ix, TrackInfo type) m_tracksList[ix].isMute = type.isMute; m_tracksList[ix].isBlind = type.isBlind; m_tracksList[ix].isLocked = type.isLocked; + m_tracksList[ix].trackName = type.trackName; } const QList KdenliveDoc::tracksList() const diff --git a/src/trackview.cpp b/src/trackview.cpp index 0ed52e09..aabf0e6c 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -36,6 +36,7 @@ #include #include +#include TrackView::TrackView(KdenliveDoc *doc, bool *ok, QWidget *parent) : QWidget(parent), @@ -462,6 +463,7 @@ void TrackView::slotRebuildTrackHeaders() connect(header, SIGNAL(deleteTrack(int)), this, SIGNAL(deleteTrack(int))); connect(header, SIGNAL(insertTrack(int)), this, SIGNAL(insertTrack(int))); connect(header, SIGNAL(changeTrack(int)), this, SIGNAL(changeTrack(int))); + connect(header, SIGNAL(renameTrack(int)), this, SLOT(slotRenameTrack(int))); m_headersLayout->addWidget(header); } } @@ -835,4 +837,18 @@ void TrackView::updateProjectFps() m_ruler->updateProjectFps(m_doc->timecode()); } +void TrackView::slotRenameTrack(int ix) +{ + int tracknumber = m_doc->tracksCount() - ix; + TrackInfo info = m_doc->trackInfoAt(tracknumber - 1); + bool ok; + QString newName = QInputDialog::getText(this, i18n("New Track Name"), i18n("Enter new name"), QLineEdit::Normal, info.trackName, &ok); + if (ok) { + info.trackName = newName; + m_doc->setTrackType(tracknumber - 1, info); + QTimer::singleShot(300, this, SLOT(slotRebuildTrackHeaders())); + } +} + + #include "trackview.moc" diff --git a/src/trackview.h b/src/trackview.h index 7002e10f..85374ec9 100644 --- a/src/trackview.h +++ b/src/trackview.h @@ -92,6 +92,7 @@ private slots: void slotChangeTrackLock(int ix, bool lock); void slotVerticalZoomDown(); void slotVerticalZoomUp(); + void slotRenameTrack(int ix); signals: void mousePosition(int); @@ -100,6 +101,7 @@ signals: void insertTrack(int); void deleteTrack(int); void changeTrack(int); + void renameTrack(int); }; #endif diff --git a/src/transition.cpp b/src/transition.cpp index cfabafcd..0c2b6452 100644 --- a/src/transition.cpp +++ b/src/transition.cpp @@ -41,7 +41,7 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDo setZValue(3); setRect(0, 0, (info.endPos - info.startPos).frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1)); setPos(info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 3 * 2)); - + m_cropStart = GenTime(); m_maxDuration = GenTime(600); @@ -59,7 +59,6 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDo if (m_parameters.attribute("force_track") == "1") m_forceTransitionTrack = true; m_name = m_parameters.elementsByTagName("name").item(0).toElement().text(); m_secondClip = 0; - setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); //m_referenceClip->addTransition(this); } -- 2.39.2