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

* Got digital readouts working in 'RDMarkerPlayer'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-03-20 14:57:37 -04:00
parent bb4fe56bb7
commit edf06f2d2f
6 changed files with 121 additions and 46 deletions

View File

@ -21295,3 +21295,5 @@
* Fixed a bug in 'RDMarkerView' that caused an incorrect limit * Fixed a bug in 'RDMarkerView' that caused an incorrect limit
stop to be applied to the 'Fade Down' marker after deletion of stop to be applied to the 'Fade Down' marker after deletion of
the 'Fade Up' marker'. the 'Fade Up' marker'.
2021-03-20 Fred Gleason <fredg@paravelsystems.com>
* Got digital readouts working in 'RDMarkerPlayer'.

View File

@ -206,6 +206,8 @@ int RDMarkerDialog::exec(unsigned cartnum,int cutnum)
d_player->setPointerValue(role,d_marker_view->pointerValue(role)); d_player->setPointerValue(role,d_marker_view->pointerValue(role));
d_player->setSelectedMarker(RDMarkerHandle::LastRole); d_player->setSelectedMarker(RDMarkerHandle::LastRole);
} }
d_marker_view->setSelectedMarker(RDMarkerHandle::CutStart);
return QDialog::exec(); return QDialog::exec();
} }

View File

