X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fheadertrack.cpp;h=73fc711fc6f293c98ae73d0761ce91b9389af43f;hb=56aee6aedeeed3efd10ada8fe3c229eddc01ef05;hp=64876175239b521b06b0b6bc66b7e7fb81e9ee12;hpb=4e2125a93b533b2d29232d9072a5a757ce2616e1;p=kdenlive diff --git a/src/headertrack.cpp b/src/headertrack.cpp index 64876175..73fc711f 100644 --- a/src/headertrack.cpp +++ b/src/headertrack.cpp @@ -23,19 +23,17 @@ #include "kdenlivesettings.h" #include -#include +#include #include -#include #include #include #include #include #include -#include #include -HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) : +HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, const QList &actions, QWidget *parent) : QWidget(parent), m_index(index), m_type(info.type), @@ -44,16 +42,6 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) setFixedHeight(height); setupUi(this); - QPalette p = palette(); - KColorScheme scheme(p.currentColorGroup(), KColorScheme::View, KSharedConfig::openConfig(KdenliveSettings::colortheme())); - QColor norm = scheme.shade(scheme.background(KColorScheme::ActiveBackground).color(), KColorScheme::MidShade); - p.setColor(QPalette::Button, norm); - setPalette(p); - - QColor col = scheme.background().color(); - QColor col2 = scheme.foreground().color(); - track_number->setStyleSheet(QString("QLineEdit { background-color: transparent;color: rgb(%4, %5, %6);} QLineEdit:hover{ background-color: rgb(%1, %2, %3);} QLineEdit:focus { background-color: rgb(%1, %2, %3);}").arg(col.red()).arg(col.green()).arg(col.blue()).arg(col2.red()).arg(col2.green()).arg(col2.blue())); - m_name = info.trackName.isEmpty() ? QString::number(m_index) : info.trackName; track_number->setText(m_name); connect(track_number, SIGNAL(editingFinished()), this, SLOT(slotRenameTrack())); @@ -68,7 +56,7 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) updateEffectLabel(info.effectsList.effectNames()); setAcceptDrops(true); - if (m_type == VIDEOTRACK) { + if (m_type == VideoTrack) { setBackgroundRole(QPalette::AlternateBase); setAutoFillBackground(true); if (!info.isBlind) @@ -100,25 +88,15 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) //horizontalSpacer; } - setContextMenuPolicy(Qt::DefaultContextMenu); //Qt::ActionsContextMenu); - QAction *insertAction = new QAction(i18n("Insert Track"), this); - m_menu.addAction(insertAction); - connect(insertAction, SIGNAL(triggered()), this, SLOT(slotAddTrack())); - - QAction *removeAction = new QAction(KIcon("edit-delete"), i18n("Delete Track"), this); - m_menu.addAction(removeAction); - connect(removeAction, SIGNAL(triggered()), this, SLOT(slotDeleteTrack())); - - QAction *configAction = new QAction(KIcon("configure"), i18n("Configure Track"), this); - m_menu.addAction(configAction); - connect(configAction, SIGNAL(triggered()), this, SLOT(slotConfigTrack())); + setContextMenuPolicy(Qt::ActionsContextMenu); + addActions(actions); } /*HeaderTrack::~HeaderTrack() { }*/ -void HeaderTrack::updateEffectLabel(QStringList effects) +void HeaderTrack::updateEffectLabel(const QStringList &effects) { if (!effects.isEmpty()) { effect_label->setHidden(false); @@ -141,23 +119,13 @@ void HeaderTrack::mousePressEvent(QMouseEvent * event) QWidget::mousePressEvent(event); } -// virtual -void HeaderTrack::contextMenuEvent(QContextMenuEvent * event) -{ - if (track_number->hasFocus()) { - track_number->clearFocus(); - return; - } - m_menu.popup(event->globalPos()); -} - void HeaderTrack::mouseDoubleClickEvent(QMouseEvent* event) { if (track_number->hasFocus()) { track_number->clearFocus(); return; } - slotConfigTrack(); + emit configTrack(m_index); QWidget::mouseDoubleClickEvent(event); } @@ -167,9 +135,19 @@ void HeaderTrack::dropEvent(QDropEvent * event) const QString effects = QString::fromUtf8(event->mimeData()->data("kdenlive/effectslist")); QDomDocument doc; doc.setContent(effects, true); - const QDomElement e = doc.documentElement(); + QDomElement e = doc.documentElement(); + if (e.tagName() == "effectgroup") { + // dropped an effect group + QDomNodeList effectlist = e.elementsByTagName("effect"); + for (int i = 0; i < effectlist.count(); ++i) { + effectlist.at(i).toElement().removeAttribute("kdenlive_ix"); + } + } else { + // single effect dropped + e.removeAttribute("kdenlive_ix"); + } emit selectTrack(m_index); - emit addTrackInfo(e, m_index); + emit addTrackEffect(e, m_index); /*if (scene() && !scene()->views().isEmpty()) { event->accept(); CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; @@ -180,8 +158,18 @@ void HeaderTrack::dropEvent(QDropEvent * event) //virtual void HeaderTrack::dragEnterEvent(QDragEnterEvent *event) { - if (buttonLock->isChecked()) event->setAccepted(false); - else event->setAccepted(event->mimeData()->hasFormat("kdenlive/effectslist")); + if (buttonLock->isChecked()) { + event->setAccepted(false); + } else { + if (event->mimeData()->hasFormat("kdenlive/effectslist")) { + const QString effects = QString::fromUtf8(event->mimeData()->data("kdenlive/effectslist")); + QDomDocument doc; + doc.setContent(effects, true); + if (doc.documentElement().attribute("id") != "speed") { + event->setAccepted(true); + } + } + } } void HeaderTrack::setSelectedIndex(int ix) @@ -190,7 +178,7 @@ void HeaderTrack::setSelectedIndex(int ix) m_isSelected = true; setBackgroundRole(QPalette::Button); setAutoFillBackground(true); - } else if (m_type != VIDEOTRACK) { + } else if (m_type != VideoTrack) { m_isSelected = false; setAutoFillBackground(false); } else { @@ -204,7 +192,7 @@ void HeaderTrack::adjustSize(int height) { // Don't show track buttons if size is too small bool smallTracks = height < 40; - if (m_type == VIDEOTRACK) + if (m_type == VideoTrack) buttonVideo->setHidden(smallTracks); buttonAudio->setHidden(smallTracks); buttonLock->setHidden(smallTracks); @@ -250,25 +238,11 @@ void HeaderTrack::slotDeleteTrack() QTimer::singleShot(500, this, SLOT(deleteTrack())); } -void HeaderTrack::deleteTrack() -{ - emit deleteTrack(m_index); -} - -void HeaderTrack::slotAddTrack() -{ - emit insertTrack(m_index); -} - void HeaderTrack::slotRenameTrack() { if (m_name != track_number->text()) emit renameTrack(m_index, track_number->text()); } -void HeaderTrack::slotConfigTrack() -{ - emit configTrack(m_index); -} #include "headertrack.moc"