diff --git a/ChangeLog b/ChangeLog index f06a56b5..56889093 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21295,3 +21295,5 @@ * Fixed a bug in 'RDMarkerView' that caused an incorrect limit stop to be applied to the 'Fade Down' marker after deletion of the 'Fade Up' marker'. +2021-03-20 Fred Gleason + * Got digital readouts working in 'RDMarkerPlayer'. diff --git a/lib/rdmarkerdialog.cpp b/lib/rdmarkerdialog.cpp index e8523c62..b02503aa 100644 --- a/lib/rdmarkerdialog.cpp +++ b/lib/rdmarkerdialog.cpp @@ -206,6 +206,8 @@ int RDMarkerDialog::exec(unsigned cartnum,int cutnum) d_player->setPointerValue(role,d_marker_view->pointerValue(role)); d_player->setSelectedMarker(RDMarkerHandle::LastRole); } + d_marker_view->setSelectedMarker(RDMarkerHandle::CutStart); + return QDialog::exec(); } diff --git a/lib/rdmarkerplayer.cpp b/lib/rdmarkerplayer.cpp index 5c48eac8..f64086d9 100644 --- a/lib/rdmarkerplayer.cpp +++ b/lib/rdmarkerplayer.cpp @@ -18,6 +18,7 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // +#include "rdconf.h" #include "rdmixer.h" #include "rdmarkerplayer.h" @@ -42,33 +43,41 @@ RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent) // // Time Counters // - d_overall_label=new QLabel(tr("Position"),this); - d_overall_label->setFont(subLabelFont()); - d_overall_label->setAlignment(Qt::AlignHCenter); - d_overall_label-> + d_position_label=new QLabel(tr("Position"),this); + d_position_label->setFont(subLabelFont()); + d_position_label->setAlignment(Qt::AlignCenter); + d_position_label-> setPalette(QPalette(palette().color(QPalette::Background), - QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); - d_overall_edit=new QLineEdit(this); - d_overall_edit->setAcceptDrops(false); - d_overall_edit->setReadOnly(true); + QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); + d_position_edit=new QLabel(this); + d_position_edit->setAcceptDrops(false); + 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->setFont(subLabelFont()); - d_region_edit_label->setAlignment(Qt::AlignHCenter); + d_region_edit_label->setAlignment(Qt::AlignCenter); d_region_edit_label-> - setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); - d_region_edit=new QLineEdit(this); + setPalette(QPalette(palette().color(QPalette::Background), + QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); + d_region_edit=new QLabel(this); 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_size_label->setFont(subLabelFont()); - d_size_label->setAlignment(Qt::AlignHCenter); - d_size_label-> - setPalette(QPalette(palette().color(QPalette::Background),QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); - d_size_edit=new QLineEdit(this); - d_size_edit->setAcceptDrops(false); - d_size_edit->setReadOnly(true); + d_length_label=new QLabel(tr("Length"),this); + d_length_label->setFont(subLabelFont()); + d_length_label->setAlignment(Qt::AlignCenter); + d_length_label-> + setPalette(QPalette(palette().color(QPalette::Background), + QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); + d_length_edit=new QLabel(this); + d_length_edit->setAcceptDrops(false); + d_length_edit->setAlignment(Qt::AlignCenter); + d_length_edit-> + setStyleSheet("background-color: "+palette().color(QPalette::Base).name()); // // Transport Buttons @@ -164,25 +173,29 @@ void RDMarkerPlayer::clearCut() void RDMarkerPlayer::setPlayPosition(int msec) { + rda->cae()->positionPlay(d_cae_handle,msec); } void RDMarkerPlayer::setPointerValue(RDMarkerHandle::PointerRole role,int ptr) { - d_pointers[role]=ptr; + if(ptr!=d_pointers[role]) { + d_pointers[role]=ptr; + UpdateReadouts(); + } } void RDMarkerPlayer::setSelectedMarker(RDMarkerHandle::PointerRole role) { - if(d_selected_marker!=role) { - d_region_edit_label-> - setStyleSheet("background-color: "+ - RDMarkerHandle::pointerRoleColor(role).name()); - d_play_cursor_button-> - setAccentColor(RDMarkerHandle::pointerRoleColor(role)); - d_selected_marker=role; - } + d_region_edit_label-> + setStyleSheet("background-color: "+ + RDMarkerHandle::pointerRoleColor(role).name()); + d_play_cursor_button-> + setAccentColor(RDMarkerHandle::pointerRoleColor(role)); + d_selected_marker=role; + + UpdateReadouts(); } @@ -197,13 +210,16 @@ void RDMarkerPlayer::playCursorData() rda->cae()->stopPlay(d_cae_handle); } } + printf("selected: %u\n",d_selected_marker); switch(RDMarkerHandle::pointerType(d_selected_marker)) { case RDMarkerHandle::Start: + printf("START\n"); start=d_pointers[d_selected_marker]; len=d_pointers[d_selected_marker+1]-d_pointers[d_selected_marker]; break; case RDMarkerHandle::End: + printf("END\n"); start=d_pointers[d_selected_marker]-2000; len=2000; if(start<0) { @@ -212,6 +228,7 @@ void RDMarkerPlayer::playCursorData() } break; } + printf("start: %d len: %d\n",start,len); rda->cae()->positionPlay(d_cae_handle,start); rda->cae()->play(d_cae_handle,len,100000,false); 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) { if(handle==d_cae_handle) { + d_position_edit->setText(RDGetTimeLength(msec-d_pointers[RDMarkerHandle::CutStart],true,true)); emit cursorPositionChanged(msec); } } @@ -317,12 +335,12 @@ void RDMarkerPlayer::caePositionData(int handle,unsigned msec) void RDMarkerPlayer::resizeEvent(QResizeEvent *) { - d_overall_label->setGeometry(50,3,70,20); - d_overall_edit->setGeometry(50,18,70,21); - d_region_edit_label->setGeometry(148,3,70,20); - d_region_edit->setGeometry(148,18,70,21); - d_size_label->setGeometry(246,3,70,20); - d_size_edit->setGeometry(246,18,70,21); + d_position_label->setGeometry(50,3,70,16); + d_position_edit->setGeometry(50,20,70,18); + d_region_edit_label->setGeometry(148,3,70,16); + d_region_edit->setGeometry(148,20,70,18); + d_length_label->setGeometry(246,3,70,16); + d_length_edit->setGeometry(246,20,70,18); d_play_cursor_button->setGeometry(10,42,65,45); d_play_start_button->setGeometry(80,42,65,45); @@ -349,3 +367,52 @@ void RDMarkerPlayer::paintEvent(QPaintEvent *e) 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)); +} diff --git a/lib/rdmarkerplayer.h b/lib/rdmarkerplayer.h index 4e8b18e8..808ece2d 100644 --- a/lib/rdmarkerplayer.h +++ b/lib/rdmarkerplayer.h @@ -67,12 +67,16 @@ class RDMarkerPlayer : public RDWidget void paintEvent(QPaintEvent *e); private: - QLabel *d_overall_label; - QLineEdit *d_overall_edit; + void UpdateReadouts(); + QLabel *d_position_label; + // QLineEdit *d_position_edit; + QLabel *d_position_edit; QLabel *d_region_edit_label; - QLineEdit *d_region_edit; - QLabel *d_size_label; - QLineEdit *d_size_edit; + // QLineEdit *d_region_edit; + QLabel *d_region_edit; + QLabel *d_length_label; + // QLineEdit *d_length_edit; + QLabel *d_length_edit; RDTransportButton *d_play_cursor_button; RDTransportButton *d_play_start_button; RDTransportButton *d_active_play_button; diff --git a/lib/rdmarkerview.cpp b/lib/rdmarkerview.cpp index e9957663..4735ce36 100644 --- a/lib/rdmarkerview.cpp +++ b/lib/rdmarkerview.cpp @@ -119,7 +119,7 @@ void RDMarkerHandle::mousePressEvent(QGraphicsSceneMouseEvent *e) } } } - view->processLeftClick(d_role); + view->setSelectedMarker(d_role); } if(e->button()==Qt::RightButton) { @@ -328,11 +328,11 @@ RDMarkerHandle::PointerType RDMarkerHandle::pointerType(RDMarkerHandle::PointerR case RDMarkerHandle::TalkStart: case RDMarkerHandle::SegueStart: case RDMarkerHandle::HookStart: - case RDMarkerHandle::CutEnd: case RDMarkerHandle::FadeDown: ret=RDMarkerHandle::Start; break; + case RDMarkerHandle::CutEnd: case RDMarkerHandle::TalkEnd: case RDMarkerHandle::SegueEnd: 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) { for(int i=0;iaddItem(m_item); m_item->setPos(LEFT_MARGIN+Frame(d_pointers[role]),handle_pos-12); d_handles[role][0]=m_item; + m_item->setSelected(d_selected_marker==role); m_item=new RDMarkerHandle(role,type,this); d_scene->addItem(m_item); m_item->setPos(LEFT_MARGIN+Frame(d_pointers[role]),d_height-handle_pos-8); d_handles[role][1]=m_item; + m_item->setSelected(d_selected_marker==role); } } diff --git a/lib/rdmarkerview.h b/lib/rdmarkerview.h index 6e9aae0b..5b0c4d83 100644 --- a/lib/rdmarkerview.h +++ b/lib/rdmarkerview.h @@ -92,7 +92,7 @@ class RDMarkerView : public QWidget RDMarkerHandle::PointerRole selectedMarker() const; bool hasUnsavedChanges() const; - void processLeftClick(RDMarkerHandle::PointerRole role); + void setSelectedMarker(RDMarkerHandle::PointerRole role); void processRightClick(RDMarkerHandle::PointerRole role, const QPointF &pos); void updatePosition(RDMarkerHandle::PointerRole role,int ptr);