@ -18,6 +18,7 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// //
#include "rdconf.h"
#include "rdmixer.h" #include "rdmixer.h"
#include "rdmarkerplayer.h" #include "rdmarkerplayer.h"
@ -42,33 +43,41 @@ RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent)
// //
// Time Counters // Time Counters
// //
d_overall_label=new QLabel(tr("Position"),this); d_position_label=new QLabel(tr("Position"),this);
d_overall_label->setFont(subLabelFont()); d_position_label->setFont(subLabelFont());
d_overall_label->setAlignment(Qt::AlignHCenter); d_position_label->setAlignment(Qt::AlignCenter);
d_overall_label-> d_position_label->
setPalette(QPalette(palette().color(QPalette::Background), setPalette(QPalette(palette().color(QPalette::Background),
QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR)));
d_overall_edit=new QLineEdit(this); d_position_edit=new QLabel(this);
d_overall_edit->setAcceptDrops(false); d_position_edit->setAcceptDrops(false);
d_overall_edit->setReadOnly(true); d_position_edit->setAlignment(Qt::AlignCenter);
d_position_edit->
setStyleSheet("background-color: "+palette().color(QPalette::Base).name());
d_region_edit_label=new QLabel("Region",this); d_region_edit_label=new QLabel("Region",this);
d_region_edit_label->setFont(subLabelFont()); d_region_edit_label->setFont(subLabelFont());
d_region_edit_label->setAlignment(Qt::AlignHCenter); d_region_edit_label->setAlignment(Qt::AlignCenter);
d_region_edit_label-> d_region_edit_label->
setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); setPalette(QPalette(palette().color(QPalette::Background),
d_region_edit=new QLineEdit(this); QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR)));
d_region_edit=new QLabel(this);
d_region_edit->setAcceptDrops(false); d_region_edit->setAcceptDrops(false);
d_region_edit->setReadOnly(true); d_region_edit->setAlignment(Qt::AlignCenter);
d_region_edit->
setStyleSheet("background-color: "+palette().color(QPalette::Base).name());
d_size_label=new QLabel(tr("Length"),this); d_length_label=new QLabel(tr("Length"),this);
d_size_label->setFont(subLabelFont()); d_length_label->setFont(subLabelFont());
d_size_label->setAlignment(Qt::AlignHCenter); d_length_label->setAlignment(Qt::AlignCenter);
d_size_label-> d_length_label->
setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); setPalette(QPalette(palette().color(QPalette::Background),
d_size_edit=new QLineEdit(this); QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR)));
d_size_edit->setAcceptDrops(false); d_length_edit=new QLabel(this);
d_size_edit->setReadOnly(true); d_length_edit->setAcceptDrops(false);
d_length_edit->setAlignment(Qt::AlignCenter);
d_length_edit->
setStyleSheet("background-color: "+palette().color(QPalette::Base).name());
// //
// Transport Buttons // Transport Buttons
@ -164,25 +173,29 @@ void RDMarkerPlayer::clearCut()
void RDMarkerPlayer::setPlayPosition(int msec) void RDMarkerPlayer::setPlayPosition(int msec)
{ {
rda->cae()->positionPlay(d_cae_handle,msec);
} }
void RDMarkerPlayer::setPointerValue(RDMarkerHandle::PointerRole role,int ptr) void RDMarkerPlayer::setPointerValue(RDMarkerHandle::PointerRole role,int ptr)
{ {
if(ptr!=d_pointers[role]) {
d_pointers[role]=ptr; d_pointers[role]=ptr;
UpdateReadouts();
}
} }
void RDMarkerPlayer::setSelectedMarker(RDMarkerHandle::PointerRole role) void RDMarkerPlayer::setSelectedMarker(RDMarkerHandle::PointerRole role)
{ {
if(d_selected_marker!=role) {
d_region_edit_label-> d_region_edit_label->
setStyleSheet("background-color: "+ setStyleSheet("background-color: "+
RDMarkerHandle::pointerRoleColor(role).name()); RDMarkerHandle::pointerRoleColor(role).name());
d_play_cursor_button-> d_play_cursor_button->
setAccentColor(RDMarkerHandle::pointerRoleColor(role)); setAccentColor(RDMarkerHandle::pointerRoleColor(role));
d_selected_marker=role; d_selected_marker=role;
}
UpdateReadouts();
} }
@ -197,13 +210,16 @@ void RDMarkerPlayer::playCursorData()
rda->cae()->stopPlay(d_cae_handle); rda->cae()->stopPlay(d_cae_handle);
} }
} }
printf("selected: %u\n",d_selected_marker);
switch(RDMarkerHandle::pointerType(d_selected_marker)) { switch(RDMarkerHandle::pointerType(d_selected_marker)) {
case RDMarkerHandle::Start: case RDMarkerHandle::Start:
printf("START\n");
start=d_pointers[d_selected_marker]; start=d_pointers[d_selected_marker];
len=d_pointers[d_selected_marker+1]-d_pointers[d_selected_marker]; len=d_pointers[d_selected_marker+1]-d_pointers[d_selected_marker];
break; break;
case RDMarkerHandle::End: case RDMarkerHandle::End:
printf("END\n");
start=d_pointers[d_selected_marker]-2000; start=d_pointers[d_selected_marker]-2000;
len=2000; len=2000;
if(start<0) { if(start<0) {
@ -212,6 +228,7 @@ void RDMarkerPlayer::playCursorData()
} }
break; break;
} }
printf("start: %d len: %d\n",start,len);
rda->cae()->positionPlay(d_cae_handle,start); rda->cae()->positionPlay(d_cae_handle,start);
rda->cae()->play(d_cae_handle,len,100000,false); rda->cae()->play(d_cae_handle,len,100000,false);
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream); rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
@ -310,6 +327,7 @@ void RDMarkerPlayer::caePausedData(int handle)
void RDMarkerPlayer::caePositionData(int handle,unsigned msec) void RDMarkerPlayer::caePositionData(int handle,unsigned msec)
{ {
if(handle==d_cae_handle) { if(handle==d_cae_handle) {
d_position_edit->setText(RDGetTimeLength(msec-d_pointers[RDMarkerHandle::CutStart],true,true));
emit cursorPositionChanged(msec); emit cursorPositionChanged(msec);
} }
} }
@ -317,12 +335,12 @@ void RDMarkerPlayer::caePositionData(int handle,unsigned msec)
void RDMarkerPlayer::resizeEvent(QResizeEvent *) void RDMarkerPlayer::resizeEvent(QResizeEvent *)
{ {
d_overall_label->setGeometry(50,3,70,20); d_position_label->setGeometry(50,3,70,16);
d_overall_edit->setGeometry(50,18,70,21); d_position_edit->setGeometry(50,20,70,18);
d_region_edit_label->setGeometry(148,3,70,20); d_region_edit_label->setGeometry(148,3,70,16);
d_region_edit->setGeometry(148,18,70,21); d_region_edit->setGeometry(148,20,70,18);
d_size_label->setGeometry(246,3,70,20); d_length_label->setGeometry(246,3,70,16);
d_size_edit->setGeometry(246,18,70,21); d_length_edit->setGeometry(246,20,70,18);
d_play_cursor_button->setGeometry(10,42,65,45); d_play_cursor_button->setGeometry(10,42,65,45);
d_play_start_button->setGeometry(80,42,65,45); d_play_start_button->setGeometry(80,42,65,45);
@ -349,3 +367,52 @@ void RDMarkerPlayer::paintEvent(QPaintEvent *e)
delete p; delete p;
} }
void RDMarkerPlayer::UpdateReadouts()
{
//
// Region
//
switch(d_selected_marker) {
case RDMarkerHandle::CutStart:
case RDMarkerHandle::TalkStart:
case RDMarkerHandle::SegueStart:
case RDMarkerHandle::HookStart:
d_region_edit->
setText(RDGetTimeLength(d_pointers[d_selected_marker+1]-
d_pointers[d_selected_marker],true,true));
break;
case RDMarkerHandle::CutEnd:
case RDMarkerHandle::TalkEnd:
case RDMarkerHandle::SegueEnd:
case RDMarkerHandle::HookEnd:
d_region_edit->
setText(RDGetTimeLength(d_pointers[d_selected_marker]-
d_pointers[d_selected_marker-1],true,true));
break;
case RDMarkerHandle::FadeUp:
d_region_edit->
setText(RDGetTimeLength(d_pointers[d_selected_marker]-
d_pointers[RDMarkerHandle::CutStart],true,true));
break;
case RDMarkerHandle::FadeDown:
d_region_edit->
setText(RDGetTimeLength(d_pointers[RDMarkerHandle::CutEnd]-
d_pointers[d_selected_marker],true,true));
break;
case RDMarkerHandle::LastRole:
break;
}
//
// Length
//
d_length_edit->
setText(RDGetTimeLength(d_pointers[RDMarkerHandle::CutEnd]-
d_pointers[RDMarkerHandle::CutStart],true,true));
}

