QWidget *widget)
{
painter->setClipRect( option->exposedRect );
- painter->fillRect(rect(), Qt::red);
+ painter->fillRect(rect(), QColor(200, 50, 50, 150));
//kDebug()<<"ITEM REPAINT RECT: "<<boundingRect().width();
//painter->drawText(rect(), Qt::AlignCenter, m_name);
painter->drawRect(rect());
void CustomRuler::mousePressEvent ( QMouseEvent * event )
{
int pos = event->x();
- slotNewValue( pos );
+ slotNewValue( pos, true );
kDebug()<<pos;
}
void CustomRuler::mouseMoveEvent ( QMouseEvent * event )
{
int pos = event->x();
- slotNewValue( pos );
+ slotNewValue( pos, true );
kDebug()<<pos;
}
-void CustomRuler::slotNewValue ( int _value )
+void CustomRuler::slotNewValue ( int _value, bool emitSignal )
{
m_cursorPosition = _value / pixelPerMark();
- emit cursorMoved(m_cursorPosition / FRAME_SIZE);
+ if (emitSignal) emit cursorMoved(m_cursorPosition / FRAME_SIZE);
KRuler::slotNewValue(_value);
}
Timecode m_timecode;
public slots:
- void slotNewValue ( int _value );
+ void slotNewValue ( int _value, bool emitSignal = false );
signals:
void cursorMoved(int);
#include <QDomDocument>
#include <KDebug>
+#include <KLocale>
#include <KUrl>
#include "customtrackview.h"
#include "definitions.h"
CustomTrackView::CustomTrackView(QGraphicsScene * scene, QWidget *parent)
- : QGraphicsView(scene, parent), m_tracksCount(0), m_cursorPos(0), m_dropItem(NULL)
+ : QGraphicsView(scene, parent), m_tracksCount(0), m_cursorPos(0), m_dropItem(NULL), m_cursorLine(NULL)
{
setMouseTracking(true);
setAcceptDrops(true);
}
+void CustomTrackView::initView()
+{
+ m_cursorLine = scene()->addLine(0, 0, 0, height());
+}
+
+// virtual
+void CustomTrackView::resizeEvent ( QResizeEvent * event )
+{
+ if (m_cursorLine) m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), height());
+}
+
// virtual
void CustomTrackView::mouseMoveEvent ( QMouseEvent * event )
{
else if (event->modifiers() == Qt::ShiftModifier)
setDragMode(QGraphicsView::RubberBandDrag);
else {
- QGraphicsItem * item = itemAt(event->pos());
+ QList<QGraphicsItem *> itemList = items ( event->pos());
+ int i = 0;
+ QGraphicsItem *item = NULL;
+ for (int i = 0; i < itemList.count(); i++) {
+ if (itemList.at(i)->type() == 70000) {
+ item = itemList.at(i);
+ break;
+ }
+ }
if (item) {
- while (item->parentItem())
- item = item->parentItem();
int cursorPos = event->x();
QRectF itemRect = item->sceneBoundingRect();
int itemStart = mapFromScene(itemRect.x(), 0).x();
void CustomTrackView::setCursorPos(int pos)
{
m_cursorPos = pos;
+ m_cursorLine->setPos(pos, 0);
}
int CustomTrackView::cursorPos()
void CustomTrackView::drawBackground ( QPainter * painter, const QRectF & rect )
{
//kDebug()<<"///// DRAWING BG: "<<rect.x()<<", width: "<<rect.width();
- painter->drawRect(rect);
+ painter->drawLine(rect.x(), 0, rect.x() + rect.width(), 0);
for (uint i = 0; i < m_tracksCount;i++)
{
- painter->drawLine(rect.x(), 50 * i, rect.x() + rect.width(), 50 * i);
+ painter->drawLine(rect.x(), 50 * (i+1), rect.x() + rect.width(), 50 * (i+1));
+ painter->drawText(QRectF(10, 50 * i, 100, 50 * i + 49), Qt::AlignLeft, i18n(" Track ") + QString::number(i));
}
}
-
+/*
void CustomTrackView::drawForeground ( QPainter * painter, const QRectF & rect )
{
//kDebug()<<"///// DRAWING FB: "<<rect.x()<<", width: "<<rect.width();
+ painter->fillRect(rect, QColor(50, rand() % 250,50,100));
painter->drawLine(m_cursorPos, rect.y(), m_cursorPos, rect.y() + rect.height());
}
-
+*/
#include "customtrackview.moc"
void removeTrack();
void setCursorPos(int pos);
int cursorPos();
+ void initView();
protected:
virtual void drawBackground ( QPainter * painter, const QRectF & rect );
- virtual void drawForeground ( QPainter * painter, const QRectF & rect );
+ //virtual void drawForeground ( QPainter * painter, const QRectF & rect );
virtual void dragEnterEvent ( QDragEnterEvent * event );
virtual void dragMoveEvent(QDragMoveEvent * event);
virtual void dragLeaveEvent ( QDragLeaveEvent * event );
virtual void dropEvent ( QDropEvent * event );
virtual QStringList mimeTypes() const;
virtual Qt::DropActions supportedDropActions () const;
+ virtual void resizeEvent ( QResizeEvent * event );
private:
int m_tracksCount;
int m_cursorPos;
ClipItem *m_dropItem;
void addItem(QString producer, QPoint pos);
+ QGraphicsLineItem *m_cursorLine;
signals:
void cursorMoved(int);
#include "labelitem.h"
LabelItem::LabelItem(QString text, QGraphicsRectItem *parent)
- : QGraphicsSimpleTextItem(text, parent)
+ : QGraphicsSimpleTextItem(" " + text + " ", parent)
{
//setParentItem(parent);
setFlags(QGraphicsItem::ItemIgnoresTransformations);
}
// virtual
-/*
+
void LabelItem::paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget)
//painter->setClipRect( par);
//painter->fillRect(rect(), Qt::red);
QPainterPath path;
- path.addPolygon(mapFromParent(parentItem()->boundingRect()));
+ path.addRoundRect(boundingRect(), 40);
//painter->fillPath(path, QColor(200, 100, 200, 150));
//painter->setClipPath(path);
- painter->fillRect(boundingRect(), QColor(200, 100, 200, 150));
+ painter->fillPath(path, QColor(200, 200, 200, 100));
painter->drawText(boundingRect(), Qt::AlignCenter, text());
//painter->drawRect(rect());
//painter->drawRoundRect(-10, -10, 20, 20);
- }*/
+ }
#include "labelitem.moc"
public:
LabelItem(QString text, QGraphicsRectItem *parent = 0);
- //virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+ virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
virtual int type () const;
};
connect(m_ruler, SIGNAL(cursorMoved ( int )), this, SLOT(slotCursorMoved( int )));
connect(m_trackview, SIGNAL(cursorMoved ( int )), this, SLOT(slotCursorMoved( int )));
- m_cursorLine = m_scene->addLine(0, 0, 0, 200); //m_trackview->height());
+ m_trackview->initView();
}
void TrackView::registerFunction(const QString & name, TrackPanelFunction * function)
void TrackView::slotCursorMoved(int pos)
{
- kDebug()<<"///// CURSOR: "<<pos;
- //m_cursorLine->setPos(pos, 0);
+ //kDebug()<<"///// CURSOR: "<<pos;
+ m_ruler->slotNewValue(m_trackview->mapToScene(QPoint(pos, 0)).x());
m_trackview->setCursorPos(pos);
- m_trackview->invalidateScene(QRectF(), QGraphicsScene::ForegroundLayer);
+ //m_trackview->invalidateScene(QRectF(), QGraphicsScene::ForegroundLayer);
}
void TrackView::slotChangeZoom(int factor)
QString m_editMode;
QGraphicsScene *m_scene;
uint m_currentZoom;
- QGraphicsLineItem *m_cursorLine;
+
KdenliveDoc *m_doc;
QVBoxLayout *m_tracksLayout;