X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fheadertrack.cpp;h=e04df2470e9f1c876de1dbed1fcae203d7aa49ad;hb=42af581eaabb00ee75768352d0baa01e4c98df58;hp=3062c4ede72c66734b98b510620b5caa0f762d91;hpb=80ffbcaa1c48929abe0cb439eaea4deb0ecce534;p=kdenlive diff --git a/src/headertrack.cpp b/src/headertrack.cpp index 3062c4ed..e04df247 100644 --- a/src/headertrack.cpp +++ b/src/headertrack.cpp @@ -23,122 +23,208 @@ #include #include #include +#include #include #include #include #include #include +#include +#include HeaderTrack::HeaderTrack(int index, TrackInfo info, int height, QWidget *parent) : QWidget(parent), m_index(index), - m_type(info.type) + m_type(info.type), + m_isSelected(false) { setFixedHeight(height); - m_view.setupUi(this); - m_view.track_number->setText(info.trackName.isEmpty() ? QString::number(m_index) : info.trackName); + setupUi(this); + QColor col = track_number->palette().color(QPalette::Base); + track_number->setStyleSheet(QString("QLineEdit { background-color: transparent;} 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())); - m_view.buttonVideo->setChecked(info.isBlind); - m_view.buttonVideo->setToolTip(i18n("Hide track")); - m_view.buttonAudio->setChecked(info.isMute); - m_view.buttonAudio->setToolTip(i18n("Mute track")); - m_view.buttonLock->setChecked(info.isLocked); - m_view.buttonLock->setToolTip(i18n("Lock track")); + m_name = info.trackName.isEmpty() ? QString::number(m_index) : info.trackName; + track_number->setText(m_name); + connect(track_number, SIGNAL(editingFinished()), this, SLOT(slotRenameTrack())); + + buttonVideo->setChecked(info.isBlind); + buttonVideo->setToolTip(i18n("Hide track")); + buttonAudio->setChecked(info.isMute); + buttonAudio->setToolTip(i18n("Mute track")); + buttonLock->setChecked(info.isLocked); + buttonLock->setToolTip(i18n("Lock track")); + + setAcceptDrops(true); + + QPalette p = palette(); + KColorScheme scheme(p.currentColorGroup(), KColorScheme::Window); + p.setColor(QPalette::Button, scheme.background(KColorScheme::ActiveBackground).color().darker(120)); + setPalette(p); if (m_type == VIDEOTRACK) { setBackgroundRole(QPalette::AlternateBase); setAutoFillBackground(true); - if (!info.isBlind) m_view.buttonVideo->setIcon(KIcon("kdenlive-show-video")); - else m_view.buttonVideo->setIcon(KIcon("kdenlive-hide-video")); + if (!info.isBlind) + buttonVideo->setIcon(KIcon("kdenlive-show-video")); + else + buttonVideo->setIcon(KIcon("kdenlive-hide-video")); } else { - m_view.buttonVideo->setHidden(true); + buttonVideo->setHidden(true); } - if (!info.isMute) m_view.buttonAudio->setIcon(KIcon("kdenlive-show-audio")); - else m_view.buttonAudio->setIcon(KIcon("kdenlive-hide-audio")); + if (!info.isMute) + buttonAudio->setIcon(KIcon("kdenlive-show-audio")); + else + buttonAudio->setIcon(KIcon("kdenlive-hide-audio")); - if (!info.isLocked) m_view.buttonLock->setIcon(KIcon("kdenlive-unlock")); - else m_view.buttonLock->setIcon(KIcon("kdenlive-lock")); + if (!info.isLocked) + buttonLock->setIcon(KIcon("kdenlive-unlock")); + else + buttonLock->setIcon(KIcon("kdenlive-lock")); - connect(m_view.buttonVideo, SIGNAL(clicked()), this, SLOT(switchVideo())); - connect(m_view.buttonAudio, SIGNAL(clicked()), this, SLOT(switchAudio())); - connect(m_view.buttonLock, SIGNAL(clicked()), this, SLOT(switchLock())); + connect(buttonVideo, SIGNAL(clicked()), this, SLOT(switchVideo())); + connect(buttonAudio, SIGNAL(clicked()), this, SLOT(switchAudio())); + connect(buttonLock, SIGNAL(clicked()), this, SLOT(switchLock())); // Don't show track buttons if size is too small if (height < 40) { - m_view.buttonVideo->setHidden(true); - m_view.buttonAudio->setHidden(true); - m_view.buttonLock->setHidden(true); - //m_view.horizontalSpacer; + buttonVideo->setHidden(true); + buttonAudio->setHidden(true); + buttonLock->setHidden(true); + //horizontalSpacer; } - setContextMenuPolicy(Qt::ActionsContextMenu); + setContextMenuPolicy(Qt::DefaultContextMenu); //Qt::ActionsContextMenu); QAction *insertAction = new QAction(i18n("Insert Track"), this); - addAction(insertAction); + m_menu.addAction(insertAction); connect(insertAction, SIGNAL(triggered()), this, SLOT(slotAddTrack())); QAction *removeAction = new QAction(KIcon("edit-delete"), i18n("Delete Track"), this); - addAction(removeAction); + m_menu.addAction(removeAction); connect(removeAction, SIGNAL(triggered()), this, SLOT(slotDeleteTrack())); - 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())); - + QAction *configAction = new QAction(KIcon("configure"), i18n("Configure Track"), this); + m_menu.addAction(configAction); + connect(configAction, SIGNAL(triggered()), this, SLOT(slotConfigTrack())); } /*HeaderTrack::~HeaderTrack() { }*/ +// virtual +void HeaderTrack::mousePressEvent(QMouseEvent * event) +{ + if (track_number->hasFocus()) { + track_number->clearFocus(); + return; + } + if (!m_isSelected) emit selectTrack(m_index); + emit showTrackEffects(m_index); + 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(); + QWidget::mouseDoubleClickEvent(event); +} + +//virtual +void HeaderTrack::dropEvent(QDropEvent * event) +{ + const QString effects = QString(event->mimeData()->data("kdenlive/effectslist")); + QDomDocument doc; + doc.setContent(effects, true); + const QDomElement e = doc.documentElement(); + emit selectTrack(m_index); + emit addTrackInfo(e, m_index); + /*if (scene() && !scene()->views().isEmpty()) { + event->accept(); + CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; + if (view) view->slotAddEffect(e, m_info.startPos, track()); + }*/ +} + +//virtual +void HeaderTrack::dragEnterEvent(QDragEnterEvent *event) +{ + if (buttonLock->isChecked()) event->setAccepted(false); + else event->setAccepted(event->mimeData()->hasFormat("kdenlive/effectslist")); +} + +void HeaderTrack::setSelectedIndex(int ix) +{ + if (m_index == ix) { + m_isSelected = true; + setBackgroundRole(QPalette::Button); + setAutoFillBackground(true); + } else if (m_type != VIDEOTRACK) { + m_isSelected = false; + setAutoFillBackground(false); + } else { + m_isSelected = false; + setBackgroundRole(QPalette::AlternateBase); + } + update(); +} + void HeaderTrack::adjustSize(int height) { // Don't show track buttons if size is too small bool smallTracks = height < 40; - if (m_type == VIDEOTRACK) m_view.buttonVideo->setHidden(smallTracks); - m_view.buttonAudio->setHidden(smallTracks); - m_view.buttonLock->setHidden(smallTracks); + if (m_type == VIDEOTRACK) + buttonVideo->setHidden(smallTracks); + buttonAudio->setHidden(smallTracks); + buttonLock->setHidden(smallTracks); setFixedHeight(height); } void HeaderTrack::switchVideo() { - if (m_view.buttonVideo->isChecked()) { - m_view.buttonVideo->setIcon(KIcon("kdenlive-hide-video")); - } else { - m_view.buttonVideo->setIcon(KIcon("kdenlive-show-video")); - } + if (buttonVideo->isChecked()) + buttonVideo->setIcon(KIcon("kdenlive-hide-video")); + else + buttonVideo->setIcon(KIcon("kdenlive-show-video")); emit switchTrackVideo(m_index); } void HeaderTrack::switchAudio() { - if (m_view.buttonAudio->isChecked()) { - m_view.buttonAudio->setIcon(KIcon("kdenlive-hide-audio")); - } else { - m_view.buttonAudio->setIcon(KIcon("kdenlive-show-audio")); - } + if (buttonAudio->isChecked()) + buttonAudio->setIcon(KIcon("kdenlive-hide-audio")); + else + buttonAudio->setIcon(KIcon("kdenlive-show-audio")); emit switchTrackAudio(m_index); } void HeaderTrack::switchLock(bool emitSignal) { - if (m_view.buttonLock->isChecked()) { - m_view.buttonLock->setIcon(KIcon("kdenlive-lock")); - } else { - m_view.buttonLock->setIcon(KIcon("kdenlive-unlock")); - } - if (emitSignal) emit switchTrackLock(m_index); + if (buttonLock->isChecked()) + buttonLock->setIcon(KIcon("kdenlive-lock")); + else + buttonLock->setIcon(KIcon("kdenlive-unlock")); + if (emitSignal) + emit switchTrackLock(m_index); } - void HeaderTrack::setLock(bool lock) { - m_view.buttonLock->setChecked(lock); + buttonLock->setChecked(lock); switchLock(false); } @@ -157,14 +243,14 @@ void HeaderTrack::slotAddTrack() emit insertTrack(m_index); } -void HeaderTrack::slotChangeTrack() +void HeaderTrack::slotRenameTrack() { - emit changeTrack(m_index); + if (m_name != track_number->text()) emit renameTrack(m_index, track_number->text()); } -void HeaderTrack::slotRenameTrack() +void HeaderTrack::slotConfigTrack() { - emit renameTrack(m_index); + emit configTrack(m_index); }