From c96955b7678a60d2e681e406cecf4fa7251c8a98 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Sat, 20 Mar 2021 16:03:28 -0400 Subject: [PATCH] 2021-03-20 Fred Gleason * Added mouse wheel support to 'RDMarkerView'. * Added support for play cursor positioning by mouse to 'RDMarkerView'. Signed-off-by: Fred Gleason --- ChangeLog | 4 +++ lib/rdmarkerdialog.cpp | 2 ++ lib/rdmarkerview.cpp | 57 +++++++++++++++++++++++++++--------------- lib/rdmarkerview.h | 2 ++ 4 files changed, 45 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 56889093..f1f96623 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21297,3 +21297,7 @@ the 'Fade Up' marker'. 2021-03-20 Fred Gleason * Got digital readouts working in 'RDMarkerPlayer'. +2021-03-20 Fred Gleason + * Added mouse wheel support to 'RDMarkerView'. + * Added support for play cursor positioning by mouse to + 'RDMarkerView'. diff --git a/lib/rdmarkerdialog.cpp b/lib/rdmarkerdialog.cpp index b02503aa..7699dc4f 100644 --- a/lib/rdmarkerdialog.cpp +++ b/lib/rdmarkerdialog.cpp @@ -84,6 +84,8 @@ RDMarkerDialog::RDMarkerDialog(const QString &caption,int card,int port, connect(d_marker_view, SIGNAL(selectedMarkerChanged(RDMarkerHandle::PointerRole)), d_player,SLOT(setSelectedMarker(RDMarkerHandle::PointerRole))); + connect(d_marker_view,SIGNAL(positionClicked(int)), + d_player,SLOT(setPlayPosition(int))); // // Marker Readouts diff --git a/lib/rdmarkerview.cpp b/lib/rdmarkerview.cpp index 4735ce36..3de8684a 100644 --- a/lib/rdmarkerview.cpp +++ b/lib/rdmarkerview.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "rdescape_string.h" #include "rdmarkerview.h" @@ -584,6 +585,7 @@ void RDMarkerView::save() void RDMarkerView::clear() { + d_wheel_angle=0; if(d_scene!=NULL) { delete d_scene; d_scene=NULL; @@ -878,39 +880,34 @@ void RDMarkerView::resizeEvent(QResizeEvent *e) void RDMarkerView::mousePressEvent(QMouseEvent *e) { + int origin=0; + int msec=0; + if((e->x()<=LEFT_MARGIN)||(e->x()>d_right_margin)) { QWidget::mousePressEvent(e); return; } d_mouse_pos=e->x()-LEFT_MARGIN; + + if(d_marker_menu_used) { + d_marker_menu_used=false; + return; + } + switch(e->button()) { - /* case Qt::LeftButton: - left_button_pressed=true; - if(edit_cue_point!=RDEditAudio::Play) { - ignore_pause=true; - PositionCursor(cursor); - ignore_pause=false; - } - else { - ignore_pause=true; - rda->cae()->positionPlay(edit_handle,GetTime(cursor)); - ignore_pause=false; + if(d_view->horizontalScrollBar()!=NULL) { + origin=d_view->horizontalScrollBar()->value(); } + msec=(int64_t)(d_mouse_pos+origin)*(int64_t)d_shrink_factor*1152000/ + (int64_t)d_sample_rate; + emit positionClicked(msec); break; case Qt::MidButton: - center_button_pressed=true; - ignore_pause=true; - rda->cae()->positionPlay(edit_handle,GetTime(cursor)); - ignore_pause=false; break; - */ + case Qt::RightButton: - if(d_marker_menu_used) { - d_marker_menu_used=false; - return; - } d_deleting_roles.clear(); d_main_menu->setGeometry(e->globalX(),e->globalY(), @@ -925,6 +922,26 @@ void RDMarkerView::mousePressEvent(QMouseEvent *e) } +void RDMarkerView::wheelEvent(QWheelEvent *e) +{ + d_wheel_angle+=e->angleDelta().y(); + // printf("Angle: %d\n",d_wheel_angle); + + if(d_wheel_angle>=360) { + if(shrinkFactor()>1) { + setShrinkFactor(shrinkFactor()/2); + } + d_wheel_angle=0; + } + if(d_wheel_angle<=-360) { + if(shrinkFactor()