widgets/saveprofile_ui.ui
widgets/transitionsettings_ui.ui
widgets/configjogshuttle_ui.ui
+ widgets/trackheader_ui.ui
)
set(kdenlive_SRCS
m_autoScroll = KdenliveSettings::autoscroll();
}
-QList <TRACKTYPE> CustomTrackView::tracksList() const {
+QList <TrackInfo> CustomTrackView::tracksList() const {
return m_tracksList;
}
int videoTracksCount = 0;
track --;
for (int i = track; i > -1; i--) {
- if (m_tracksList.at(i) == VIDEOTRACK) return i + 1;
+ if (m_tracksList.at(i).type == VIDEOTRACK) return i + 1;
}
return 0;
}
void CustomTrackView::deleteTransition(int, GenTime, QDomElement e) {
QMap < QString, QString> map;
QDomNamedNodeMap attribs = e.attributes();
- m_document->renderer()->mltDeleteTransition(e.attribute("type"), m_tracksList.count() - 1 - e.attribute("transition_track").toInt(), m_tracksList.count() - e.attribute("transition_track").toInt() ,
+ m_document->renderer()->mltDeleteTransition(e.attribute("type"), getPreviousVideoTrack(e.attribute("transition_track").toInt()), m_tracksList.count() - e.attribute("transition_track").toInt() ,
GenTime(e.attribute("start").toInt(), m_document->renderer()->fps()),
GenTime(e.attribute("end").toInt(), m_document->renderer()->fps()),
map);
)
map[attribs.item(i).nodeName()] = attribs.item(i).nodeValue();
}
- m_document->renderer()->mltUpdateTransition(oldTransition.attribute("type"),transition.attribute("type"), m_tracksList.count() - 1 - transition.attribute("transition_track").toInt(), m_tracksList.count() - transition.attribute("transition_track").toInt() ,
+ m_document->renderer()->mltUpdateTransition(oldTransition.attribute("type"), transition.attribute("type"), m_tracksList.count() - 1 - transition.attribute("transition_track").toInt(), m_tracksList.count() - transition.attribute("transition_track").toInt() ,
GenTime(transition.attribute("start").toInt(), m_document->renderer()->fps()),
GenTime(transition.attribute("end").toInt(), m_document->renderer()->fps()),
map);
}
void CustomTrackView::setDuration(int duration) {
- //kDebug() << "///////////// PRO DUR: " << duration << ", height: " << 50 * m_tracksList.count();
+ kDebug() << "///////////// PRO DUR: " << duration << ", SCALE. " << m_scale << ", height: " << 50 * m_tracksList.count();
m_projectDuration = duration;
scene()->setSceneRect(0, 0, (m_projectDuration + 500) * m_scale, scene()->sceneRect().height()); //50 * m_tracksCount);
+ horizontalScrollBar()->setMaximum((m_projectDuration + 500) * m_scale);
}
int CustomTrackView::duration() const {
return m_projectDuration;
}
-void CustomTrackView::addTrack(TRACKTYPE type) {
+void CustomTrackView::addTrack(TrackInfo type) {
m_tracksList << type;
m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), m_tracksHeight * m_tracksList.count());
setSceneRect(0, 0, sceneRect().width(), m_tracksHeight * m_tracksList.count());
m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), m_tracksHeight * m_tracksList.count());
}
+
+void CustomTrackView::slotSwitchTrackAudio(int ix) {
+ int tracknumber = m_tracksList.count() - ix;
+ kDebug() << "///// MUTING TRK: " << ix << "; PL NUM: " << tracknumber;
+ m_tracksList[tracknumber - 1].isMute = !m_tracksList.at(tracknumber - 1).isMute;
+ m_document->renderer()->mltChangeTrackState(tracknumber, m_tracksList.at(tracknumber - 1).isMute, m_tracksList.at(tracknumber - 1).isBlind);
+}
+
+void CustomTrackView::slotSwitchTrackVideo(int ix) {
+ int tracknumber = m_tracksList.count() - ix;
+ m_tracksList[tracknumber - 1].isBlind = !m_tracksList.at(tracknumber - 1).isBlind;
+ m_document->renderer()->mltChangeTrackState(tracknumber, m_tracksList.at(tracknumber - 1).isMute, m_tracksList.at(tracknumber - 1).isBlind);
+}
+
void CustomTrackView::deleteClip(int clipId) {
QList<QGraphicsItem *> itemList = items();
for (int i = 0; i < itemList.count(); i++) {
painter->drawLine(rectInView.left(), 0, rectInView.right(), 0);
uint max = m_tracksList.count();
for (uint i = 0; i < max;i++) {
- if (m_tracksList.at(max - i - 1) == AUDIOTRACK) painter->fillRect(rectInView.left(), m_tracksHeight * i + 1, rectInView.right() - rectInView.left() + 1, m_tracksHeight - 1, QBrush(QColor(240, 240, 255)));
+ if (m_tracksList.at(max - i - 1).type == AUDIOTRACK) painter->fillRect(rectInView.left(), m_tracksHeight * i + 1, rectInView.right() - rectInView.left() + 1, m_tracksHeight - 1, QBrush(QColor(240, 240, 255)));
painter->drawLine(rectInView.left(), m_tracksHeight * (i + 1), rectInView.right(), m_tracksHeight * (i + 1));
//painter->drawText(QRectF(10, 50 * i, 100, 50 * i + 49), Qt::AlignLeft, i18n(" Track ") + QString::number(i + 1));
}
virtual void mousePressEvent(QMouseEvent * event);
virtual void mouseReleaseEvent(QMouseEvent * event);
virtual void mouseMoveEvent(QMouseEvent * event);
- void addTrack(TRACKTYPE type);
+ void addTrack(TrackInfo type);
void removeTrack();
int cursorPos();
void checkAutoScroll();
void deleteSelectedClips();
void setContextMenu(QMenu *timeline, QMenu *clip, QMenu *transition);
void checkTrackHeight();
- QList <TRACKTYPE> tracksList() const;
+ QList <TrackInfo> tracksList() const;
public slots:
void setCursorPos(int pos, bool seek = true);
void setDuration(int duration);
void slotAddTransition(ClipItem* clip , QDomElement transition, GenTime startTime , int startTrack);
void slotTransitionUpdated(QDomElement, QDomElement);
+ void slotSwitchTrackAudio(int ix);
+ void slotSwitchTrackVideo(int ix);
protected:
virtual void drawBackground(QPainter * painter, const QRectF & rect);
QMenu *m_timelineContextMenu;
QMenu *m_timelineContextClipMenu;
QMenu *m_timelineContextTransitionMenu;
- QList <TRACKTYPE> m_tracksList;
+ QList <TrackInfo> m_tracksList;
/** Get the index of the video track that is just below current track */
int getPreviousVideoTrack(int track);
enum TRACKTYPE { AUDIOTRACK = 0, VIDEOTRACK = 1 };
+struct TrackInfo {
+ TRACKTYPE type;
+ bool isMute;
+ bool isBlind;
+};
+
struct MltVideoProfile {
QString path;
QString description;
#include "kdenlivesettings.h"
#include "headertrack.h"
-HeaderTrack::HeaderTrack(int index, TRACKTYPE type, QWidget *parent)
- : QWidget(parent), m_index(index), m_type(type) {
+HeaderTrack::HeaderTrack(int index, TrackInfo info, QWidget *parent)
+ : QWidget(parent), m_index(index), m_type(info.type) {
setFixedHeight(KdenliveSettings::trackheight());
- //setFixedWidth(30);
- m_label = QString::number(m_index);
+ view.setupUi(this);
+ view.track_number->setText(QString::number(m_index));
+ if (m_type == VIDEOTRACK) {
+ view.frame->setBackgroundRole(QPalette::AlternateBase);
+ view.frame->setAutoFillBackground(true);
+ } else {
+ view.buttonVideo->setHidden(true);
+ }
+ view.buttonVideo->setChecked(!info.isBlind);
+ view.buttonAudio->setChecked(!info.isMute);
+ connect(view.buttonVideo, SIGNAL(clicked()), this, SLOT(switchVideo()));
+ connect(view.buttonAudio, SIGNAL(clicked()), this, SLOT(switchAudio()));
+}
+
+void HeaderTrack::switchVideo() {
+ emit switchTrackVideo(m_index);
+}
+
+void HeaderTrack::switchAudio() {
+ emit switchTrackAudio(m_index);
}
// virtual
-void HeaderTrack::paintEvent(QPaintEvent *e) {
+/*void HeaderTrack::paintEvent(QPaintEvent *e) {
QRect region = e->rect();
region.setTopLeft(QPoint(region.left() + 1, region.top() + 1));
region.setBottomRight(QPoint(region.right() - 1, region.bottom() - 1));
if (m_type == AUDIOTRACK) painter.fillRect(region, QBrush(QColor(240, 240, 255)));
else painter.fillRect(region, QBrush(QColor(255, 255, 255)));
painter.drawText(region, Qt::AlignCenter, m_label);
-}
+}*/
#include "headertrack.moc"
#define HEADERTRACK_H
#include "definitions.h"
+#include "ui_trackheader_ui.h"
class HeaderTrack : public QWidget {
Q_OBJECT
public:
- HeaderTrack(int index, TRACKTYPE type, QWidget *parent = 0);
+ HeaderTrack(int index, TrackInfo info, QWidget *parent = 0);
protected:
- virtual void paintEvent(QPaintEvent * /*e*/);
+ //virtual void paintEvent(QPaintEvent * /*e*/);
private:
int m_index;
- QString m_label;
TRACKTYPE m_type;
+ Ui::TrackHeader_UI view;
-public slots:
+private slots:
+ void switchAudio();
+ void switchVideo();
+signals:
+ void switchTrackAudio(int);
+ void switchTrackVideo(int);
};
#endif
}
void TrackView::slotRebuildTrackHeaders() {
- QList <TRACKTYPE> list = m_trackview->tracksList();
+ QList <TrackInfo> list = m_trackview->tracksList();
QList<HeaderTrack *> widgets = this->findChildren<HeaderTrack *>();
for (int i = 0; i < widgets.count(); i++)
delete widgets.at(i);
int max = list.count();
for (int i = 0; i < max; i++) {
HeaderTrack *header = new HeaderTrack(i, list.at(max - i - 1), this);
+ connect(header, SIGNAL(switchTrackVideo(int)), m_trackview, SLOT(slotSwitchTrackVideo(int)));
+ connect(header, SIGNAL(switchTrackAudio(int)), m_trackview, SLOT(slotSwitchTrackAudio(int)));
m_headersLayout->addWidget(header);
}
view->headers_container->adjustSize();
int TrackView::slotAddAudioTrack(int ix, QDomElement xml) {
kDebug() << "************* ADD AUDIO TRACK " << ix;
- m_trackview->addTrack(AUDIOTRACK);
+ TrackInfo info;
+ info.type = AUDIOTRACK;
+ info.isMute = false;
+ info.isBlind = false;
+ m_trackview->addTrack(info);
//documentTracks.insert(ix, track);
return 0;
//track->show();
}
int TrackView::slotAddVideoTrack(int ix, QDomElement xml) {
- m_trackview->addTrack(VIDEOTRACK);
+ TrackInfo info;
+ info.type = VIDEOTRACK;
+ info.isMute = false;
+ info.isBlind = false;
+ m_trackview->addTrack(info);
int trackTop = KdenliveSettings::trackheight() * ix;
// parse track
<widget class="QScrollArea" name="headers_area" >
<property name="minimumSize" >
<size>
- <width>50</width>
+ <width>60</width>
<height>0</height>
</size>
</property>
<property name="maximumSize" >
<size>
- <width>50</width>
+ <width>60</width>
<height>16777215</height>
</size>
</property>
<property name="focusPolicy" >
<enum>Qt::NoFocus</enum>
</property>
+ <property name="verticalScrollBarPolicy" >
+ <enum>Qt::ScrollBarAlwaysOff</enum>
+ </property>
+ <property name="horizontalScrollBarPolicy" >
+ <enum>Qt::ScrollBarAlwaysOff</enum>
+ </property>
<property name="widgetResizable" >
<bool>true</bool>
</property>
<rect>
<x>0</x>
<y>0</y>
- <width>44</width>
+ <width>54</width>
<height>173</height>
</rect>
</property>
--- /dev/null
+<ui version="4.0" >
+ <class>TrackHeader_UI</class>
+ <widget class="QWidget" name="TrackHeader_UI" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>50</width>
+ <height>51</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2" >
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <property name="topMargin" >
+ <number>2</number>
+ </property>
+ <property name="rightMargin" >
+ <number>0</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>2</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QFrame" name="frame" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow" >
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QGridLayout" name="gridLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>0</number>
+ </property>
+ <item row="0" column="0" colspan="3" >
+ <widget class="QLabel" name="track_number" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Maximum" hsizetype="MinimumExpanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>0</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QToolButton" name="buttonAudio" >
+ <property name="maximumSize" >
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="text" >
+ <string>A</string>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
+ <property name="arrowType" >
+ <enum>Qt::NoArrow</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" >
+ <widget class="QToolButton" name="buttonVideo" >
+ <property name="maximumSize" >
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="text" >
+ <string>V</string>
+ </property>
+ <property name="checkable" >
+ <bool>true</bool>
+ </property>
+ <property name="checked" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <spacer name="horizontalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>