14 : QWidget(parent), m_timeStamp(0.0f), m_activeAgentId(1),
15 m_pixelsPerSecond(11.75)
17 setObjectName(
"Timeline");
18 setMinimumHeight(100);
21 SIGNAL(KeyframeAdded()),
this, SLOT(update()));
27 QPainter painter(
this);
28 painter.setBrush(Qt::black);
29 painter.setPen(Qt::black);
30 painter.drawRect(0, 0, width(), height());
31 int numDivisions = 20;
32 float increment = width() / (float)numDivisions;
33 for (
int i = 0; i <= numDivisions; ++i) {
34 float xPos = i * increment;
35 painter.setPen(Qt::lightGray);
36 painter.drawLine(xPos, 0, xPos, height());
37 QString timestampText = QString::number(i * 5);
38 painter.setPen(Qt::lightGray);
39 painter.drawText(QPointF(xPos + 2, height() - 5), timestampText);
43 painter.setBrush(Qt::red);
44 painter.setPen(Qt::red);
45 painter.drawLine(xPos, 0, xPos, height());
49 const std::vector<Core::Keyframe>& keyframes =
53 float timeStamp = kf.TimeStamp;
55 int x =
static_cast<int>((timeStamp / secondsPerPixel) -
57 int y = height() / 2 - squareSize / 2;
59 painter.setPen(Qt::NoPen);
60 painter.setBrush(Qt::red);
61 painter.drawRect(x, y, squareSize, squareSize);
68 float xPosition =
event->position().x();
69 float timeStamp = (xPosition / width()) * 100.0f;
71 bool keyframeClicked =
false;
73 if (event->button() == Qt::RightButton) {
77 const std::vector<Core::Keyframe>& keyframes =
80 for (
size_t i = 0; i < keyframes.size(); ++i) {
84 int x =
static_cast<int>((kfTimeStamp / secondsPerPixel) -
86 int y = height() / 2 - squareSize / 2;
88 QRect keyframeRect(x, y, squareSize, squareSize);
90 if (keyframeRect.contains(event->pos())) {
91 QMessageBox::StandardButton reply = QMessageBox::question(
92 this,
"Delete keyframe",
93 "Do you want to delete this keyframe?",
94 QMessageBox::Yes | QMessageBox::No);
96 if (reply == QMessageBox::Yes) {
102 keyframeClicked =
true;
108 if (!keyframeClicked) {
119 QWidget::resizeEvent(event);
float m_timeStamp
The current timestamp.
void mouseReleaseEvent(QMouseEvent *event) override
Mouse release event handler.
Timeline(QWidget *parent=nullptr)
Constructor for the Timeline class.
void timeStampSelected(float timeStamp)
Signal that is emitted when a timestamp is selected.
void resizeEvent(QResizeEvent *event) override
Resize event handler.
void paintEvent(QPaintEvent *event) override
Paint event handler.
float m_pixelsPerSecond
Pixels per second on the timeline.
void RemoveKeyframe(const Core::Keyframe &keyframe)
Removes a keyframe from the keyframe list.
static KeyframeManager & Instance()
Returns the singleton instance of the KeyframeManager.
std::vector< Core::Keyframe > & GetKeyframes()
Returns a reference to the list of keyframes.
A structure representing an agent's position in cartesian space at a given point in time.