l2 = painter->matrix().map(l);
painter->drawLine(l2);
if (active) {
- painter->fillRect(l2.x1() - 3, l2.y1() - 3, 6, 6, color);
+ const QRectF frame(l2.x1() - 3, l2.y1() - 3, 6, 6);
+ painter->fillRect(frame, color);
}
x1 = x2;
y1 = y2;
}
- if (active) painter->fillRect(l2.x2() - 3, l2.y2() - 3, 6, 6, color);
+ if (active) {
+ const QRectF frame(l2.x2() - 3, l2.y2() - 3, 6, 6);
+ painter->fillRect(frame, color);
+ }
}
int AbstractClipItem::mouseOverKeyFrames(QPointF pos)
}
m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), maxHeight);
setSceneRect(0, 0, sceneRect().width(), maxHeight);
- //viewport()->update();
+ viewport()->update();
emit trackHeightChanged();
//QTimer::singleShot(500, this, SIGNAL(trackHeightChanged()));
//setFixedHeight(50 * m_tracksCount);
}
m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), maxHeight);
setSceneRect(0, 0, sceneRect().width(), maxHeight);
- //viewport()->update();
+ viewport()->update();
emit trackHeightChanged();
//QTimer::singleShot(500, this, SIGNAL(trackHeightChanged()));
}
ClipItem *CustomTrackView::getClipItemAt(int pos, int track)
{
- QList<QGraphicsItem *> list = scene()->items(QPointF(pos, track * m_tracksHeight + m_tracksHeight / 2));
+ const QPointF p(pos, track * m_tracksHeight + m_tracksHeight / 2);
+ QList<QGraphicsItem *> list = scene()->items(p);
ClipItem *clip = NULL;
for (int i = 0; i < list.size(); i++) {
if (list.at(i)->type() == AVWIDGET) {
Transition *CustomTrackView::getTransitionItemAt(int pos, int track)
{
- QList<QGraphicsItem *> list = scene()->items(QPointF(pos, (track + 1) * m_tracksHeight));
+ const QPointF p(pos, (track + 1) * m_tracksHeight);
+ QList<QGraphicsItem *> list = scene()->items(p);
Transition *clip = NULL;
for (int i = 0; i < list.size(); i++) {
if (list.at(i)->type() == TRANSITIONWIDGET) {
Transition *CustomTrackView::getTransitionItemAtEnd(GenTime pos, int track)
{
int framepos = (int)(pos.frames(m_document->fps()));
- QList<QGraphicsItem *> list = scene()->items(QPointF(framepos - 1, (track + 1) * m_tracksHeight));
+ const QPointF p(framepos - 1, (track + 1) * m_tracksHeight);
+ QList<QGraphicsItem *> list = scene()->items(p);
Transition *clip = NULL;
for (int i = 0; i < list.size(); i++) {
if (list.at(i)->type() == TRANSITIONWIDGET) {
Transition *CustomTrackView::getTransitionItemAtStart(GenTime pos, int track)
{
- QList<QGraphicsItem *> list = scene()->items(QPointF(pos.frames(m_document->fps()), (track + 1) * m_tracksHeight));
+ const QPointF p(pos.frames(m_document->fps()), (track + 1) * m_tracksHeight);
+ QList<QGraphicsItem *> list = scene()->items(p);
Transition *clip = NULL;
for (int i = 0; i < list.size(); ++i) {
if (list.at(i)->type() == TRANSITIONWIDGET) {
void CustomTrackView::drawBackground(QPainter * painter, const QRectF &rect)
{
- QRectF r = rect.adjusted(0, 0, 1, 0);
+ const QRectF r = rect.adjusted(0, 0, 1, 0);
painter->setClipRect(r);
painter->drawLine(r.left(), 0, r.right(), 0);
uint max = m_document->tracksCount();
QColor audioColor = palette().alternateBase().color();
QColor base = scheme.background(KColorScheme::NormalBackground).color();
for (uint i = 0; i < max; i++) {
- if (m_document->trackInfoAt(max - i - 1).isLocked == true) painter->fillRect(r.left(), m_tracksHeight * i + 1, r.right() - r.left() + 1, m_tracksHeight - 1, lockedColor);
- else if (m_document->trackInfoAt(max - i - 1).type == AUDIOTRACK) painter->fillRect(r.left(), m_tracksHeight * i + 1, r.right() - r.left() + 1, m_tracksHeight - 1, audioColor);
- painter->drawLine(r.left(), m_tracksHeight *(i + 1), r.right(), m_tracksHeight *(i + 1));
+ TrackInfo info = m_document->trackInfoAt(max - i - 1);
+ if (info.isLocked || info.type == AUDIOTRACK) {
+ const QRectF track(r.left(), m_tracksHeight * i + 1, r.right() - r.left() + 1, m_tracksHeight - 1);
+ painter->fillRect(track, info.isLocked ? lockedColor : audioColor);
+ }
+ painter->drawLine(QPointF(r.left(), m_tracksHeight *(i + 1)), QPointF(r.right(), m_tracksHeight *(i + 1)));
}
int lowerLimit = m_tracksHeight * m_document->tracksCount() + 1;
- if (height() > lowerLimit)
- painter->fillRect(QRectF(r.left(), lowerLimit, r.width(), height() - lowerLimit), base);
+ if (height() > lowerLimit) {
+ const QRectF bg(r.left(), lowerLimit, r.width(), height() - lowerLimit);
+ painter->fillRect(bg, base);
+ }
}
bool CustomTrackView::findString(const QString &text)
QRectF txtBounding = painter->boundingRect(p1.x(), p1.y() + 10, m_width, metric.height(), Qt::AlignLeft | Qt::AlignTop, ' ' + m_label + ' ');
QPainterPath path;
path.addRoundedRect(txtBounding, 3, 3);
- painter->fillPath(path, QBrush(m_pen.color()));
+ painter->fillPath(path, m_pen.color());
painter->setPen(Qt::white);
painter->drawText(txtBounding, Qt::AlignCenter, m_label);
painter->setMatrixEnabled(true);
}
-HeaderTrack::~HeaderTrack()
+/*HeaderTrack::~HeaderTrack()
{
-}
+}*/
void HeaderTrack::adjustSize(int height)
{
emit renameTrack(m_index);
}
-// virtual
-/*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));
- QPainter painter(this);
- 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"
public:
HeaderTrack(int index, TrackInfo info, int height, QWidget *parent = 0);
- virtual ~HeaderTrack();
+ //virtual ~HeaderTrack();
void setLock(bool lock);
void adjustSize(int height);
m_view.headers_area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_view.headers_area->setFixedWidth(70);
- m_headersLayout = new QVBoxLayout;
- m_headersLayout->setContentsMargins(0, m_trackview->frameWidth(), 0, 0);
- m_headersLayout->setSpacing(0);
+ QVBoxLayout *headersLayout = new QVBoxLayout;
+ headersLayout->setContentsMargins(0, m_trackview->frameWidth(), 0, 0);
+ headersLayout->setSpacing(0);
+ m_view.headers_container->setLayout(headersLayout);
connect(m_view.headers_area->verticalScrollBar(), SIGNAL(valueChanged(int)), m_trackview->verticalScrollBar(), SLOT(setValue(int)));
tracksLayout->addWidget(m_trackview);
connect(m_trackview, SIGNAL(trackHeightChanged()), this, SLOT(slotRebuildTrackHeaders()));
parseDocument(m_doc->toXml());
- m_view.headers_container->setLayout(m_headersLayout);
int error = m_doc->setSceneList();
if (error == -1) *ok = false;
else *ok = true;
void TrackView::slotRebuildTrackHeaders()
{
- kDebug() << "--------- - - - -REBUILD TLK HEAD";
const QList <TrackInfo> list = m_doc->tracksList();
QLayoutItem *child;
- //m_view.headers_container->hide();
- while ((child = m_headersLayout->takeAt(0)) != 0) {
- if (child->widget()) delete child->widget();
+ while ((child = m_view.headers_container->layout()->takeAt(0)) != 0) {
+ QWidget *wid = child->widget();
delete child;
+ if (wid) delete wid;
}
int max = list.count();
int height = KdenliveSettings::trackheight() * m_scene->scale().y() - 1;
HeaderTrack *header = NULL;
QFrame *frame = NULL;
for (int i = 0; i < max; i++) {
- frame = new QFrame(this);
+ frame = new QFrame(m_view.headers_container);
frame->setFixedHeight(1);
frame->setFrameStyle(QFrame::Plain);
frame->setFrameShape(QFrame::Box);
frame->setLineWidth(1);
- m_headersLayout->addWidget(frame);
- header = new HeaderTrack(i, list.at(max - i - 1), height, this);
+ m_view.headers_container->layout()->addWidget(frame);
+ TrackInfo info = list.at(max - i - 1);
+ header = new HeaderTrack(i, info, height, m_view.headers_container);
connect(header, SIGNAL(switchTrackVideo(int)), m_trackview, SLOT(slotSwitchTrackVideo(int)));
connect(header, SIGNAL(switchTrackAudio(int)), m_trackview, SLOT(slotSwitchTrackAudio(int)));
connect(header, SIGNAL(switchTrackLock(int)), m_trackview, SLOT(slotSwitchTrackLock(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);
+ m_view.headers_container->layout()->addWidget(header);
}
frame = new QFrame(this);
frame->setFixedHeight(1);
frame->setFrameStyle(QFrame::Plain);
frame->setFrameShape(QFrame::Box);
frame->setLineWidth(1);
- m_headersLayout->addWidget(frame);
+ m_view.headers_container->layout()->addWidget(frame);
}
{
int height = KdenliveSettings::trackheight() * m_scene->scale().y() - 1;
QLayoutItem *child;
- for (int i = 0; i < m_headersLayout->count(); i++) {
- child = m_headersLayout->itemAt(i);
+ for (int i = 0; i < m_view.headers_container->layout()->count(); i++) {
+ child = m_view.headers_container->layout()->itemAt(i);
if (child->widget() && child->widget()->height() > 5)(static_cast <HeaderTrack *>(child->widget()))->adjustSize(height);
}
}
#define TRACKVIEW_H
#include <QScrollArea>
-#include <QVBoxLayout>
#include <KRuler>
#include <QGroupBox>
#include <QGraphicsScene>
KdenliveDoc *m_doc;
int m_verticalZoom;
- QVBoxLayout *m_headersLayout;
QString m_documentErrors;
void parseDocument(QDomDocument doc);
int slotAddProjectTrack(int ix, QDomElement xml, bool locked);
painter->setMatrixEnabled(false);
//painter->drawPixmap(painter->matrix().map(p1) + QPointF(5, 0), transitionPixmap());
const QString text = m_name + (m_forceTransitionTrack ? "|>" : QString());
- const QRectF txtBounding = painter->boundingRect(mapped, Qt::AlignHCenter | Qt::AlignVCenter, ' ' + text + ' ');
- QColor frameColor(Qt::black);
+ // Draw clip name
+ QColor frameColor(brush().color().darker());
if (isSelected() || (parentItem() && parentItem()->isSelected())) {
frameColor = QColor(Qt::red);
}
- frameColor.setAlpha(150);
- painter->fillRect(txtBounding, frameColor);
+ frameColor.setAlpha(160);
+
+ const QRectF txtBounding = painter->boundingRect(mapped, Qt::AlignHCenter | Qt::AlignVCenter, ' ' + text + ' ');
+ //painter->fillRect(txtBounding2, frameColor);
+ painter->setBrush(frameColor);
+ painter->setPen(Qt::NoPen);
+ painter->drawRoundedRect(txtBounding, 3, 3);
+ painter->setBrush(QBrush(Qt::NoBrush));
painter->setPen(Qt::white);
painter->drawText(txtBounding, Qt::AlignCenter, text);
- /* painter->setPen(QColor(0, 0, 0, 180));
- top += painter->fontInfo().pixelSize();
- QPointF p2(br.x(), top);
- painter->drawText(painter->matrix().map(p2) + QPointF(26, 1), transitionName());
- painter->setPen(QColor(255, 255, 255, 180));
- QPointF p3(br.x(), top);
- painter->drawText(painter->matrix().map(p3) + QPointF(25, 0), transitionName());*/
- painter->setMatrixEnabled(true);
+ // Draw frame
QPen pen = painter->pen();
-
- if (isSelected()) {
- pen.setColor(Qt::red);
- //pen.setWidth(2);
- } else {
- pen.setColor(Qt::black);
- //pen.setWidth(1);
- }
-
- //pen.setCosmetic(true);
+ pen.setColor(frameColor);
painter->setPen(pen);
painter->setClipping(false);
- painter->drawRect(br.adjusted(0, 0, -1 / scale, 0));
+ painter->drawRect(painter->matrix().mapRect(rect()));
}
int Transition::type() const