Redo marker selection code

This commit is contained in:
Thomas Wilshaw
2021-10-22 22:15:51 +01:00
parent 853dbc0066
commit d8101869b9
7 changed files with 76 additions and 30 deletions
+27 -19
View File
@@ -99,6 +99,8 @@ void SeekableWidget::mousePressEvent(QMouseEvent *event)
if (event->button() == Qt::LeftButton) {
SeekToScreenPoint(event->pos().x());
dragging_ = true;
DeselectAllMarkers();
}
}
@@ -150,16 +152,23 @@ void SeekableWidget::SetScroll(int s)
update();
}
QMap<TimelineMarker *, Marker *> SeekableWidget::GetActiveMarkers() {
QMap<TimelineMarker *, Marker *> active_markers;
foreach(TimelineMarker* marker, marker_map_.keys()) {
if (marker_map_.value(marker)->active()) {
active_markers.insert(marker, marker_map_.value(marker));
QVector<TimelineMarker *> SeekableWidget::GetActiveTimelineMarkers() {
QVector<TimelineMarker*> active_timelineMarkers;
foreach (TimelineMarker *marker, timeline_points()->markers()->list()) {
if (marker->active()) {
active_timelineMarkers.append(marker);
}
}
return active_markers;
return active_timelineMarkers;
}
void SeekableWidget::DeselectAllMarkers()
{
foreach(TimelineMarker* marker, timeline_points()->markers()->list()) {
marker->set_active(false);
}
}
void SeekableWidget::addMarker(TimelineMarker* marker)
@@ -168,9 +177,11 @@ void SeekableWidget::addMarker(TimelineMarker* marker)
Marker *marker_widget = new Marker(this);
marker_map_.insert(marker, marker_widget);
connect(marker_widget, &Marker::ColorChanged, marker, &TimelineMarker::set_color);
connect(marker_widget, &Marker::ColorChanged, this, &SeekableWidget::SetMarkerColor);
connect(marker, &TimelineMarker::ColorChanged, marker_widget, &Marker::SetColor);
connect(marker_widget, &Marker::markerSelected, this, &SeekableWidget::markerSelected);
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);
marker_widget->SetColor(marker->color());
@@ -178,6 +189,13 @@ void SeekableWidget::addMarker(TimelineMarker* marker)
}
}
void SeekableWidget::SetMarkerColor(int c)
{
foreach(TimelineMarker* marker, GetActiveTimelineMarkers()) {
marker->set_color(c);
}
}
void SeekableWidget::updateMarkerPositions()
{
foreach (TimelineMarker* marker, marker_map_.keys()) {
@@ -186,16 +204,6 @@ void SeekableWidget::updateMarkerPositions()
}
}
void SeekableWidget::markerSelected(Marker* marker)
{
foreach(Marker * marker_widget, marker_map_.values()) {
if (marker_widget != marker) {
marker_widget->set_active(false);
marker_widget->update();
}
}
}
int SeekableWidget::TimeToScreen(const rational &time) const
{
return qFloor(TimeToScene(time)) - scroll_;
+8 -3
View File
@@ -55,7 +55,11 @@ public:
virtual void DeleteSelected(){};
QMap<TimelineMarker*, Marker*> GetActiveMarkers();
QVector<TimelineMarker*> SeekableWidget::GetActiveTimelineMarkers();
void DeselectAllMarkers();
void SeekToScreenPoint(int screen);
public slots:
void SetTime(const rational &r);
@@ -66,10 +70,9 @@ public slots:
void updateMarkerPositions();
void markerSelected(Marker* marker);
void SetMarkerColor(int c);
protected:
void SeekToScreenPoint(int screen);
virtual void mousePressEvent(QMouseEvent *event) override;
virtual void mouseMoveEvent(QMouseEvent *event) override;
@@ -117,6 +120,8 @@ private:
QMap<TimelineMarker*, Marker*> marker_map_;
QMap<TimelineMarker*, Marker*> active_markers_map_;
};
}
+2 -2
View File
@@ -85,9 +85,9 @@ void TimeRuler::SetPlaybackCache(PlaybackCache *cache)
void TimeRuler::DeleteSelected()
{
foreach(TimelineMarker* marker, GetActiveMarkers().keys()) {
foreach(TimelineMarker* marker, GetActiveTimelineMarkers()) {
timeline_points()->markers()->RemoveMarker(marker);
GetActiveMarkers().value(marker)->deleteLater();
//GetActiveMarkers().value(marker)->deleteLater();
}
}