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'.
2021-03-20 Fred Gleason <fredg@paravelsystems.com>
* 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,
SIGNAL(selectedMarkerChanged(RDMarkerHandle::PointerRole)),
d_player,SLOT(setSelectedMarker(RDMarkerHandle::PointerRole)));
connect(d_marker_view,SIGNAL(positionClicked(int)),
d_player,SLOT(setPlayPosition(int)));
//
// Marker Readouts

View File

@ -22,6 +22,7 @@
#include <QGraphicsSceneMouseEvent>
#include <QMouseEvent>
#include <QPen>
#include <QScrollBar>
#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()<d_max_shrink_factor) {
setShrinkFactor(shrinkFactor()*2);
}
d_wheel_angle=0;
}
}
int RDMarkerView::Frame(int msec) const
{
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();
void resizeEvent(QResizeEvent *e);
void mousePressEvent(QMouseEvent *e);
void wheelEvent(QWheelEvent *e);
private:
int Frame(int msec) const;
@ -167,6 +168,7 @@ class RDMarkerView : public QWidget
QAction *d_delete_marker_action;
bool d_marker_menu_used;
RDMarkerHandle::PointerRole d_selected_marker;
int d_wheel_angle;
};