From 1790af2a9423315b7d73b34ba1e15cc734871297 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Thu, 25 Mar 2021 11:40:24 -0400 Subject: [PATCH] 2021-03-25 Fred Gleason * Refactored layout of 'RDMarkerDialog' Signed-off-by: Fred Gleason --- ChangeLog | 2 + lib/librd_cs.ts | 69 ++++++- lib/librd_de.ts | 69 ++++++- lib/librd_es.ts | 70 ++++++- lib/librd_fr.ts | 81 +++++--- lib/librd_nb.ts | 69 ++++++- lib/librd_nn.ts | 69 ++++++- lib/librd_pt_BR.ts | 69 ++++++- lib/rdmarkerdialog.cpp | 217 ++------------------ lib/rdmarkerdialog.h | 21 +- lib/rdmarkerplayer.cpp | 424 +++++++++++++++++++++++++++++++--------- lib/rdmarkerplayer.h | 53 ++++- lib/rdmarkerreadout.cpp | 77 ++++++-- lib/rdmarkerreadout.h | 5 +- lib/rdmarkerview.cpp | 209 ++++++++++++++------ lib/rdmarkerview.h | 8 +- 16 files changed, 1056 insertions(+), 456 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7a258c51..709d4d0a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21342,3 +21342,5 @@ * Fixed regressions in the 'Edit Cart' dialog in rdlibrary(1) that caused focus on the Cut entry to be lost after modifying cut attributes. +2021-03-25 Fred Gleason + * Refactored layout of 'RDMarkerDialog' diff --git a/lib/librd_cs.ts b/lib/librd_cs.ts index cd6e5bec..dd0610ab 100644 --- a/lib/librd_cs.ts +++ b/lib/librd_cs.ts @@ -3602,31 +3602,31 @@ Out Goto - Přejít na + Přejít na Cursor - Ukazovátko + Ukazovátko Home - Domov + Domov End - Konec + Konec No Fade on Segue Out - Žádné prolínání při přechodu ven + Žádné prolínání při přechodu ven Cut Gain - Zesílení záběru + Zesílení záběru dB - dB + dB @@ -3639,6 +3639,57 @@ Out Length Délka + + Start + + + + End + Konec + + + Cursor Position + + + + Go To +Start + + + + Go To +Cursor + + + + Go To +End + + + + Cut Gain + Zesílení záběru + + + dB + dB + + + No Fade on Segue Out + Žádné prolínání při přechodu ven + + + Trim Start + + + + Trim End + + + + Threshold + Prahová hodnota + RDMarkerView @@ -3678,6 +3729,10 @@ Out Delete Marker + + Edit Audio + Upravit zvuk + RDMatrixListModel diff --git a/lib/librd_de.ts b/lib/librd_de.ts index f7ca8067..719befc8 100644 --- a/lib/librd_de.ts +++ b/lib/librd_de.ts @@ -3591,31 +3591,31 @@ Out Goto - Gehe zu + Gehe zu Cursor - Cursor + Cursor Home - Home + Home End - Ende + Ende No Fade on Segue Out - Kein Fade bei Seque Out + Kein Fade bei Seque Out Cut Gain - Cut Gain + Cut Gain dB - dB + dB @@ -3628,6 +3628,57 @@ Out Length Länge + + Start + + + + End + Ende + + + Cursor Position + + + + Go To +Start + + + + Go To +Cursor + + + + Go To +End + + + + Cut Gain + Cut Gain + + + dB + dB + + + No Fade on Segue Out + Kein Fade bei Seque Out + + + Trim Start + + + + Trim End + + + + Threshold + Threshold + RDMarkerView @@ -3667,6 +3718,10 @@ Out Delete Marker + + Edit Audio + + RDMatrixListModel diff --git a/lib/librd_es.ts b/lib/librd_es.ts index 0e2c03ff..1fe9b7f5 100644 --- a/lib/librd_es.ts +++ b/lib/librd_es.ts @@ -3578,32 +3578,32 @@ Todo Goto - Ir a + Ir a Cursor - Cursor + Cursor Home - Principio + Principio End - Final + Final No Fade on Segue Out - Quitar fade en Segue + Quitar fade en Segue Cut Gain - Ganancia + Ganancia del audio dB - dB + dB @@ -3616,6 +3616,58 @@ del audio Length Longitud + + Start + + + + End + Final + + + Cursor Position + + + + Go To +Start + + + + Go To +Cursor + + + + Go To +End + + + + Cut Gain + Ganancia +del audio + + + dB + dB + + + No Fade on Segue Out + Quitar fade en Segue + + + Trim Start + + + + Trim End + + + + Threshold + Nivel + RDMarkerView @@ -3655,6 +3707,10 @@ del audio Delete Marker + + Edit Audio + Editar Audio + RDMatrixListModel diff --git a/lib/librd_fr.ts b/lib/librd_fr.ts index 013e3b67..ea86d2c8 100644 --- a/lib/librd_fr.ts +++ b/lib/librd_fr.ts @@ -2982,33 +2982,13 @@ Out Unable to open cut in audio player! - - Goto - - - - Cursor - - - - Home - - End - Fin + Fin - No Fade on Segue Out - - - - Cut Gain - - - - dB - + Start + Début @@ -3021,6 +3001,57 @@ Out Length + + Start + Début + + + End + Fin + + + Cursor Position + + + + Go To +Start + + + + Go To +Cursor + + + + Go To +End + + + + Cut Gain + + + + dB + + + + No Fade on Segue Out + + + + Trim Start + + + + Trim End + + + + Threshold + + RDMarkerView @@ -3052,6 +3083,10 @@ Out Delete Marker + + Edit Audio + + RDMatrixListModel diff --git a/lib/librd_nb.ts b/lib/librd_nb.ts index 42fa231a..b17c1a6f 100644 --- a/lib/librd_nb.ts +++ b/lib/librd_nb.ts @@ -3541,31 +3541,31 @@ ut Goto - Gå til + Gå til Cursor - Markør + Markør Home - Heim + Heim End - Slutten + Slutten No Fade on Segue Out - Inga uttoning ved Overgang ut + Inga uttoning ved Overgang ut Cut Gain - Dempevolum + Dempevolum dB - dB + dB @@ -3578,6 +3578,57 @@ ut Length Lengd + + Start + + + + End + Slutten + + + Cursor Position + + + + Go To +Start + + + + Go To +Cursor + + + + Go To +End + + + + Cut Gain + Dempevolum + + + dB + dB + + + No Fade on Segue Out + Inga uttoning ved Overgang ut + + + Trim Start + + + + Trim End + + + + Threshold + Terskel + RDMarkerView @@ -3617,6 +3668,10 @@ ut Delete Marker + + Edit Audio + + RDMatrixListModel diff --git a/lib/librd_nn.ts b/lib/librd_nn.ts index 42fa231a..b17c1a6f 100644 --- a/lib/librd_nn.ts +++ b/lib/librd_nn.ts @@ -3541,31 +3541,31 @@ ut Goto - Gå til + Gå til Cursor - Markør + Markør Home - Heim + Heim End - Slutten + Slutten No Fade on Segue Out - Inga uttoning ved Overgang ut + Inga uttoning ved Overgang ut Cut Gain - Dempevolum + Dempevolum dB - dB + dB @@ -3578,6 +3578,57 @@ ut Length Lengd + + Start + + + + End + Slutten + + + Cursor Position + + + + Go To +Start + + + + Go To +Cursor + + + + Go To +End + + + + Cut Gain + Dempevolum + + + dB + dB + + + No Fade on Segue Out + Inga uttoning ved Overgang ut + + + Trim Start + + + + Trim End + + + + Threshold + Terskel + RDMarkerView @@ -3617,6 +3668,10 @@ ut Delete Marker + + Edit Audio + + RDMatrixListModel diff --git a/lib/librd_pt_BR.ts b/lib/librd_pt_BR.ts index 1b153ea7..71322a60 100644 --- a/lib/librd_pt_BR.ts +++ b/lib/librd_pt_BR.ts @@ -3581,31 +3581,31 @@ Mínimo Goto - Ir Até + Ir Até Cursor - Cursor + Cursor Home - Casa + Casa End - Fim + Fim No Fade on Segue Out - Sem Fade na Saída + Sem Fade na Saída Cut Gain - Ganho + Ganho dB - dB + dB @@ -3618,6 +3618,57 @@ Mínimo Length Duração + + Start + + + + End + Fim + + + Cursor Position + + + + Go To +Start + + + + Go To +Cursor + + + + Go To +End + + + + Cut Gain + Ganho + + + dB + dB + + + No Fade on Segue Out + Sem Fade na Saída + + + Trim Start + + + + Trim End + + + + Threshold + Valor Mínimo + RDMarkerView @@ -3657,6 +3708,10 @@ Mínimo Delete Marker + + Edit Audio + + RDMatrixListModel diff --git a/lib/rdmarkerdialog.cpp b/lib/rdmarkerdialog.cpp index b8bf7755..d773ed08 100644 --- a/lib/rdmarkerdialog.cpp +++ b/lib/rdmarkerdialog.cpp @@ -72,50 +72,6 @@ RDMarkerDialog::RDMarkerDialog(const QString &caption,int card,int port, connect(d_time_fullout_button,SIGNAL(clicked()), d_marker_view,SLOT(setMaximumShrinkFactor())); - // - // Goto Buttons - // - d_goto_group=new QGroupBox(tr("Goto"),this); - d_goto_group->setFont(labelFont()); - - d_goto_cursor_button=new QPushButton(tr("Cursor"),d_goto_group); - d_goto_cursor_button->setFont(buttonFont()); - connect(d_goto_cursor_button,SIGNAL(clicked()), - d_marker_view,SLOT(gotoCursor())); - - d_goto_home_button=new QPushButton(tr("Home"),d_goto_group); - d_goto_home_button->setFont(buttonFont()); - connect(d_goto_home_button,SIGNAL(clicked()), - d_marker_view,SLOT(gotoHome())); - - d_goto_end_button=new QPushButton(tr("End"),d_goto_group); - d_goto_end_button->setFont(buttonFont()); - connect(d_goto_end_button,SIGNAL(clicked()), - d_marker_view,SLOT(gotoEnd())); - - // - // Fade on Segue Out - // - d_no_segue_fade_check=new QCheckBox(this); - d_no_segue_fade_label=new QLabel(tr("No Fade on Segue Out"),this); - d_no_segue_fade_label->setFont(labelFont()); - connect(d_no_segue_fade_check,SIGNAL(toggled(bool)), - d_marker_view,SLOT(setNoSegueFade(bool))); - - // - // Cut Gain - // - d_play_gain_spin=new QSpinBox(this); - d_play_gain_spin->setRange(-10,10); - connect(d_play_gain_spin,SIGNAL(valueChanged(int)), - d_marker_view,SLOT(setPlayGain(int))); - d_play_gain_label=new QLabel(tr("Cut Gain")+":",this); - d_play_gain_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - d_play_gain_label->setFont(labelFont()); - d_play_gain_unit_label=new QLabel(tr("dB"),this); - d_play_gain_unit_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); - d_play_gain_unit_label->setFont(labelFont()); - /************************************************************************** * Transport Section **************************************************************************/ @@ -132,72 +88,22 @@ RDMarkerDialog::RDMarkerDialog(const QString &caption,int card,int port, RDMarkerHandle::PointerRole))); connect(d_marker_view,SIGNAL(positionClicked(int)), d_player,SLOT(setCursorPosition(int))); - - // - // Marker Readouts - // - d_cut_readout=new RDMarkerReadout(RDMarkerHandle::CutStart,this); - connect(d_marker_view, - SIGNAL(pointerValueChanged(RDMarkerHandle::PointerRole,int)), - d_cut_readout,SLOT(setValue(RDMarkerHandle::PointerRole,int))); - connect(d_marker_view, - SIGNAL(selectedMarkersChanged(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole)), - d_cut_readout,SLOT(setSelectedMarkers(RDMarkerHandle::PointerRole, + connect(d_player,SIGNAL(selectedMarkersChanged(RDMarkerHandle::PointerRole, + RDMarkerHandle::PointerRole)), + d_marker_view,SLOT(setSelectedMarkers(RDMarkerHandle::PointerRole, RDMarkerHandle::PointerRole))); - d_cut_readout->setEnabled(true); - - d_talk_readout=new RDMarkerReadout(RDMarkerHandle::TalkStart,this); - connect(d_marker_view, - SIGNAL(pointerValueChanged(RDMarkerHandle::PointerRole,int)), - d_talk_readout,SLOT(setValue(RDMarkerHandle::PointerRole,int))); - connect(d_marker_view, - SIGNAL(selectedMarkersChanged(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole)), - d_talk_readout,SLOT(setSelectedMarkers(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole))); - - d_segue_readout=new RDMarkerReadout(RDMarkerHandle::SegueStart,this); - connect(d_marker_view, - SIGNAL(pointerValueChanged(RDMarkerHandle::PointerRole,int)), - d_segue_readout,SLOT(setValue(RDMarkerHandle::PointerRole,int))); - connect(d_marker_view, - SIGNAL(selectedMarkersChanged(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole)), - d_segue_readout,SLOT(setSelectedMarkers(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole))); - - d_hook_readout=new RDMarkerReadout(RDMarkerHandle::HookStart,this); - connect(d_marker_view, - SIGNAL(pointerValueChanged(RDMarkerHandle::PointerRole,int)), - d_hook_readout,SLOT(setValue(RDMarkerHandle::PointerRole,int))); - connect(d_marker_view, - SIGNAL(selectedMarkersChanged(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole)), - d_hook_readout,SLOT(setSelectedMarkers(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole))); - - d_fadeup_readout=new RDMarkerReadout(RDMarkerHandle::FadeUp,this); - connect(d_marker_view, - SIGNAL(pointerValueChanged(RDMarkerHandle::PointerRole,int)), - d_fadeup_readout,SLOT(setValue(RDMarkerHandle::PointerRole,int))); - connect(d_marker_view, - SIGNAL(selectedMarkersChanged(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole)), - d_fadeup_readout, - SLOT(setSelectedMarkers(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole))); - - d_fadedown_readout=new RDMarkerReadout(RDMarkerHandle::FadeDown,this); - connect(d_marker_view, - SIGNAL(pointerValueChanged(RDMarkerHandle::PointerRole,int)), - d_fadedown_readout,SLOT(setValue(RDMarkerHandle::PointerRole,int))); - connect(d_marker_view, - SIGNAL(selectedMarkersChanged(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole)), - d_fadedown_readout, - SLOT(setSelectedMarkers(RDMarkerHandle::PointerRole, - RDMarkerHandle::PointerRole))); + connect(d_player,SIGNAL(gotoStartClicked()),d_marker_view,SLOT(gotoHome())); + connect(d_player,SIGNAL(gotoCursorClicked()), + d_marker_view,SLOT(gotoCursor())); + connect(d_player,SIGNAL(gotoEndClicked()),d_marker_view,SLOT(gotoEnd())); + connect(d_player,SIGNAL(playGainSet(int)), + d_marker_view,SLOT(setPlayGain(int))); + connect(d_player,SIGNAL(noFadeOnSegueChanged(bool)), + d_marker_view,SLOT(setNoSegueFade(bool))); + connect(d_player,SIGNAL(startTrimClicked(int)), + d_marker_view,SLOT(trimStart(int))); + connect(d_player,SIGNAL(endTrimClicked(int)), + d_marker_view,SLOT(trimEnd(int))); /************************************************************************** * Navigation Section @@ -227,7 +133,7 @@ RDMarkerDialog::~RDMarkerDialog() QSize RDMarkerDialog::sizeHint() const { - return QSize(1000,600); + return QSize(1050,600); } @@ -249,21 +155,8 @@ int RDMarkerDialog::exec(unsigned cartnum,int cutnum) tr("Unable to open cut in audio player!")); return false; } - for(int i=0;isetValue(role,d_marker_view->pointerValue(role)); - d_talk_readout->setValue(role,d_marker_view->pointerValue(role)); - d_segue_readout->setValue(role,d_marker_view->pointerValue(role)); - d_hook_readout->setValue(role,d_marker_view->pointerValue(role)); - d_fadeup_readout->setValue(role,d_marker_view->pointerValue(role)); - d_fadedown_readout->setValue(role,d_marker_view->pointerValue(role)); - d_player->setPointerValue(role,d_marker_view->pointerValue(role)); - d_player-> - setSelectedMarkers(RDMarkerHandle::LastRole,RDMarkerHandle::LastRole); - } - d_marker_view->setSelectedMarker(RDMarkerHandle::CutStart); - d_no_segue_fade_check->setChecked(d_marker_view->noSegueFade()); - d_play_gain_spin->setValue(d_marker_view->playGain()); + d_marker_view-> + setSelectedMarkers(RDMarkerHandle::CutStart,RDMarkerHandle::CutEnd); return QDialog::exec(); } @@ -366,83 +259,11 @@ void RDMarkerDialog::resizeEvent(QResizeEvent *e) // // Readout Section // - d_cut_readout->setGeometry(2, - 2+d_marker_view->sizeHint().height(), - d_cut_readout->sizeHint().width(), - d_cut_readout->sizeHint().height()); - - d_talk_readout->setGeometry(2+1*(d_talk_readout->sizeHint().width()-2), - 2+d_marker_view->sizeHint().height(), - d_talk_readout->sizeHint().width(), - d_talk_readout->sizeHint().height()); - - d_segue_readout->setGeometry(2+2*(d_segue_readout->sizeHint().width()-2), - 2+d_marker_view->sizeHint().height(), - d_segue_readout->sizeHint().width(), - d_segue_readout->sizeHint().height()); - - d_hook_readout->setGeometry(2+3*(d_hook_readout->sizeHint().width()-2), - 2+d_marker_view->sizeHint().height(), - d_hook_readout->sizeHint().width(), - d_hook_readout->sizeHint().height()); - - d_fadeup_readout->setGeometry(2, - d_marker_view->sizeHint().height()-2+ - d_hook_readout->sizeHint().height(), - 2*d_fadeup_readout->sizeHint().width()-2, - d_fadeup_readout->sizeHint().height()); - - d_fadedown_readout->setGeometry(2*d_fadedown_readout->sizeHint().width()-2, - d_marker_view->sizeHint().height()-2+ - d_hook_readout->sizeHint().height(), - 2*d_fadedown_readout->sizeHint().width()-2, - d_fadedown_readout->sizeHint().height()); - - // - // Transport Section - // - d_player->setGeometry(2*d_fadedown_readout->sizeHint().width()+ - 2*d_fadedown_readout->sizeHint().width()-6, + d_player->setGeometry(2, 2+d_marker_view->sizeHint().height(), d_player->sizeHint().width(), d_player->sizeHint().height()); - d_goto_group->setGeometry(10, - 2+d_marker_view->sizeHint().height()+ - d_player->sizeHint().height()+5, - 90*3, - 80); - d_goto_cursor_button->setGeometry(5,25,80,50); - d_goto_home_button->setGeometry(95,25,80,50); - d_goto_end_button->setGeometry(185,25,80,50); - - d_no_segue_fade_check->setGeometry(200+90*3, - 4+d_marker_view->sizeHint().height()+ - d_player->sizeHint().height()+5, - 15, - 15); - d_no_segue_fade_label->setGeometry(220+90*3, - 2+d_marker_view->sizeHint().height()+ - d_player->sizeHint().height()+5, - 200, - 20); - - d_play_gain_label->setGeometry(220+90*3, - 2+d_marker_view->sizeHint().height()+ - d_player->sizeHint().height()+5+22, - 100, - 20); - d_play_gain_spin->setGeometry(220+90*3+105, - 2+d_marker_view->sizeHint().height()+ - d_player->sizeHint().height()+5+22, - 40, - 20); - d_play_gain_unit_label->setGeometry(220+90*3+105+45, - 2+d_marker_view->sizeHint().height()+ - d_player->sizeHint().height()+5+22, - 60, - 20); - d_ok_button->setGeometry(w-180,h-60,80,50); d_cancel_button->setGeometry(w-90,h-60,80,50); } diff --git a/lib/rdmarkerdialog.h b/lib/rdmarkerdialog.h index 452eb68c..de4fc1d8 100644 --- a/lib/rdmarkerdialog.h +++ b/lib/rdmarkerdialog.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -76,7 +77,6 @@ class RDMarkerDialog : public RDDialog void timeFullInData(); void timeInData(); void timeOutData(); - void okData(); void cancelData(); @@ -99,25 +99,6 @@ class RDMarkerDialog : public RDDialog RDMarkerPlayer *d_player; - RDMarkerReadout *d_cut_readout; - RDMarkerReadout *d_fadeup_readout; - RDMarkerReadout *d_fadedown_readout; - RDMarkerReadout *d_talk_readout; - RDMarkerReadout *d_segue_readout; - RDMarkerReadout *d_hook_readout; - - QGroupBox *d_goto_group; - QPushButton *d_goto_cursor_button; - QPushButton *d_goto_home_button; - QPushButton *d_goto_end_button; - - QCheckBox *d_no_segue_fade_check; - QLabel *d_no_segue_fade_label; - - QLabel *d_play_gain_label; - QSpinBox *d_play_gain_spin; - QLabel *d_play_gain_unit_label; - QPushButton *d_ok_button; QPushButton *d_cancel_button; unsigned d_cart_number; diff --git a/lib/rdmarkerplayer.cpp b/lib/rdmarkerplayer.cpp index 477d09d9..c9c2cbd4 100644 --- a/lib/rdmarkerplayer.cpp +++ b/lib/rdmarkerplayer.cpp @@ -19,6 +19,7 @@ // #include "rdconf.h" +#include "rdescape_string.h" #include "rdmixer.h" #include "rdmarkerplayer.h" @@ -41,11 +42,55 @@ RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent) connect(rda->cae(),SIGNAL(playPositionChanged(int,unsigned)), this,SLOT(caePositionData(int,unsigned))); + // + // Marker Readouts + // + for(int i=0;i<7;i++) { + d_readout_labels[i]=new QLabel(this); + d_readout_labels[i]->setFont(labelFont()); + d_readout_labels[i]->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + } + d_readout_labels[1]->setText(tr("Start")+":"); + d_readout_labels[2]->setText(tr("End")+":"); + d_readout_labels[3]->setText(tr("Length")+":"); + + d_readout_labels[5]->setText(tr("Position")+":"); + d_readout_labels[6]->setText(tr("Length")+":"); + + d_readout_mapper=new QSignalMapper(this); + connect(d_readout_mapper,SIGNAL(mapped(int)), + this,SLOT(readoutClickedData(int))); + + d_cut_readout=new RDMarkerReadout(RDMarkerHandle::CutStart,this); + connect(d_cut_readout,SIGNAL(clicked()),d_readout_mapper,SLOT(map())); + d_readout_mapper->setMapping(d_cut_readout,(int)RDMarkerHandle::CutStart); + d_cut_readout->setEnabled(true); + + d_talk_readout=new RDMarkerReadout(RDMarkerHandle::TalkStart,this); + connect(d_talk_readout,SIGNAL(clicked()),d_readout_mapper,SLOT(map())); + d_readout_mapper->setMapping(d_talk_readout,(int)RDMarkerHandle::TalkStart); + + d_segue_readout=new RDMarkerReadout(RDMarkerHandle::SegueStart,this); + connect(d_segue_readout,SIGNAL(clicked()),d_readout_mapper,SLOT(map())); + d_readout_mapper->setMapping(d_segue_readout,(int)RDMarkerHandle::SegueStart); + + d_hook_readout=new RDMarkerReadout(RDMarkerHandle::HookStart,this); + connect(d_hook_readout,SIGNAL(clicked()),d_readout_mapper,SLOT(map())); + d_readout_mapper->setMapping(d_hook_readout,(int)RDMarkerHandle::HookStart); + + d_fadeup_readout=new RDMarkerReadout(RDMarkerHandle::FadeUp,this); + connect(d_fadeup_readout,SIGNAL(clicked()),d_readout_mapper,SLOT(map())); + d_readout_mapper->setMapping(d_fadeup_readout,(int)RDMarkerHandle::FadeUp); + + d_fadedown_readout=new RDMarkerReadout(RDMarkerHandle::FadeDown,this); + connect(d_fadedown_readout,SIGNAL(clicked()),d_readout_mapper,SLOT(map())); + d_readout_mapper->setMapping(d_fadedown_readout,(int)RDMarkerHandle::FadeDown); + // // Time Counters // - d_position_label=new QLabel(tr("Position"),this); - d_position_label->setFont(subLabelFont()); + d_position_label=new QLabel(tr("Cursor Position"),this); + d_position_label->setFont(labelFont()); d_position_label->setAlignment(Qt::AlignCenter); d_position_label-> setPalette(QPalette(palette().color(QPalette::Background), @@ -56,29 +101,22 @@ RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent) 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::AlignCenter); - d_region_edit_label-> - setPalette(QPalette(palette().color(QPalette::Background), - QColor(RDMARKERPLAYER_HIGHLIGHT_COLOR))); - d_region_edit=new QLabel(this); - d_region_edit->setAcceptDrops(false); - d_region_edit->setAlignment(Qt::AlignCenter); - d_region_edit-> - setStyleSheet("background-color: "+palette().color(QPalette::Base).name()); + // + // Goto Buttons + // + d_goto_start_button=new QPushButton(tr("Go To\nStart"),this); + d_goto_start_button->setFont(buttonFont()); + connect(d_goto_start_button,SIGNAL(clicked()), + this,SLOT(buttonGotoStartData())); - 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()); + d_goto_cursor_button=new QPushButton(tr("Go To\nCursor"),this); + d_goto_cursor_button->setFont(buttonFont()); + connect(d_goto_cursor_button,SIGNAL(clicked()), + this,SLOT(buttonGotoCursorData())); + + d_goto_end_button=new QPushButton(tr("Go To\nEnd"),this); + d_goto_end_button->setFont(buttonFont()); + connect(d_goto_end_button,SIGNAL(clicked()),this,SLOT(buttonGotoEndData())); // // Transport Buttons @@ -122,6 +160,53 @@ RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent) d_meter->setMode(RDSegMeter::Peak); d_meter_timer=new QTimer(this); connect(d_meter_timer,SIGNAL(timeout()),this,SLOT(meterData())); + + // + // Fade on Segue Out + // + d_no_segue_fade_check=new QCheckBox(this); + d_no_segue_fade_label=new QLabel(tr("No Fade on Segue Out"),this); + d_no_segue_fade_label->setFont(labelFont()); + connect(d_no_segue_fade_check,SIGNAL(toggled(bool)), + this,SLOT(noFadeOnSegueData(bool))); + + // + // Cut Gain + // + d_play_gain_spin=new QSpinBox(this); + d_play_gain_spin->setRange(-10,10); + connect(d_play_gain_spin,SIGNAL(valueChanged(int)), + this,SLOT(playGainData(int))); + d_play_gain_label=new QLabel(tr("Cut Gain")+":",this); + d_play_gain_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + d_play_gain_label->setFont(labelFont()); + d_play_gain_unit_label=new QLabel(tr("dB"),this); + d_play_gain_unit_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); + d_play_gain_unit_label->setFont(labelFont()); + + // + // Audio Trim + // + d_trim_start_button=new QPushButton(tr("Trim Start"),this); + d_trim_start_button->setFont(buttonFont()); + connect(d_trim_start_button,SIGNAL(clicked()), + this,SLOT(buttonTrimStartData())); + + d_trim_end_button=new QPushButton(tr("Trim End"),this); + d_trim_end_button->setFont(buttonFont()); + connect(d_trim_end_button,SIGNAL(clicked()), + this,SLOT(buttonTrimEndData())); + + d_trim_label=new QLabel(tr("Threshold"),this); + d_trim_label->setFont(labelFont()); + d_trim_label->setAlignment(Qt::AlignCenter); + d_trim_spin=new QSpinBox(this); + d_trim_spin->setRange(-99,0); + d_trim_spin->setSuffix(" dBFS"); + d_trim_spin->setValue(rda->libraryConf()->trimThreshold()/100); + connect(d_trim_spin,SIGNAL(valueChanged(int)), + this,SLOT(trimThresholdChanged(int))); + trimThresholdChanged(d_trim_spin->value()); } @@ -132,7 +217,7 @@ RDMarkerPlayer::~RDMarkerPlayer() QSize RDMarkerPlayer::sizeHint() const { - return QSize(736,96); + return QSize(1046,150); } @@ -153,6 +238,39 @@ bool RDMarkerPlayer::setCut(unsigned cartnum,int cutnum) rda->cae()->positionPlay(d_cae_handle,0); RDSetMixerOutputPort(rda->cae(),d_cards.first(),d_cae_stream,d_port); + QString sql=QString("select ")+ + "START_POINT,"+ // 00 + "END_POINT,"+ // 01 + "TALK_START_POINT,"+ // 02 + "TALK_END_POINT,"+ // 03 + "SEGUE_START_POINT,"+ // 04 + "SEGUE_END_POINT,"+ // 05 + "HOOK_START_POINT,"+ // 06 + "HOOK_END_POINT,"+ // 07 + "FADEUP_POINT,"+ // 08 + "FADEDOWN_POINT,"+ // 09 + "SEGUE_GAIN,"+ // 10 + "PLAY_GAIN "+ // 11 + "from CUTS where "+ + "CUT_NAME=\""+RDEscapeString(RDCut::cutName(cartnum,cutnum))+"\""; + RDSqlQuery *q=new RDSqlQuery(sql); + if(q->first()) { + for(int i=0;isetValue(role,q->value(i).toInt()); + d_talk_readout->setValue(role,q->value(i).toInt()); + d_segue_readout->setValue(role,q->value(i).toInt()); + d_hook_readout->setValue(role,q->value(i).toInt()); + d_fadeup_readout->setValue(role,q->value(i).toInt()); + d_fadedown_readout->setValue(role,q->value(i).toInt()); + setPointerValue(role,q->value(i).toInt()); + setSelectedMarkers(RDMarkerHandle::LastRole,RDMarkerHandle::LastRole); + } + d_no_segue_fade_check->setChecked(q->value(10).toInt()==0); + d_play_gain_spin->setValue(q->value(11).toInt()/100); + } + delete q; + return true; } @@ -190,7 +308,12 @@ void RDMarkerPlayer::setPointerValue(RDMarkerHandle::PointerRole role,int ptr) { if(ptr!=d_pointers[role]) { d_pointers[role]=ptr; - UpdateReadouts(); + d_cut_readout->setValue(role,ptr); + d_talk_readout->setValue(role,ptr); + d_segue_readout->setValue(role,ptr); + d_hook_readout->setValue(role,ptr); + d_fadeup_readout->setValue(role,ptr); + d_fadedown_readout->setValue(role,ptr); } } @@ -202,9 +325,6 @@ void RDMarkerPlayer::setSelectedMarkers(RDMarkerHandle::PointerRole start_role, if(start_role==RDMarkerHandle::LastRole) { color=RDMarkerHandle::pointerRoleColor(end_role); } - QString ss= - "color:"+RDGetTextColor(color).name()+";background-color:"+color.name(); - d_region_edit_label->setStyleSheet(ss); d_play_from_button->setAccentColor(color); d_play_to_button->setAccentColor(color); d_selected_markers[0]=start_role; @@ -213,7 +333,36 @@ void RDMarkerPlayer::setSelectedMarkers(RDMarkerHandle::PointerRole start_role, d_play_from_button->setDisabled(start_role==RDMarkerHandle::LastRole); d_play_to_button->setDisabled(end_role==RDMarkerHandle::LastRole); - UpdateReadouts(); + d_cut_readout-> + setSelectedMarkers(d_selected_markers[0],d_selected_markers[1]); + d_talk_readout-> + setSelectedMarkers(d_selected_markers[0],d_selected_markers[1]); + d_segue_readout-> + setSelectedMarkers(d_selected_markers[0],d_selected_markers[1]); + d_hook_readout-> + setSelectedMarkers(d_selected_markers[0],d_selected_markers[1]); + d_fadeup_readout-> + setSelectedMarkers(d_selected_markers[0],d_selected_markers[1]); + d_fadedown_readout-> + setSelectedMarkers(d_selected_markers[0],d_selected_markers[1]); +} + + +void RDMarkerPlayer::buttonGotoStartData() +{ + emit gotoStartClicked(); +} + + +void RDMarkerPlayer::buttonGotoCursorData() +{ + emit gotoCursorClicked(); +} + + +void RDMarkerPlayer::buttonGotoEndData() +{ + emit gotoEndClicked(); } @@ -311,6 +460,68 @@ void RDMarkerPlayer::buttonLoopData() } +void RDMarkerPlayer::playGainData(int db) +{ + emit playGainSet(db); +} + + +void RDMarkerPlayer::noFadeOnSegueData(bool state) +{ + emit noFadeOnSegueChanged(state); +} + + +void RDMarkerPlayer::buttonTrimStartData() +{ + emit startTrimClicked(d_trim_spin->value()); +} + + +void RDMarkerPlayer::buttonTrimEndData() +{ + emit endTrimClicked(d_trim_spin->value()); +} + + +void RDMarkerPlayer::readoutClickedData(int n) +{ + RDMarkerHandle::PointerRole role=(RDMarkerHandle::PointerRole)n; + switch(role) { + case RDMarkerHandle::CutStart: + case RDMarkerHandle::TalkStart: + case RDMarkerHandle::SegueStart: + case RDMarkerHandle::HookStart: + setSelectedMarkers(role,(RDMarkerHandle::PointerRole)((int)role+1)); + emit selectedMarkersChanged(role, + (RDMarkerHandle::PointerRole)((int)role+1)); + break; + + case RDMarkerHandle::CutEnd: + case RDMarkerHandle::TalkEnd: + case RDMarkerHandle::SegueEnd: + case RDMarkerHandle::HookEnd: + setSelectedMarkers((RDMarkerHandle::PointerRole)((int)role-1),role); + emit selectedMarkersChanged((RDMarkerHandle::PointerRole)((int)role-1), + role); + break; + + case RDMarkerHandle::FadeUp: + setSelectedMarkers(RDMarkerHandle::LastRole,role); + emit selectedMarkersChanged(RDMarkerHandle::LastRole,role); + break; + + case RDMarkerHandle::FadeDown: + setSelectedMarkers(role,RDMarkerHandle::LastRole); + emit selectedMarkersChanged(role,RDMarkerHandle::LastRole); + break; + + case RDMarkerHandle::LastRole: + break; + } +} + + void RDMarkerPlayer::meterData() { short lvls[2]; @@ -369,23 +580,104 @@ void RDMarkerPlayer::caePositionData(int handle,unsigned msec) } +void RDMarkerPlayer::trimThresholdChanged(int dbfs) +{ + d_trim_start_button->setDisabled(dbfs==0); + d_trim_end_button->setDisabled(dbfs==0); +} + + void RDMarkerPlayer::resizeEvent(QResizeEvent *) { - 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); + for(int i=0;i<7;i++) { + d_readout_labels[i]->setGeometry(2, + i*(d_cut_readout->sizeHint().height()/4-1), + 15+50, + d_cut_readout->sizeHint().height()/4+1); + } - d_play_button->setGeometry(10,42,65,45); - d_play_from_button->setGeometry(80,42,65,45); - d_play_to_button->setGeometry(150,42,65,45); - d_stop_button->setGeometry(220,42,65,45); - d_loop_button->setGeometry(290,42,65,45); + d_cut_readout->setGeometry(70, + 2+8, + d_cut_readout->sizeHint().width(), + d_cut_readout->sizeHint().height()); - d_meter->setGeometry(370,15,d_meter->sizeHint().width(), + d_talk_readout->setGeometry(70+1*(d_talk_readout->sizeHint().width()), + 2+8, + d_talk_readout->sizeHint().width(), + d_talk_readout->sizeHint().height()); + + d_segue_readout->setGeometry(70+2*(d_segue_readout->sizeHint().width()), + 2+8, + d_segue_readout->sizeHint().width(), + d_segue_readout->sizeHint().height()); + + d_hook_readout->setGeometry(70+3*(d_hook_readout->sizeHint().width()), + 2+8, + d_hook_readout->sizeHint().width(), + d_hook_readout->sizeHint().height()); + + d_fadeup_readout->setGeometry(70, + 10+d_hook_readout->sizeHint().height(), + 2*d_fadeup_readout->sizeHint().width(), + d_fadeup_readout->sizeHint().height()); + + d_fadedown_readout->setGeometry(70+2*d_fadedown_readout->sizeHint().width()-1, + 10+d_hook_readout->sizeHint().height(), + 2*d_fadedown_readout->sizeHint().width(), + d_fadedown_readout->sizeHint().height()); + + d_position_label->setGeometry(340,3,345,16); + d_position_edit->setGeometry(475,20,75,18); + + d_goto_start_button->setGeometry(390,45,65,45); + d_goto_cursor_button->setGeometry(480,45,65,45); + d_goto_end_button->setGeometry(570,45,65,45); + + d_play_button->setGeometry(340,97,65,45); + d_play_from_button->setGeometry(410,97,65,45); + d_play_to_button->setGeometry(480,97,65,45); + d_stop_button->setGeometry(550,97,65,45); + d_loop_button->setGeometry(620,97,65,45); + + d_meter->setGeometry(695,15,d_meter->sizeHint().width(), d_meter->sizeHint().height()); + + d_no_segue_fade_check->setGeometry(695, + 25+d_meter->sizeHint().height(), + 15, + 15); + d_no_segue_fade_label->setGeometry(715, + 23+d_meter->sizeHint().height(), + 200, + 20); + + d_play_gain_label->setGeometry(655, + 47+d_meter->sizeHint().height(), + 100, + 20); + d_play_gain_spin->setGeometry(760, + 47+d_meter->sizeHint().height(), + 40, + 20); + d_play_gain_unit_label->setGeometry(805, + 47+d_meter->sizeHint().height(), + 60, + 20); + + d_trim_start_button->setGeometry(870, + 25+d_meter->sizeHint().height(), + 80,25); + d_trim_end_button->setGeometry(870, + 55+d_meter->sizeHint().height(), + 80,25); + d_trim_label->setGeometry(960, + 30+d_meter->sizeHint().height(), + 80, + 20); + d_trim_spin->setGeometry(960, + 47+d_meter->sizeHint().height(), + 80, + 20); } @@ -403,51 +695,3 @@ void RDMarkerPlayer::paintEvent(QPaintEvent *e) delete p; } - - -void RDMarkerPlayer::UpdateReadouts() -{ - // - // Region - // - switch(d_selected_markers[0]) { - case RDMarkerHandle::CutStart: - case RDMarkerHandle::TalkStart: - case RDMarkerHandle::SegueStart: - case RDMarkerHandle::HookStart: - d_region_edit-> - setText(RDGetTimeLength(d_pointers[d_selected_markers[1]]- - d_pointers[d_selected_markers[0]],true,true)); - break; - - case RDMarkerHandle::CutEnd: - case RDMarkerHandle::TalkEnd: - case RDMarkerHandle::SegueEnd: - case RDMarkerHandle::HookEnd: - break; - - case RDMarkerHandle::FadeDown: - d_region_edit-> - setText(RDGetTimeLength(d_pointers[RDMarkerHandle::CutEnd]- - d_pointers[d_selected_markers[0]],true,true)); - break; - - case RDMarkerHandle::LastRole: - if(d_selected_markers[1]==RDMarkerHandle::FadeUp) { - d_region_edit-> - setText(RDGetTimeLength(d_pointers[d_selected_markers[1]]- - d_pointers[RDMarkerHandle::CutStart],true,true)); - } - break; - - case RDMarkerHandle::FadeUp: - 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 9b47eb3e..40c88432 100644 --- a/lib/rdmarkerplayer.h +++ b/lib/rdmarkerplayer.h @@ -21,10 +21,13 @@ #ifndef RDMARKERPLAYER_H #define RDMARKERPLAYER_H +#include #include #include +#include #include +#include #include #include #include @@ -52,40 +55,78 @@ class RDMarkerPlayer : public RDWidget signals: void cursorPositionChanged(unsigned msec); + void selectedMarkersChanged(RDMarkerHandle::PointerRole start_role, + RDMarkerHandle::PointerRole end_role); + void gotoStartClicked(); + void gotoCursorClicked(); + void gotoEndClicked(); + void noFadeOnSegueChanged(bool state); + void playGainSet(int db); + void startTrimClicked(int dbfs); + void endTrimClicked(int dbfs); private slots: + void buttonGotoStartData(); + void buttonGotoCursorData(); + void buttonGotoEndData(); void buttonPlayData(); void buttonPlayFromData(); void buttonPlayToData(); void buttonStopData(); void buttonLoopData(); + void playGainData(int db); + void noFadeOnSegueData(bool state); + void buttonTrimStartData(); + void buttonTrimEndData(); + void readoutClickedData(int role); void meterData(); void caePlayedData(int handle); void caePausedData(int handle); void caePositionData(int handle,unsigned pos); + void trimThresholdChanged(int dbfs); protected: void resizeEvent(QResizeEvent *); void paintEvent(QPaintEvent *e); private: - void UpdateReadouts(); + QLabel *d_readout_labels[7]; + QSignalMapper *d_readout_mapper; + RDMarkerReadout *d_cut_readout; + RDMarkerReadout *d_fadeup_readout; + RDMarkerReadout *d_fadedown_readout; + RDMarkerReadout *d_talk_readout; + RDMarkerReadout *d_segue_readout; + RDMarkerReadout *d_hook_readout; + QLabel *d_position_label; QLabel *d_position_edit; - QLabel *d_region_edit_label; - QLabel *d_region_edit; - QLabel *d_length_label; - QLabel *d_length_edit; + + QPushButton *d_goto_start_button; + QPushButton *d_goto_cursor_button; + QPushButton *d_goto_end_button; RDTransportButton *d_play_button; RDTransportButton *d_play_from_button; RDTransportButton *d_play_to_button; RDTransportButton *d_active_play_button; - RDTransportButton *d_stop_button; RDTransportButton *d_loop_button; RDStereoMeter *d_meter; QTimer *d_meter_timer; + + QCheckBox *d_no_segue_fade_check; + QLabel *d_no_segue_fade_label; + + QLabel *d_play_gain_label; + QSpinBox *d_play_gain_spin; + QLabel *d_play_gain_unit_label; + + QPushButton *d_trim_start_button; + QPushButton *d_trim_end_button; + QLabel *d_trim_label; + QSpinBox *d_trim_spin; + QList d_cards; int d_port; int d_cae_stream; diff --git a/lib/rdmarkerreadout.cpp b/lib/rdmarkerreadout.cpp index 5c60b602..e081daf3 100644 --- a/lib/rdmarkerreadout.cpp +++ b/lib/rdmarkerreadout.cpp @@ -25,7 +25,7 @@ RDMarkerReadout::RDMarkerReadout(RDMarkerHandle::PointerRole role, QWidget *parent) - : RDWidget(parent) + : RDPushButton(parent) { d_roles.push_back(role); d_selected_marker=RDMarkerHandle::LastRole; @@ -40,7 +40,7 @@ RDMarkerReadout::RDMarkerReadout(RDMarkerHandle::PointerRole role, case RDMarkerHandle::SegueStart: case RDMarkerHandle::HookStart: d_roles.push_back((RDMarkerHandle::PointerRole)(role+1)); - for(int i=0;i<2;i++) { + for(int i=0;i<3;i++) { d_edits.push_back(new QLabel(this)); d_edits.back()->setFrameShape(QFrame::Box); d_edits.back()->setFrameShadow(QFrame::Sunken); @@ -51,11 +51,13 @@ RDMarkerReadout::RDMarkerReadout(RDMarkerHandle::PointerRole role, case RDMarkerHandle::FadeUp: case RDMarkerHandle::FadeDown: - d_edits.push_back(new QLabel(this)); - d_edits.back()->setFrameShape(QFrame::Box); - d_edits.back()->setFrameShadow(QFrame::Sunken); - d_edits.back()->setAlignment(Qt::AlignCenter); - d_edits.back()->setText("0:00:00"); + for(int i=0;i<2;i++) { + d_edits.push_back(new QLabel(this)); + d_edits.back()->setFrameShape(QFrame::Box); + d_edits.back()->setFrameShadow(QFrame::Sunken); + d_edits.back()->setAlignment(Qt::AlignCenter); + d_edits.back()->setText("0:00:00"); + } break; case RDMarkerHandle::CutEnd: @@ -81,7 +83,7 @@ RDMarkerReadout::~RDMarkerReadout() QSize RDMarkerReadout::sizeHint() const { - return QSize(labelFontMetrics()->width("00:00:00")+10,20+20*d_edits.size()); + return QSize(65,21+18*d_edits.size()); } @@ -93,15 +95,56 @@ QSizePolicy RDMarkerReadout::sizePolicy() const void RDMarkerReadout::setValue(RDMarkerHandle::PointerRole role,int value) { - for(int i=0;i=0) { - d_edits.at(i)->setText(RDGetTimeLength(value,true,true)); + if(d_pointers[role]!=value) { + d_pointers[role]=value; + for(int i=0;i=0) { + d_edits.at(i)->setText(RDGetTimeLength(value,true,true)); + } + else { + d_edits.at(i)->setText("0:00:00"); + } + setEnabled(value>=0); + } + } + switch(d_roles.first()) { + case RDMarkerHandle::CutStart: + case RDMarkerHandle::TalkStart: + case RDMarkerHandle::SegueStart: + case RDMarkerHandle::HookStart: + if((d_pointers[d_roles.first()]<0)||(d_pointers[d_roles.last()]<0)) { + d_edits.last()->setText("0:00:00"); } else { - d_edits.at(i)->setText("0:00:00"); + d_edits.last()->setText(RDGetTimeLength(d_pointers[d_roles.last()]-d_pointers[d_roles.first()],true,true)); } - setEnabled(value>=0); + break; + + case RDMarkerHandle::FadeUp: + if(d_pointers[d_roles.first()]<0) { + d_edits.last()->setText("0:00:00"); + } + else { + d_edits.last()->setText(RDGetTimeLength(d_pointers[d_roles.first()]-d_pointers[RDMarkerHandle::CutStart],true,true)); + } + break; + + case RDMarkerHandle::FadeDown: + if(d_pointers[d_roles.first()]<0) { + d_edits.last()->setText("0:00:00"); + } + else { + d_edits.last()->setText(RDGetTimeLength(d_pointers[RDMarkerHandle::CutEnd]-d_pointers[d_roles.first()],true,true)); + } + break; + + case RDMarkerHandle::CutEnd: + case RDMarkerHandle::TalkEnd: + case RDMarkerHandle::LastRole: + case RDMarkerHandle::SegueEnd: + case RDMarkerHandle::HookEnd: + break; } } } @@ -135,13 +178,19 @@ void RDMarkerReadout::setEnabled(bool state) "color: "+ RDGetTextColor(RDMarkerHandle:: pointerRoleColor(d_roles.first())).name()); + setCursor(Qt::PointingHandCursor); } else { d_label->setStyleSheet("background-color: "+LABEL_DISABLED_COLOR); + unsetCursor(); } for(int i=0;isetStyleSheet(""); + } d_edits.at(i)->setEnabled(state); } + QPushButton::setEnabled(state); } diff --git a/lib/rdmarkerreadout.h b/lib/rdmarkerreadout.h index 80f11989..4fefd711 100644 --- a/lib/rdmarkerreadout.h +++ b/lib/rdmarkerreadout.h @@ -25,9 +25,9 @@ #include #include -#include +#include -class RDMarkerReadout : public RDWidget +class RDMarkerReadout : public RDPushButton { Q_OBJECT; public: @@ -51,6 +51,7 @@ class RDMarkerReadout : public RDWidget QList d_edits; QList d_roles; RDMarkerHandle::PointerRole d_selected_marker; + int d_pointers[RDMarkerHandle::LastRole]; }; diff --git a/lib/rdmarkerview.cpp b/lib/rdmarkerview.cpp index 00b48006..e09270bf 100644 --- a/lib/rdmarkerview.cpp +++ b/lib/rdmarkerview.cpp @@ -20,12 +20,14 @@ #include #include +#include #include #include #include #include "rdescape_string.h" #include "rdmarkerview.h" +#include "rdtrimaudio.h" #define LEFT_MARGIN 30 @@ -55,6 +57,8 @@ RDMarkerHandle::RDMarkerHandle(RDMarkerHandle::PointerRole role, d_name=RDMarkerHandle::pointerRoleTypeText(role); d_role=role; setToolTip(RDMarkerHandle::pointerRoleTypeText(role)); + + setAcceptHoverEvents(true); } @@ -104,6 +108,22 @@ void RDMarkerHandle::setSelected(bool state) } +void RDMarkerHandle::hoverEnterEvent(QGraphicsSceneHoverEvent *e) +{ + RDMarkerView *view=static_cast(d_marker_view); + + view->setCursor(Qt::PointingHandCursor); +} + + +void RDMarkerHandle::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) +{ + RDMarkerView *view=static_cast(d_marker_view); + + view->unsetCursor(); +} + + void RDMarkerHandle::mousePressEvent(QGraphicsSceneMouseEvent *e) { RDMarkerView *view=static_cast(d_marker_view); @@ -120,7 +140,7 @@ void RDMarkerHandle::mousePressEvent(QGraphicsSceneMouseEvent *e) } } } - view->setSelectedMarker(d_role); + view->setSelectedMarkers(d_role,RDMarkerHandle::LastRole); } if(e->button()==Qt::RightButton) { @@ -466,65 +486,6 @@ bool RDMarkerView::hasUnsavedChanges() const return d_has_unsaved_changes; } - -void RDMarkerView::setSelectedMarker(RDMarkerHandle::PointerRole role) -{ - switch(role) { - case RDMarkerHandle::CutEnd: - case RDMarkerHandle::TalkEnd: - case RDMarkerHandle::SegueEnd: - case RDMarkerHandle::HookEnd: - d_selected_markers[0]=(RDMarkerHandle::PointerRole)((int)role-1); - d_selected_markers[1]=role; - break; - - case RDMarkerHandle::CutStart: - case RDMarkerHandle::TalkStart: - case RDMarkerHandle::SegueStart: - case RDMarkerHandle::HookStart: - d_selected_markers[0]=role; - d_selected_markers[1]=(RDMarkerHandle::PointerRole)((int)role+1); - break; - - case RDMarkerHandle::FadeUp: - d_selected_markers[0]=RDMarkerHandle::LastRole; - d_selected_markers[1]=RDMarkerHandle::FadeUp; - break; - - case RDMarkerHandle::FadeDown: - if(role!=d_selected_markers[0]) { - for(int i=0;i - setSelected(role==(RDMarkerHandle::PointerRole)i); - } - } - } - } - d_selected_markers[0]=RDMarkerHandle::FadeDown; - d_selected_markers[1]=RDMarkerHandle::LastRole; - break; - - case RDMarkerHandle::LastRole: - d_selected_markers[0]=RDMarkerHandle::LastRole; - d_selected_markers[1]=RDMarkerHandle::LastRole; - break; - } - for(int i=0;i - setSelected(d_selected_markers[0]==(RDMarkerHandle::PointerRole)i); - d_handles[i+1][j]-> - setSelected(d_selected_markers[1]==(RDMarkerHandle::PointerRole)i+1); - } - } - } - emit selectedMarkersChanged(d_selected_markers[0],d_selected_markers[1]); -} - - void RDMarkerView::processRightClick(RDMarkerHandle::PointerRole role, const QPointF &pos) { @@ -560,6 +521,74 @@ void RDMarkerView::updatePosition(RDMarkerHandle::PointerRole role, int ptr) } +void RDMarkerView::setSelectedMarkers(RDMarkerHandle::PointerRole start_role, + RDMarkerHandle::PointerRole end_role) +{ + switch(start_role) { + case RDMarkerHandle::CutEnd: + case RDMarkerHandle::TalkEnd: + case RDMarkerHandle::SegueEnd: + case RDMarkerHandle::HookEnd: + d_selected_markers[0]=(RDMarkerHandle::PointerRole)((int)start_role-1); + d_selected_markers[1]=start_role; + break; + + case RDMarkerHandle::CutStart: + case RDMarkerHandle::TalkStart: + case RDMarkerHandle::SegueStart: + case RDMarkerHandle::HookStart: + d_selected_markers[0]=start_role; + d_selected_markers[1]=(RDMarkerHandle::PointerRole)((int)start_role+1); + break; + + case RDMarkerHandle::FadeUp: + d_selected_markers[0]=RDMarkerHandle::LastRole; + d_selected_markers[1]=RDMarkerHandle::FadeUp; + break; + + case RDMarkerHandle::FadeDown: + if(start_role!=d_selected_markers[0]) { + for(int i=0;i + setSelected(start_role==(RDMarkerHandle::PointerRole)i); + } + } + } + } + d_selected_markers[0]=RDMarkerHandle::FadeDown; + d_selected_markers[1]=RDMarkerHandle::LastRole; + break; + + case RDMarkerHandle::LastRole: + d_selected_markers[0]=RDMarkerHandle::LastRole; + d_selected_markers[1]=RDMarkerHandle::FadeUp; + break; + } + for(int i=0;i + setSelected(d_selected_markers[0]==(RDMarkerHandle::PointerRole)i); + } + if(d_handles[i+1][j]!=NULL) { + d_handles[i+1][j]-> + setSelected(d_selected_markers[1]==(RDMarkerHandle::PointerRole)i+1); + } + } + } + for(int j=0;j<2;j++) { // And the FadeUp marker + if(d_handles[RDMarkerHandle::FadeUp][j]!=NULL) { + d_handles[RDMarkerHandle::FadeUp][j]-> + setSelected(d_selected_markers[1]==RDMarkerHandle::FadeUp); + } + } + + emit selectedMarkersChanged(d_selected_markers[0],d_selected_markers[1]); +} + + void RDMarkerView::setNoSegueFade(bool state) { d_has_unsaved_changes=state!=d_no_segue_fade; @@ -577,6 +606,54 @@ void RDMarkerView::setPlayGain(int db) } +void RDMarkerView::trimStart(int dbfs) +{ + RDTrimAudio::ErrorCode conv_err; + RDTrimAudio *conv=new RDTrimAudio(rda->station(),rda->config(),this); + conv->setCartNumber(d_cart_number); + conv->setCutNumber(d_cut_number); + conv->setTrimLevel(100*dbfs); + switch(conv_err=conv->runTrim(rda->user()->name(),rda->user()->password())) { + case RDTrimAudio::ErrorOk: + if(conv->startPoint()>=0) { + updatePosition(RDMarkerHandle::CutStart,conv->startPoint()); + PositionMarker(RDMarkerHandle::CutStart,conv->startPoint()); + } + break; + + default: + QMessageBox::warning(this,tr("Edit Audio"), + RDTrimAudio::errorText(conv_err)); + break; + } + delete conv; +} + + +void RDMarkerView::trimEnd(int dbfs) +{ + RDTrimAudio::ErrorCode conv_err; + RDTrimAudio *conv=new RDTrimAudio(rda->station(),rda->config(),this); + conv->setCartNumber(d_cart_number); + conv->setCutNumber(d_cut_number); + conv->setTrimLevel(100*dbfs); + switch(conv_err=conv->runTrim(rda->user()->name(),rda->user()->password())) { + case RDTrimAudio::ErrorOk: + if(conv->endPoint()>=0) { + updatePosition(RDMarkerHandle::CutEnd,conv->endPoint()); + PositionMarker(RDMarkerHandle::CutEnd,conv->endPoint()); + } + break; + + default: + QMessageBox::warning(this,tr("Edit Audio"), + RDTrimAudio::errorText(conv_err)); + break; + } + delete conv; +} + + void RDMarkerView::setAudioGain(int lvl) { if(d_audio_gain!=lvl) { @@ -1208,6 +1285,18 @@ void RDMarkerView::RemoveMarker(RDMarkerHandle::PointerRole role) } +void RDMarkerView::PositionMarker(RDMarkerHandle::PointerRole role,int ptr) +{ + QList items=d_scene->items(); + + for(int i=0;itoolTip()==RDMarkerHandle::pointerRoleTypeText(role)) { + items.at(i)->setPos(LEFT_MARGIN+Frame(ptr),items.at(i)->pos().y()); + } + } +} + + void RDMarkerView::SetReferenceLines() { int sh=d_scene->height(); diff --git a/lib/rdmarkerview.h b/lib/rdmarkerview.h index 28c1bb7e..dc739b35 100644 --- a/lib/rdmarkerview.h +++ b/lib/rdmarkerview.h @@ -57,6 +57,8 @@ class RDMarkerHandle : public QGraphicsPolygonItem static PointerType pointerType(PointerRole role); protected: + void hoverEnterEvent(QGraphicsSceneHoverEvent *e); + void hoverLeaveEvent(QGraphicsSceneHoverEvent *e); void mousePressEvent(QGraphicsSceneMouseEvent *e); void mouseMoveEvent(QGraphicsSceneMouseEvent *e); void wheelEvent(QGraphicsSceneWheelEvent *e); @@ -96,7 +98,6 @@ class RDMarkerView : public RDWidget int playGain() const; bool hasUnsavedChanges() const; - void setSelectedMarker(RDMarkerHandle::PointerRole role); void processRightClick(RDMarkerHandle::PointerRole role, const QPointF &pos); void updatePosition(RDMarkerHandle::PointerRole role,int ptr); @@ -108,8 +109,12 @@ class RDMarkerView : public RDWidget RDMarkerHandle::PointerRole end_role); public slots: + void setSelectedMarkers(RDMarkerHandle::PointerRole start_role, + RDMarkerHandle::PointerRole end_role); void setNoSegueFade(bool state); void setPlayGain(int db); + void trimStart(int dbfs); + void trimEnd(int dbfs); void setAudioGain(int lvl); void setShrinkFactor(int sf); void setMaximumShrinkFactor(); @@ -146,6 +151,7 @@ class RDMarkerView : public RDWidget void DrawMarker(RDMarkerHandle::PointerType type, RDMarkerHandle::PointerRole role,int handle_pos); void RemoveMarker(RDMarkerHandle::PointerRole role); + void PositionMarker(RDMarkerHandle::PointerRole role,int ptr); void SetReferenceLines(); QGraphicsView *d_view; QGraphicsScene *d_scene;