From bf4459cbc7dc8b497887f86236ad933548eb5a22 Mon Sep 17 00:00:00 2001 From: Thomas Wilshaw Date: Mon, 18 Oct 2021 21:24:55 +0100 Subject: [PATCH] Add labels to makers --- app/widget/marker/marker.cpp | 30 ++++++++++++++++++++++++- app/widget/marker/marker.h | 6 +++++ app/widget/timeruler/seekablewidget.cpp | 7 ++++-- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/app/widget/marker/marker.cpp b/app/widget/marker/marker.cpp index f7689e59a..cf9710c5b 100644 --- a/app/widget/marker/marker.cpp +++ b/app/widget/marker/marker.cpp @@ -24,6 +24,7 @@ #include "common/qtutils.h" #include "config/config.h" +#include "dialog/text/text.h" #include "ui/colorcoding.h" #include "widget/menu/menu.h" #include "widget/menu/menushared.h" @@ -37,7 +38,7 @@ Marker::Marker(QWidget *parent) : active_(false) { //setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - setMaximumSize(8, 20); + setMinimumSize(8, 20); setContextMenuPolicy(Qt::CustomContextMenu); connect(this, &Marker::customContextMenuRequested, this, &Marker::ShowContextMenu); @@ -98,6 +99,10 @@ void Marker::paintEvent(QPaintEvent *event) }; p.drawPolygon(points, 6); + + if (!name_.isEmpty()) { + p.drawText(x + marker_width_, y - half_text_height, name_); + } } void Marker::mousePressEvent(QMouseEvent* e) @@ -130,9 +135,24 @@ void Marker::ShowContextMenu() { m.addSeparator(); MenuShared::instance()->AddItemsForEditMenu(&m, false); + m.addSeparator(); + QAction rename; + rename.setText(tr("Rename")); + m.addAction(&rename); + connect(&rename, &QAction::triggered, this, &Marker::Rename); + m.exec(QCursor::pos()); } +void Marker::Rename() +{ + TextDialog d(this->name_, this); + if (d.exec() == QDialog::Accepted) { + QString s = d.text(); + emit NameChanged(s); + } +} + void Marker::SetColor(int c) { marker_color_ = c; @@ -140,4 +160,12 @@ void Marker::SetColor(int c) update(); } +void Marker::SetName(QString s) +{ + name_ = s; + qDebug() << name_; + + update(); +} + } // namespace olive diff --git a/app/widget/marker/marker.h b/app/widget/marker/marker.h index cb23cc39a..f86528450 100644 --- a/app/widget/marker/marker.h +++ b/app/widget/marker/marker.h @@ -37,9 +37,12 @@ class Marker : public QWidget { bool active(); + void Rename(); + public slots: void SetColor(int c); void SetActive(bool active); + void SetName(QString s); protected: void paintEvent(QPaintEvent* event) override; @@ -53,6 +56,7 @@ class Marker : public QWidget { void ColorChanged(int c); void markerSelected(Marker* marker); void ActiveChanged(bool active); + void NameChanged(QString name); private: @@ -60,6 +64,8 @@ class Marker : public QWidget { bool active_; + QString name_; + private slots: void ShowContextMenu(); }; diff --git a/app/widget/timeruler/seekablewidget.cpp b/app/widget/timeruler/seekablewidget.cpp index 90fb36c79..18f8630a8 100644 --- a/app/widget/timeruler/seekablewidget.cpp +++ b/app/widget/timeruler/seekablewidget.cpp @@ -210,7 +210,10 @@ void SeekableWidget::addMarker(TimelineMarker* marker) connect(marker_widget, &Marker::ActiveChanged, marker, &TimelineMarker::set_active); connect(marker, &TimelineMarker::ActiveChanged, marker_widget, &Marker::SetActive); - marker_widget->move(TimeToScreen(marker->time().in()), 20); + connect(marker_widget, &Marker::NameChanged, marker, &TimelineMarker::set_name); + connect(marker, &TimelineMarker::NameChanged, marker_widget, &Marker::SetName); + + marker_widget->move(TimeToScreen(marker->time().in()), text_height_); marker_widget->SetColor(marker->color()); marker_widget->show(); } @@ -233,7 +236,7 @@ void SeekableWidget::updateMarkerPositions() { foreach (TimelineMarker* marker, marker_map_.keys()) { Marker *m = marker_map_.value(marker); - m->move(TimeToScreen(marker->time().in()), 20); + m->move(TimeToScreen(marker->time().in()), text_height_); } }