View File

@ -67,12 +67,16 @@ class RDMarkerPlayer : public RDWidget
void paintEvent(QPaintEvent *e); void paintEvent(QPaintEvent *e);
private: private:
QLabel *d_overall_label; void UpdateReadouts();
QLineEdit *d_overall_edit; QLabel *d_position_label;
// QLineEdit *d_position_edit;
QLabel *d_position_edit;
QLabel *d_region_edit_label; QLabel *d_region_edit_label;
QLineEdit *d_region_edit; // QLineEdit *d_region_edit;
QLabel *d_size_label; QLabel *d_region_edit;
QLineEdit *d_size_edit; QLabel *d_length_label;
// QLineEdit *d_length_edit;
QLabel *d_length_edit;
RDTransportButton *d_play_cursor_button; RDTransportButton *d_play_cursor_button;
RDTransportButton *d_play_start_button; RDTransportButton *d_play_start_button;
RDTransportButton *d_active_play_button; RDTransportButton *d_active_play_button;

View File

@ -119,7 +119,7 @@ void RDMarkerHandle::mousePressEvent(QGraphicsSceneMouseEvent *e)
} }
} }
} }
view->processLeftClick(d_role); view->setSelectedMarker(d_role);
} }
if(e->button()==Qt::RightButton) { if(e->button()==Qt::RightButton) {
@ -328,11 +328,11 @@ RDMarkerHandle::PointerType RDMarkerHandle::pointerType(RDMarkerHandle::PointerR
case RDMarkerHandle::TalkStart: case RDMarkerHandle::TalkStart:
case RDMarkerHandle::SegueStart: case RDMarkerHandle::SegueStart:
case RDMarkerHandle::HookStart: case RDMarkerHandle::HookStart:
case RDMarkerHandle::CutEnd:
case RDMarkerHandle::FadeDown: case RDMarkerHandle::FadeDown:
ret=RDMarkerHandle::Start; ret=RDMarkerHandle::Start;
break; break;
case RDMarkerHandle::CutEnd:
case RDMarkerHandle::TalkEnd: case RDMarkerHandle::TalkEnd:
case RDMarkerHandle::SegueEnd: case RDMarkerHandle::SegueEnd:
case RDMarkerHandle::HookEnd: case RDMarkerHandle::HookEnd:
@ -453,7 +453,7 @@ bool RDMarkerView::hasUnsavedChanges() const
} }
void RDMarkerView::processLeftClick(RDMarkerHandle::PointerRole role) void RDMarkerView::setSelectedMarker(RDMarkerHandle::PointerRole role)
{ {
if(role!=d_selected_marker) { if(role!=d_selected_marker) {
for(int i=0;i<RDMarkerHandle::LastRole;i++) { for(int i=0;i<RDMarkerHandle::LastRole;i++) {
@ -781,8 +781,6 @@ void RDMarkerView::updateInterlocks()
InterlockMarkerPair(RDMarkerHandle::SegueStart); InterlockMarkerPair(RDMarkerHandle::SegueStart);
InterlockMarkerPair(RDMarkerHandle::HookStart); InterlockMarkerPair(RDMarkerHandle::HookStart);
InterlockFadeMarkerPair(); InterlockFadeMarkerPair();
// printf("d_right_margin: %d\n",d_right_margin);
} }
@ -1024,11 +1022,13 @@ void RDMarkerView::DrawMarker(RDMarkerHandle::PointerType type,
d_scene->addItem(m_item); d_scene->addItem(m_item);
m_item->setPos(LEFT_MARGIN+Frame(d_pointers[role]),handle_pos-12); m_item->setPos(LEFT_MARGIN+Frame(d_pointers[role]),handle_pos-12);
d_handles[role][0]=m_item; d_handles[role][0]=m_item;
m_item->setSelected(d_selected_marker==role);
m_item=new RDMarkerHandle(role,type,this); m_item=new RDMarkerHandle(role,type,this);
d_scene->addItem(m_item); d_scene->addItem(m_item);
m_item->setPos(LEFT_MARGIN+Frame(d_pointers[role]),d_height-handle_pos-8); m_item->setPos(LEFT_MARGIN+Frame(d_pointers[role]),d_height-handle_pos-8);
d_handles[role][1]=m_item; d_handles[role][1]=m_item;
m_item->setSelected(d_selected_marker==role);
} }
} }

View File

@ -92,7 +92,7 @@ class RDMarkerView : public QWidget
RDMarkerHandle::PointerRole selectedMarker() const; RDMarkerHandle::PointerRole selectedMarker() const;
bool hasUnsavedChanges() const; bool hasUnsavedChanges() const;
void processLeftClick(RDMarkerHandle::PointerRole role); void setSelectedMarker(RDMarkerHandle::PointerRole role);
void processRightClick(RDMarkerHandle::PointerRole role, void processRightClick(RDMarkerHandle::PointerRole role,
const QPointF &pos); const QPointF &pos);
void updatePosition(RDMarkerHandle::PointerRole role,int ptr); void updatePosition(RDMarkerHandle::PointerRole role,int ptr);