2021-03-20 Fred Gleason <fredg@paravelsystems.com>

* Added mouse wheel support to 'RDMarkerView'.
	* Added support for play cursor positioning by mouse to
	'RDMarkerView'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-03-20 16:03:28 -04:00
parent edf06f2d2f
commit c96955b767
4 changed files with 45 additions and 20 deletions

View File

@ -21297,3 +21297,7 @@
the 'Fade Up' marker'. the 'Fade Up' marker'.
2021-03-20 Fred Gleason <fredg@paravelsystems.com> 2021-03-20 Fred Gleason <fredg@paravelsystems.com>
* Got digital readouts working in 'RDMarkerPlayer'. * Got digital readouts working in 'RDMarkerPlayer'.
2021-03-20 Fred Gleason <fredg@paravelsystems.com>
* Added mouse wheel support to 'RDMarkerView'.
* Added support for play cursor positioning by mouse to
'RDMarkerView'.

View File

@ -84,6 +84,8 @@ RDMarkerDialog::RDMarkerDialog(const QString &caption,int card,int port,
connect(d_marker_view, connect(d_marker_view,
SIGNAL(selectedMarkerChanged(RDMarkerHandle::PointerRole)), SIGNAL(selectedMarkerChanged(RDMarkerHandle::PointerRole)),
d_player,SLOT(setSelectedMarker(RDMarkerHandle::PointerRole))); d_player,SLOT(setSelectedMarker(RDMarkerHandle::PointerRole)));
connect(d_marker_view,SIGNAL(positionClicked(int)),
d_player,SLOT(setPlayPosition(int)));
// //
// Marker Readouts // Marker Readouts

View File

@ -22,6 +22,7 @@
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
#include <QMouseEvent> #include <QMouseEvent>
#include <QPen> #include <QPen>
#include <QScrollBar>
#include "rdescape_string.h" #include "rdescape_string.h"
#include "rdmarkerview.h" #include "rdmarkerview.h"
@ -584,6 +585,7 @@ void RDMarkerView::save()
void RDMarkerView::clear() void RDMarkerView::clear()
{ {
d_wheel_angle=0;
if(d_scene!=NULL) { if(d_scene!=NULL) {
delete d_scene; delete d_scene;
d_scene=NULL; d_scene=NULL;
@ -878,39 +880,34 @@ void RDMarkerView::resizeEvent(QResizeEvent *e)
void RDMarkerView::mousePressEvent(QMouseEvent *e) void RDMarkerView::mousePressEvent(QMouseEvent *e)
{ {
int origin=0;
int msec=0;
if((e->x()<=LEFT_MARGIN)||(e->x()>d_right_margin)) { if((e->x()<=LEFT_MARGIN)||(e->x()>d_right_margin)) {
QWidget::mousePressEvent(e); QWidget::mousePressEvent(e);
return; return;
} }
d_mouse_pos=e->x()-LEFT_MARGIN; d_mouse_pos=e->x()-LEFT_MARGIN;
if(d_marker_menu_used) {
d_marker_menu_used=false;
return;
}
switch(e->button()) { switch(e->button()) {
/*
case Qt::LeftButton: case Qt::LeftButton:
left_button_pressed=true; if(d_view->horizontalScrollBar()!=NULL) {
if(edit_cue_point!=RDEditAudio::Play) { origin=d_view->horizontalScrollBar()->value();
ignore_pause=true;
PositionCursor(cursor);
ignore_pause=false;
}
else {
ignore_pause=true;
rda->cae()->positionPlay(edit_handle,GetTime(cursor));
ignore_pause=false;
} }
msec=(int64_t)(d_mouse_pos+origin)*(int64_t)d_shrink_factor*1152000/
(int64_t)d_sample_rate;
emit positionClicked(msec);
break; break;
case Qt::MidButton: case Qt::MidButton:
center_button_pressed=true;
ignore_pause=true;
rda->cae()->positionPlay(edit_handle,GetTime(cursor));
ignore_pause=false;
break; break;
*/
case Qt::RightButton: case Qt::RightButton:
if(d_marker_menu_used) {
d_marker_menu_used=false;
return;
}
d_deleting_roles.clear(); d_deleting_roles.clear();
d_main_menu->setGeometry(e->globalX(),e->globalY(), 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()<d_max_shrink_factor) {
setShrinkFactor(shrinkFactor()*2);
}
d_wheel_angle=0;
}
}
int RDMarkerView::Frame(int msec) const int RDMarkerView::Frame(int msec) const
{ {
return (int)((int64_t)msec*(int64_t)d_sample_rate/(d_shrink_factor*1152000)); return (int)((int64_t)msec*(int64_t)d_sample_rate/(d_shrink_factor*1152000));

View File

@ -124,6 +124,7 @@ class RDMarkerView : public QWidget
virtual void updateInterlocks(); virtual void updateInterlocks();
void resizeEvent(QResizeEvent *e); void resizeEvent(QResizeEvent *e);
void mousePressEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e);
void wheelEvent(QWheelEvent *e);
private: private:
int Frame(int msec) const; int Frame(int msec) const;
@ -167,6 +168,7 @@ class RDMarkerView : public QWidget
QAction *d_delete_marker_action; QAction *d_delete_marker_action;
bool d_marker_menu_used; bool d_marker_menu_used;
RDMarkerHandle::PointerRole d_selected_marker; RDMarkerHandle::PointerRole d_selected_marker;
int d_wheel_angle;
}; };