mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-08-16 08:34:12 +02:00
2021-06-23 Fred Gleason <fredg@paravelsystems.com>
* Added a voice tracker widget to the right-hand side of rdairplay(1). Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
b98b33cfe2
commit
25c13af6c0
@ -21957,3 +21957,6 @@
|
|||||||
* Broke out voicetracker functionality from rdlogedit(1) into
|
* Broke out voicetracker functionality from rdlogedit(1) into
|
||||||
'RDTrackerEditDialog', 'RDTrackerModel', 'RDTrackerTableView'
|
'RDTrackerEditDialog', 'RDTrackerModel', 'RDTrackerTableView'
|
||||||
and 'RDTrackerWidget' classes.
|
and 'RDTrackerWidget' classes.
|
||||||
|
2021-06-23 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added a voice tracker widget to the right-hand side of
|
||||||
|
rdairplay(1).
|
||||||
|
@ -301,12 +301,12 @@ int RDLogModel::append(const QString &logname,bool track_ptrs)
|
|||||||
void RDLogModel::clear()
|
void RDLogModel::clear()
|
||||||
{
|
{
|
||||||
if(d_log_lines.size()>0) {
|
if(d_log_lines.size()>0) {
|
||||||
beginRemoveRows(QModelIndex(),0,lineCount()-1);
|
beginResetModel();
|
||||||
for(int i=0;i<d_log_lines.size();i++) {
|
for(int i=0;i<d_log_lines.size();i++) {
|
||||||
delete d_log_lines.at(i);
|
delete d_log_lines.at(i);
|
||||||
}
|
}
|
||||||
d_log_lines.clear();
|
d_log_lines.clear();
|
||||||
endRemoveRows();
|
endResetModel();
|
||||||
}
|
}
|
||||||
d_log_name="";
|
d_log_name="";
|
||||||
d_max_id=0;
|
d_max_id=0;
|
||||||
|
@ -389,6 +389,8 @@ RDTrackerWidget::RDTrackerWidget(QString *import_path,QWidget *parent)
|
|||||||
d_delete_button->setFont(buttonFont());
|
d_delete_button->setFont(buttonFont());
|
||||||
d_delete_button->setText(tr("Delete\nTrack"));
|
d_delete_button->setText(tr("Delete\nTrack"));
|
||||||
connect(d_delete_button,SIGNAL(clicked()),this,SLOT(deleteData()));
|
connect(d_delete_button,SIGNAL(clicked()),this,SLOT(deleteData()));
|
||||||
|
|
||||||
|
setDisabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -483,6 +485,8 @@ bool RDTrackerWidget::load(const QString &logname)
|
|||||||
tr("No voicetracking group has been defined for this service,\ntherefore only existing transitions will be editable."));
|
tr("No voicetracking group has been defined for this service,\ntherefore only existing transitions will be editable."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setEnabled(true);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,6 +498,7 @@ void RDTrackerWidget::unload()
|
|||||||
if(d_size_altered) {
|
if(d_size_altered) {
|
||||||
d_log_model->save(rda->config());
|
d_log_model->save(rda->config());
|
||||||
}
|
}
|
||||||
|
d_log_model->clear();
|
||||||
if(d_log_lock!=NULL) {
|
if(d_log_lock!=NULL) {
|
||||||
delete d_log_lock;
|
delete d_log_lock;
|
||||||
d_log_lock=NULL;
|
d_log_lock=NULL;
|
||||||
@ -512,6 +517,8 @@ void RDTrackerWidget::unload()
|
|||||||
}
|
}
|
||||||
|
|
||||||
d_tracks=0;
|
d_tracks=0;
|
||||||
|
LoadTrack(-1);
|
||||||
|
setDisabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1758,7 +1765,7 @@ void RDTrackerWidget::resizeEvent(QResizeEvent *e)
|
|||||||
delete d_wave_map[i];
|
delete d_wave_map[i];
|
||||||
d_wave_map[i]=new QPixmap(size().width()-90,77);
|
d_wave_map[i]=new QPixmap(size().width()-90,77);
|
||||||
}
|
}
|
||||||
DragTrack(0,0);
|
LoadTrack(d_track_line);
|
||||||
}
|
}
|
||||||
|
|
||||||
d_track1_button->setGeometry(size().width()-80,4,70,70);
|
d_track1_button->setGeometry(size().width()-80,4,70,70);
|
||||||
@ -1810,12 +1817,14 @@ void RDTrackerWidget::paintEvent(QPaintEvent *e)
|
|||||||
if(d_track_line<0) {
|
if(d_track_line<0) {
|
||||||
p=new QPainter();
|
p=new QPainter();
|
||||||
for(int i=0;i<3;i++) {
|
for(int i=0;i<3;i++) {
|
||||||
p->begin(d_wave_map[i]);
|
if(!d_wave_map[i]->isNull()) {
|
||||||
p->setPen(TRACKER_TEXT_COLOR);
|
p->begin(d_wave_map[i]);
|
||||||
p->setBackground(Qt::gray);
|
p->setPen(TRACKER_TEXT_COLOR);
|
||||||
p->eraseRect(0,0,d_wave_map[i]->size().width(),
|
p->setBackground(Qt::gray);
|
||||||
d_wave_map[i]->size().height());
|
p->eraseRect(0,0,d_wave_map[i]->size().width(),
|
||||||
p->end();
|
d_wave_map[i]->size().height());
|
||||||
|
p->end();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
delete p;
|
delete p;
|
||||||
}
|
}
|
||||||
@ -2169,9 +2178,11 @@ void RDTrackerWidget::LoadTrack(int line)
|
|||||||
if(d_wpg[i]!=NULL) {
|
if(d_wpg[i]!=NULL) {
|
||||||
delete d_wpg[i];
|
delete d_wpg[i];
|
||||||
}
|
}
|
||||||
d_wpg[i]=new RDWavePainter(d_wave_map[i],d_track_cuts[i],
|
if(!d_wave_map[i]->isNull()) {
|
||||||
rda->station(),rda->user(),rda->config());
|
d_wpg[i]=new RDWavePainter(d_wave_map[i],d_track_cuts[i],
|
||||||
d_wpg[i]->end();
|
rda->station(),rda->user(),rda->config());
|
||||||
|
d_wpg[i]->end();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2258,6 +2269,7 @@ void RDTrackerWidget::LoadTrack(int line)
|
|||||||
DrawTrackMap(0);
|
DrawTrackMap(0);
|
||||||
DrawTrackMap(1);
|
DrawTrackMap(1);
|
||||||
DrawTrackMap(2);
|
DrawTrackMap(2);
|
||||||
|
|
||||||
UpdateControls();
|
UpdateControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2820,7 +2832,7 @@ void RDTrackerWidget::DrawTrackMap(int trackno)
|
|||||||
QColor back_color;
|
QColor back_color;
|
||||||
switch(trackno) {
|
switch(trackno) {
|
||||||
case 0:
|
case 0:
|
||||||
if(d_wave_name[0].isEmpty()) {
|
if(d_wave_name[0].isEmpty()&&(!d_wave_map[0]->isNull())) {
|
||||||
p=new QPainter(d_wave_map[0]);
|
p=new QPainter(d_wave_map[0]);
|
||||||
p->setBackground(Qt::gray);
|
p->setBackground(Qt::gray);
|
||||||
p->eraseRect(0,0,d_wave_map[0]->size().width(),
|
p->eraseRect(0,0,d_wave_map[0]->size().width(),
|
||||||
@ -2829,108 +2841,111 @@ void RDTrackerWidget::DrawTrackMap(int trackno)
|
|||||||
delete p;
|
delete p;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
d_wpg[0]->begin(d_wave_map[0]);
|
if(!d_wave_map[0]->isNull()&&(!d_wave_map[0]->isNull())) {
|
||||||
d_wpg[0]->setFont(labelFont());
|
d_wpg[0]->begin(d_wave_map[0]);
|
||||||
d_wpg[0]->setPen(TRACKER_TEXT_COLOR);
|
d_wpg[0]->setFont(labelFont());
|
||||||
d_wpg[0]->setBackground(palette().color(QPalette::Background));
|
d_wpg[0]->setPen(TRACKER_TEXT_COLOR);
|
||||||
d_wpg[0]->eraseRect(0,0,d_wave_map[0]->size().width(),
|
d_wpg[0]->setBackground(palette().color(QPalette::Background));
|
||||||
d_wave_map[0]->size().height());
|
d_wpg[0]->eraseRect(0,0,d_wave_map[0]->size().width(),
|
||||||
if(!d_wave_name[0].isEmpty()) {
|
d_wave_map[0]->size().height());
|
||||||
d_wpg[0]->drawWaveByMsecs(0,d_wave_map[0]->width(),
|
if(!d_wave_name[0].isEmpty()) {
|
||||||
d_wave_origin[0],
|
d_wpg[0]->drawWaveByMsecs(0,d_wave_map[0]->width(),
|
||||||
d_wave_origin[0]+d_wave_width,800,
|
d_wave_origin[0],
|
||||||
RDWavePainter::Mono,Qt::black,
|
d_wave_origin[0]+d_wave_width,800,
|
||||||
d_loglines[0]->
|
RDWavePainter::Mono,Qt::black,
|
||||||
startPoint(RDLogLine::CartPointer),
|
d_loglines[0]->
|
||||||
d_loglines[0]->
|
startPoint(RDLogLine::CartPointer),
|
||||||
endPoint(RDLogLine::CartPointer));
|
d_loglines[0]->
|
||||||
|
endPoint(RDLogLine::CartPointer));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Draw Segue Markers
|
// Draw Segue Markers
|
||||||
//
|
//
|
||||||
if(d_loglines[0]->segueStartPoint(RDLogLine::CartPointer)>=0) {
|
if(d_loglines[0]->segueStartPoint(RDLogLine::CartPointer)>=0) {
|
||||||
xpos=(d_loglines[0]->segueStartPoint(RDLogLine::CartPointer)-
|
xpos=(d_loglines[0]->segueStartPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
||||||
|
RD_SEGUE_MARKER_COLOR,20,true);
|
||||||
|
xpos=(d_loglines[0]->segueEndPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
||||||
|
RD_SEGUE_MARKER_COLOR,20,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Start Marker
|
||||||
|
//
|
||||||
|
xpos=(d_loglines[0]->startPoint(RDLogLine::CartPointer)-
|
||||||
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
||||||
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
||||||
RD_SEGUE_MARKER_COLOR,20,true);
|
|
||||||
xpos=(d_loglines[0]->segueEndPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
|
||||||
RD_SEGUE_MARKER_COLOR,20,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Start Marker
|
|
||||||
//
|
|
||||||
xpos=(d_loglines[0]->startPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
|
||||||
RD_START_END_MARKER_COLOR,10,true);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw End Marker
|
|
||||||
//
|
|
||||||
xpos=(d_loglines[0]->endPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
|
||||||
RD_START_END_MARKER_COLOR,10,false);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Fadedown Marker
|
|
||||||
//
|
|
||||||
if(d_loglines[0]->fadedownPoint(RDLogLine::CartPointer)>=0) {
|
|
||||||
xpos=(d_loglines[0]->fadedownPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
|
||||||
RD_FADE_MARKER_COLOR,30,true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Rubber Bands
|
|
||||||
//
|
|
||||||
DrawRubberBand(d_wpg[0],0);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Menu Marker
|
|
||||||
//
|
|
||||||
if(d_menu_clicked_point>=0 && d_rightclick_track==0) {
|
|
||||||
DrawCursor(d_wpg[0],d_wave_map[0]->height(),d_menu_clicked_point,
|
|
||||||
RD_START_END_MARKER_COLOR,10,true);
|
RD_START_END_MARKER_COLOR,10,true);
|
||||||
DrawCursor(d_wpg[0],d_wave_map[0]->height(),d_menu_clicked_point,
|
|
||||||
|
//
|
||||||
|
// Draw End Marker
|
||||||
|
//
|
||||||
|
xpos=(d_loglines[0]->endPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
||||||
RD_START_END_MARKER_COLOR,10,false);
|
RD_START_END_MARKER_COLOR,10,false);
|
||||||
}
|
|
||||||
|
//
|
||||||
|
// Draw Fadedown Marker
|
||||||
|
//
|
||||||
|
if(d_loglines[0]->fadedownPoint(RDLogLine::CartPointer)>=0) {
|
||||||
|
xpos=(d_loglines[0]->fadedownPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[0])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[0],d_wave_map[0]->height(),xpos,
|
||||||
|
RD_FADE_MARKER_COLOR,30,true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Rubber Bands
|
||||||
|
//
|
||||||
|
DrawRubberBand(d_wpg[0],0);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Menu Marker
|
||||||
|
//
|
||||||
|
if(d_menu_clicked_point>=0 && d_rightclick_track==0) {
|
||||||
|
DrawCursor(d_wpg[0],d_wave_map[0]->height(),d_menu_clicked_point,
|
||||||
|
RD_START_END_MARKER_COLOR,10,true);
|
||||||
|
DrawCursor(d_wpg[0],d_wave_map[0]->height(),d_menu_clicked_point,
|
||||||
|
RD_START_END_MARKER_COLOR,10,false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
d_wpg[0]->setPen(TRACKER_TEXT_COLOR);
|
||||||
|
d_wpg[0]->drawText(5,14,d_loglines[0]->
|
||||||
|
resolveWildcards(rda->logeditConf()->waveformCaption()));
|
||||||
|
d_wpg[0]->end();
|
||||||
}
|
}
|
||||||
d_wpg[0]->setPen(TRACKER_TEXT_COLOR);
|
|
||||||
d_wpg[0]->drawText(5,14,d_loglines[0]->
|
|
||||||
resolveWildcards(rda->logeditConf()->waveformCaption()));
|
|
||||||
d_wpg[0]->end();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if(d_wave_name[1].isEmpty()) {
|
if(d_wave_name[1].isEmpty()) {
|
||||||
p=new QPainter(d_wave_map[1]);
|
if(!d_wave_map[1]->isNull()) {
|
||||||
if(d_loaded) {
|
p=new QPainter(d_wave_map[1]);
|
||||||
p->setBackground(palette().color(QPalette::Background));
|
if(d_loaded) {
|
||||||
p->setFont(labelFont());
|
p->setBackground(palette().color(QPalette::Background));
|
||||||
p->setPen(TRACKER_TEXT_COLOR);
|
p->setFont(labelFont());
|
||||||
p->eraseRect(0,0,d_wave_map[1]->size().width(),
|
p->setPen(TRACKER_TEXT_COLOR);
|
||||||
d_wave_map[1]->size().height());
|
p->eraseRect(0,0,d_wave_map[1]->size().width(),
|
||||||
p->drawText(5,14,d_loglines[1]->markerComment());
|
d_wave_map[1]->size().height());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
p->setBackground(Qt::gray);
|
||||||
|
p->eraseRect(0,0,d_wave_map[1]->size().width(),
|
||||||
|
d_wave_map[1]->size().height());
|
||||||
|
}
|
||||||
|
if(d_start_time>QTime(0,0,0)) {
|
||||||
|
p->setFont(labelFont());
|
||||||
|
p->setPen(TRACKER_TEXT_COLOR);
|
||||||
|
p->drawText(550,75,tr("Start")+" "+
|
||||||
|
d_start_time.toString("h:mm:ss"));
|
||||||
|
}
|
||||||
|
p->end();
|
||||||
|
delete p;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
p->setBackground(Qt::gray);
|
|
||||||
p->eraseRect(0,0,d_wave_map[1]->size().width(),
|
|
||||||
d_wave_map[1]->size().height());
|
|
||||||
}
|
|
||||||
if(d_start_time>QTime(0,0,0)) {
|
|
||||||
p->setFont(labelFont());
|
|
||||||
p->setPen(TRACKER_TEXT_COLOR);
|
|
||||||
p->drawText(550,75,tr("Start")+" "+
|
|
||||||
d_start_time.toString("h:mm:ss"));
|
|
||||||
}
|
|
||||||
p->end();
|
|
||||||
delete p;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if((d_loglines[1]->transType()==RDLogLine::Segue)) {
|
if((d_loglines[1]->transType()==RDLogLine::Segue)) {
|
||||||
@ -2942,127 +2957,131 @@ void RDTrackerWidget::DrawTrackMap(int trackno)
|
|||||||
switch(d_deck_state) {
|
switch(d_deck_state) {
|
||||||
case RDTrackerWidget::DeckTrack2:
|
case RDTrackerWidget::DeckTrack2:
|
||||||
case RDTrackerWidget::DeckTrack3:
|
case RDTrackerWidget::DeckTrack3:
|
||||||
p=new QPainter(d_wave_map[1]);
|
if(!d_wave_map[1]->isNull()) {
|
||||||
p->setPen(TRACKER_RECORD_COLOR);
|
p=new QPainter(d_wave_map[1]);
|
||||||
p->setBrush(TRACKER_RECORD_COLOR);
|
p->setPen(TRACKER_RECORD_COLOR);
|
||||||
p->setBackground(back_color);
|
p->setBrush(TRACKER_RECORD_COLOR);
|
||||||
p->eraseRect(0,0,d_wave_map[1]->size().width(),
|
p->setBackground(back_color);
|
||||||
d_wave_map[1]->size().height());
|
p->eraseRect(0,0,d_wave_map[1]->size().width(),
|
||||||
p->fillRect(-d_wave_origin[1]/
|
d_wave_map[1]->size().height());
|
||||||
TRACKER_MSECS_PER_PIXEL,
|
p->fillRect(-d_wave_origin[1]/
|
||||||
TRACKER_Y_HEIGHT/4,
|
TRACKER_MSECS_PER_PIXEL,
|
||||||
d_recording_pos/TRACKER_MSECS_PER_PIXEL,
|
TRACKER_Y_HEIGHT/4,
|
||||||
TRACKER_Y_HEIGHT/2,TRACKER_RECORD_COLOR);
|
d_recording_pos/TRACKER_MSECS_PER_PIXEL,
|
||||||
p->setFont(labelFont());
|
TRACKER_Y_HEIGHT/2,TRACKER_RECORD_COLOR);
|
||||||
if(d_start_time>QTime(0,0,0)) {
|
p->setFont(labelFont());
|
||||||
p->setPen(TRACKER_TEXT_COLOR);
|
if(d_start_time>QTime(0,0,0)) {
|
||||||
track_time=d_start_time;
|
p->setPen(TRACKER_TEXT_COLOR);
|
||||||
track_time=track_time.
|
track_time=d_start_time;
|
||||||
addMSecs(d_time_remaining_start-d_time_counter);
|
track_time=track_time.
|
||||||
p->drawText(550,75,tr("Time")+" "+track_time.toString("h:mm:ss"));
|
addMSecs(d_time_remaining_start-d_time_counter);
|
||||||
}
|
p->drawText(550,75,tr("Time")+" "+track_time.toString("h:mm:ss"));
|
||||||
p->end();
|
}
|
||||||
delete p;
|
p->end();
|
||||||
|
delete p;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
d_wpg[1]->begin(d_wave_map[1]);
|
if(!d_wave_map[1]->isNull()) {
|
||||||
d_wpg[1]->setFont(labelFont());
|
d_wpg[1]->begin(d_wave_map[1]);
|
||||||
d_wpg[1]->setPen(TRACKER_TEXT_COLOR);
|
d_wpg[1]->setFont(labelFont());
|
||||||
d_wpg[1]->setBackground(back_color);
|
d_wpg[1]->setPen(TRACKER_TEXT_COLOR);
|
||||||
d_wpg[1]->eraseRect(0,0,d_wave_map[1]->size().width(),
|
d_wpg[1]->setBackground(back_color);
|
||||||
d_wave_map[1]->size().height());
|
d_wpg[1]->eraseRect(0,0,d_wave_map[1]->size().width(),
|
||||||
if(!d_wave_name[1].isEmpty()) {
|
d_wave_map[1]->size().height());
|
||||||
d_wpg[1]->drawWaveByMsecs(0,d_wave_map[1]->width(),
|
if(!d_wave_name[1].isEmpty()) {
|
||||||
d_wave_origin[1],
|
d_wpg[1]->drawWaveByMsecs(0,d_wave_map[1]->width(),
|
||||||
d_wave_origin[1]+d_wave_width,800,
|
d_wave_origin[1],
|
||||||
RDWavePainter::Mono,Qt::black,
|
d_wave_origin[1]+d_wave_width,800,
|
||||||
d_loglines[1]->
|
RDWavePainter::Mono,Qt::black,
|
||||||
startPoint(RDLogLine::CartPointer),
|
d_loglines[1]->
|
||||||
d_loglines[1]->
|
startPoint(RDLogLine::CartPointer),
|
||||||
endPoint(RDLogLine::CartPointer));
|
d_loglines[1]->
|
||||||
}
|
endPoint(RDLogLine::CartPointer));
|
||||||
if(d_track_line>=0) {
|
}
|
||||||
|
if(d_track_line>=0) {
|
||||||
|
|
||||||
//
|
//
|
||||||
// Draw Segue Markers
|
// Draw Segue Markers
|
||||||
//
|
//
|
||||||
if(d_loglines[1]->segueStartPoint(RDLogLine::CartPointer)>=0) {
|
if(d_loglines[1]->segueStartPoint(RDLogLine::CartPointer)>=0) {
|
||||||
xpos=(d_loglines[1]->segueStartPoint(RDLogLine::CartPointer)-
|
xpos=(d_loglines[1]->segueStartPoint(RDLogLine::CartPointer)-
|
||||||
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
||||||
RD_SEGUE_MARKER_COLOR,20,true);
|
RD_SEGUE_MARKER_COLOR,20,true);
|
||||||
xpos=(d_loglines[1]->segueEndPoint(RDLogLine::CartPointer)-
|
xpos=(d_loglines[1]->segueEndPoint(RDLogLine::CartPointer)-
|
||||||
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
||||||
RD_SEGUE_MARKER_COLOR,20,false);
|
RD_SEGUE_MARKER_COLOR,20,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Draw Fadeup Marker
|
// Draw Fadeup Marker
|
||||||
//
|
//
|
||||||
if(d_loglines[1]->fadeupPoint(RDLogLine::CartPointer)>=0) {
|
if(d_loglines[1]->fadeupPoint(RDLogLine::CartPointer)>=0) {
|
||||||
xpos=(d_loglines[1]->fadeupPoint(RDLogLine::CartPointer)-
|
xpos=(d_loglines[1]->fadeupPoint(RDLogLine::CartPointer)-
|
||||||
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
||||||
RD_FADE_MARKER_COLOR,30,false);
|
RD_FADE_MARKER_COLOR,30,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Draw Start Marker
|
// Draw Start Marker
|
||||||
//
|
//
|
||||||
xpos=(d_loglines[1]->startPoint(RDLogLine::CartPointer)-
|
xpos=(d_loglines[1]->startPoint(RDLogLine::CartPointer)-
|
||||||
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
|
||||||
RD_START_END_MARKER_COLOR,10,true);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Fadedown Marker
|
|
||||||
//
|
|
||||||
if(d_loglines[1]->fadedownPoint(RDLogLine::CartPointer)>=0) {
|
|
||||||
xpos=(d_loglines[1]->fadedownPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
||||||
RD_FADE_MARKER_COLOR,30,true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw End Marker
|
|
||||||
//
|
|
||||||
xpos=(d_loglines[1]->endPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
|
||||||
RD_START_END_MARKER_COLOR,10,false);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Rubber Bands
|
|
||||||
//
|
|
||||||
DrawRubberBand(d_wpg[1],1);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Menu Marker
|
|
||||||
//
|
|
||||||
if(d_menu_clicked_point>=0 && d_rightclick_track==1) {
|
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),d_menu_clicked_point,
|
|
||||||
RD_START_END_MARKER_COLOR,10,true);
|
RD_START_END_MARKER_COLOR,10,true);
|
||||||
DrawCursor(d_wpg[1],d_wave_map[1]->height(),d_menu_clicked_point,
|
|
||||||
|
//
|
||||||
|
// Draw Fadedown Marker
|
||||||
|
//
|
||||||
|
if(d_loglines[1]->fadedownPoint(RDLogLine::CartPointer)>=0) {
|
||||||
|
xpos=(d_loglines[1]->fadedownPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
||||||
|
RD_FADE_MARKER_COLOR,30,true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw End Marker
|
||||||
|
//
|
||||||
|
xpos=(d_loglines[1]->endPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[1])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),xpos,
|
||||||
RD_START_END_MARKER_COLOR,10,false);
|
RD_START_END_MARKER_COLOR,10,false);
|
||||||
}
|
|
||||||
d_wpg[1]->setPen(TRACKER_TEXT_COLOR);
|
//
|
||||||
d_wpg[1]->drawText(5,14,d_loglines[1]->title());
|
// Draw Rubber Bands
|
||||||
|
//
|
||||||
|
DrawRubberBand(d_wpg[1],1);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Menu Marker
|
||||||
|
//
|
||||||
|
if(d_menu_clicked_point>=0 && d_rightclick_track==1) {
|
||||||
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),d_menu_clicked_point,
|
||||||
|
RD_START_END_MARKER_COLOR,10,true);
|
||||||
|
DrawCursor(d_wpg[1],d_wave_map[1]->height(),d_menu_clicked_point,
|
||||||
|
RD_START_END_MARKER_COLOR,10,false);
|
||||||
|
}
|
||||||
|
d_wpg[1]->setPen(TRACKER_TEXT_COLOR);
|
||||||
|
d_wpg[1]->drawText(5,14,d_loglines[1]->title());
|
||||||
|
}
|
||||||
|
if(d_start_time>QTime(0,0,0)) {
|
||||||
|
d_wpg[1]->drawText(550,75,tr("Start")+" "+
|
||||||
|
d_start_time.toString("h:mm:ss"));
|
||||||
|
}
|
||||||
|
d_wpg[1]->end();
|
||||||
}
|
}
|
||||||
if(d_start_time>QTime(0,0,0)) {
|
|
||||||
d_wpg[1]->drawText(550,75,tr("Start")+" "+
|
|
||||||
d_start_time.toString("h:mm:ss"));
|
|
||||||
}
|
|
||||||
d_wpg[1]->end();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if(d_wave_name[2].isEmpty()) {
|
if(d_wave_name[2].isEmpty()&&(!d_wave_map[2]->isNull())) {
|
||||||
p=new QPainter(d_wave_map[2]);
|
p=new QPainter(d_wave_map[2]);
|
||||||
p->setBackground(Qt::gray);
|
p->setBackground(Qt::gray);
|
||||||
p->eraseRect(0,0,d_wave_map[2]->size().width(),
|
p->eraseRect(0,0,d_wave_map[2]->size().width(),
|
||||||
@ -3077,117 +3096,117 @@ void RDTrackerWidget::DrawTrackMap(int trackno)
|
|||||||
else {
|
else {
|
||||||
back_color=Qt::lightGray;
|
back_color=Qt::lightGray;
|
||||||
}
|
}
|
||||||
d_wpg[2]->begin(d_wave_map[2]);
|
if(!d_wave_map[2]->isNull()) {
|
||||||
d_wpg[2]->setFont(labelFont());
|
d_wpg[2]->begin(d_wave_map[2]);
|
||||||
d_wpg[2]->setBackground(back_color);
|
d_wpg[2]->setFont(labelFont());
|
||||||
d_wpg[2]->eraseRect(0,0,d_wave_map[2]->size().width(),
|
d_wpg[2]->setBackground(back_color);
|
||||||
d_wave_map[2]->size().height());
|
d_wpg[2]->eraseRect(0,0,d_wave_map[2]->size().width(),
|
||||||
if(!d_wave_name[2].isEmpty()) {
|
d_wave_map[2]->size().height());
|
||||||
d_wpg[2]->
|
if(!d_wave_name[2].isEmpty()) {
|
||||||
drawWaveByMsecs(0,d_wave_map[2]->width(),d_wave_origin[2],
|
d_wpg[2]->
|
||||||
d_wave_origin[2]+d_wave_width,800,
|
drawWaveByMsecs(0,d_wave_map[2]->width(),d_wave_origin[2],
|
||||||
RDWavePainter::Mono,Qt::black,
|
d_wave_origin[2]+d_wave_width,800,
|
||||||
d_loglines[2]->startPoint(RDLogLine::CartPointer),
|
RDWavePainter::Mono,Qt::black,
|
||||||
d_loglines[2]->endPoint(RDLogLine::CartPointer));
|
d_loglines[2]->startPoint(RDLogLine::CartPointer),
|
||||||
|
d_loglines[2]->endPoint(RDLogLine::CartPointer));
|
||||||
//
|
//
|
||||||
// Draw Talk Markers
|
// Draw Talk Markers
|
||||||
//
|
//
|
||||||
if(d_loglines[2]->talkEndPoint()>0) {
|
if(d_loglines[2]->talkEndPoint()>0) {
|
||||||
int tsxpos;
|
int tsxpos;
|
||||||
int texpos;
|
int texpos;
|
||||||
if(d_loglines[2]->talkStartPoint()==0){
|
if(d_loglines[2]->talkStartPoint()==0){
|
||||||
tsxpos=(d_loglines[2]->startPoint()-
|
tsxpos=(d_loglines[2]->startPoint()-
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tsxpos=(d_loglines[2]->talkStartPoint()-
|
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
}
|
|
||||||
if(d_loglines[2]->talkEndPoint()==0) {
|
|
||||||
texpos=(d_loglines[2]->startPoint()-
|
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(d_loglines[2]->talkStartPoint()==0) {
|
|
||||||
texpos=(d_loglines[2]->startPoint()+
|
|
||||||
d_loglines[2]->talkEndPoint()-
|
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
texpos=(d_loglines[2]->talkEndPoint()-
|
tsxpos=(d_loglines[2]->talkStartPoint()-
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
}
|
}
|
||||||
|
if(d_loglines[2]->talkEndPoint()==0) {
|
||||||
|
texpos=(d_loglines[2]->startPoint()-
|
||||||
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(d_loglines[2]->talkStartPoint()==0) {
|
||||||
|
texpos=(d_loglines[2]->startPoint()+
|
||||||
|
d_loglines[2]->talkEndPoint()-
|
||||||
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
texpos=(d_loglines[2]->talkEndPoint()-
|
||||||
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(tsxpos!=texpos){
|
||||||
|
DrawCursor(d_wpg[2],d_wave_map[2]->height(),tsxpos,
|
||||||
|
RD_TALK_MARKER_COLOR,20,true);
|
||||||
|
DrawCursor(d_wpg[2],d_wave_map[2]->height(),texpos,
|
||||||
|
RD_TALK_MARKER_COLOR,20,false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(tsxpos!=texpos){
|
|
||||||
DrawCursor(d_wpg[2],d_wave_map[2]->height(),tsxpos,
|
|
||||||
RD_TALK_MARKER_COLOR,20,true);
|
|
||||||
DrawCursor(d_wpg[2],d_wave_map[2]->height(),texpos,
|
|
||||||
RD_TALK_MARKER_COLOR,20,false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Draw Fadeup Marker
|
// Draw Fadeup Marker
|
||||||
//
|
//
|
||||||
if(d_loglines[2]->fadeupPoint(RDLogLine::CartPointer)>=0) {
|
if(d_loglines[2]->fadeupPoint(RDLogLine::CartPointer)>=0) {
|
||||||
xpos=(d_loglines[2]->fadeupPoint(RDLogLine::CartPointer)-
|
xpos=(d_loglines[2]->fadeupPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[2],d_wave_map[2]->height(),xpos,
|
||||||
|
RD_FADE_MARKER_COLOR,30,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Start Marker
|
||||||
|
//
|
||||||
|
xpos=(d_loglines[2]->startPoint(RDLogLine::CartPointer)-
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
DrawCursor(d_wpg[2],d_wave_map[2]->height(),xpos,
|
DrawCursor(d_wpg[2],d_wave_map[2]->height(),xpos,
|
||||||
RD_FADE_MARKER_COLOR,30,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Start Marker
|
|
||||||
//
|
|
||||||
xpos=(d_loglines[2]->startPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[2],d_wave_map[2]->height(),xpos,
|
|
||||||
RD_START_END_MARKER_COLOR,10,true);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw End Marker
|
|
||||||
//
|
|
||||||
xpos=(d_loglines[2]->endPoint(RDLogLine::CartPointer)-
|
|
||||||
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
|
||||||
DrawCursor(d_wpg[2],d_wave_map[2]->height(),xpos,
|
|
||||||
RD_START_END_MARKER_COLOR,10,false);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Menu Marker
|
|
||||||
//
|
|
||||||
if(d_menu_clicked_point>=0 && d_rightclick_track==2) {
|
|
||||||
DrawCursor(d_wpg[2],d_wave_map[2]->height(),d_menu_clicked_point,
|
|
||||||
RD_START_END_MARKER_COLOR,10,true);
|
RD_START_END_MARKER_COLOR,10,true);
|
||||||
DrawCursor(d_wpg[2],d_wave_map[2]->height(),d_menu_clicked_point,
|
|
||||||
RD_START_END_MARKER_COLOR,10,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Rubber Bands
|
|
||||||
//
|
|
||||||
DrawRubberBand(d_wpg[2],2);
|
|
||||||
}
|
|
||||||
d_wpg[2]->setPen(TRACKER_TEXT_COLOR);
|
|
||||||
d_wpg[2]->drawText(5,14,d_loglines[2]->
|
|
||||||
resolveWildcards(rda->logeditConf()->waveformCaption()));
|
|
||||||
if(d_recording && (d_deck[2]->state()==RDPlayDeck::Playing ||
|
|
||||||
d_deck[2]->state()==RDPlayDeck::Stopping)) {
|
|
||||||
int talk_len=d_loglines[2]->talkLength();
|
|
||||||
if(talk_len>0 && d_deck[2]->currentPosition()>
|
|
||||||
d_loglines[2]->talkStartPoint()){
|
|
||||||
talk_len-=d_deck[2]->currentPosition()-
|
|
||||||
d_loglines[2]->talkStartPoint();
|
|
||||||
}
|
|
||||||
d_wpg[2]->drawText(550,75,tr("Talk")+
|
|
||||||
QString().sprintf(" :%d",(talk_len+500)/1000));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
d_wpg[2]->drawText(550,75,tr("Talk")+QString().
|
|
||||||
sprintf(" :%d",(d_loglines[2]->talkLength()+500)/1000));
|
|
||||||
}
|
|
||||||
|
|
||||||
d_wpg[2]->end();
|
//
|
||||||
|
// Draw End Marker
|
||||||
|
//
|
||||||
|
xpos=(d_loglines[2]->endPoint(RDLogLine::CartPointer)-
|
||||||
|
d_wave_origin[2])/TRACKER_MSECS_PER_PIXEL;
|
||||||
|
DrawCursor(d_wpg[2],d_wave_map[2]->height(),xpos,
|
||||||
|
RD_START_END_MARKER_COLOR,10,false);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Menu Marker
|
||||||
|
//
|
||||||
|
if(d_menu_clicked_point>=0 && d_rightclick_track==2) {
|
||||||
|
DrawCursor(d_wpg[2],d_wave_map[2]->height(),d_menu_clicked_point,
|
||||||
|
RD_START_END_MARKER_COLOR,10,true);
|
||||||
|
DrawCursor(d_wpg[2],d_wave_map[2]->height(),d_menu_clicked_point,
|
||||||
|
RD_START_END_MARKER_COLOR,10,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Rubber Bands
|
||||||
|
//
|
||||||
|
DrawRubberBand(d_wpg[2],2);
|
||||||
|
}
|
||||||
|
d_wpg[2]->setPen(TRACKER_TEXT_COLOR);
|
||||||
|
d_wpg[2]->drawText(5,14,d_loglines[2]->
|
||||||
|
resolveWildcards(rda->logeditConf()->waveformCaption()));
|
||||||
|
if(d_recording && (d_deck[2]->state()==RDPlayDeck::Playing ||
|
||||||
|
d_deck[2]->state()==RDPlayDeck::Stopping)) {
|
||||||
|
int talk_len=d_loglines[2]->talkLength();
|
||||||
|
if(talk_len>0 && d_deck[2]->currentPosition()>
|
||||||
|
d_loglines[2]->talkStartPoint()){
|
||||||
|
talk_len-=d_deck[2]->currentPosition()-
|
||||||
|
d_loglines[2]->talkStartPoint();
|
||||||
|
}
|
||||||
|
d_wpg[2]->drawText(550,75,tr("Talk")+
|
||||||
|
QString().sprintf(" :%d",(talk_len+500)/1000));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
d_wpg[2]->drawText(550,75,tr("Talk")+QString().
|
||||||
|
sprintf(" :%d",(d_loglines[2]->talkLength()+500)/1000));
|
||||||
|
}
|
||||||
|
d_wpg[2]->end();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -30,11 +30,10 @@
|
|||||||
#include <rdsvc.h>
|
#include <rdsvc.h>
|
||||||
#include <rdstereometer.h>
|
#include <rdstereometer.h>
|
||||||
#include <rdtransportbutton.h>
|
#include <rdtransportbutton.h>
|
||||||
#include <rdwavepainter.h>
|
|
||||||
#include <rdwidget.h>
|
|
||||||
|
|
||||||
#include <rdtrackermodel.h>
|
#include <rdtrackermodel.h>
|
||||||
#include <rdtrackertableview.h>
|
#include <rdtrackertableview.h>
|
||||||
|
#include <rdwavepainter.h>
|
||||||
|
#include <rdwidget.h>
|
||||||
|
|
||||||
//
|
//
|
||||||
// Widget Settings
|
// Widget Settings
|
||||||
@ -158,7 +157,6 @@ class RDTrackerWidget : public RDWidget
|
|||||||
int SingleSelectionLine(bool incl_end_handle=false);
|
int SingleSelectionLine(bool incl_end_handle=false);
|
||||||
void SendNotification(RDNotification::Action action,const QString &log_name);
|
void SendNotification(RDNotification::Action action,const QString &log_name);
|
||||||
void SendNotification(RDNotification::Action action,unsigned cartnum);
|
void SendNotification(RDNotification::Action action,unsigned cartnum);
|
||||||
|
|
||||||
bool d_segue_loaded;
|
bool d_segue_loaded;
|
||||||
unsigned d_play_start_macro;
|
unsigned d_play_start_macro;
|
||||||
unsigned d_play_end_macro;
|
unsigned d_play_end_macro;
|
||||||
|
@ -58,6 +58,7 @@ dist_rdairplay_SOURCES = button_log.cpp button_log.h\
|
|||||||
rdairplay.cpp rdairplay.h\
|
rdairplay.cpp rdairplay.h\
|
||||||
start_button.cpp start_button.h\
|
start_button.cpp start_button.h\
|
||||||
stop_counter.cpp stop_counter.h\
|
stop_counter.cpp stop_counter.h\
|
||||||
|
voicetracker.cpp voicetracker.h\
|
||||||
wall_clock.cpp wall_clock.h
|
wall_clock.cpp wall_clock.h
|
||||||
|
|
||||||
|
|
||||||
@ -74,6 +75,7 @@ nodist_rdairplay_SOURCES = moc_button_log.cpp\
|
|||||||
moc_rdairplay.cpp\
|
moc_rdairplay.cpp\
|
||||||
moc_start_button.cpp\
|
moc_start_button.cpp\
|
||||||
moc_stop_counter.cpp\
|
moc_stop_counter.cpp\
|
||||||
|
moc_voicetracker.cpp\
|
||||||
moc_wall_clock.cpp
|
moc_wall_clock.cpp
|
||||||
|
|
||||||
rdairplay_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT5_LIBS@ @MUSICBRAINZ_LIBS@
|
rdairplay_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT5_LIBS@ @MUSICBRAINZ_LIBS@
|
||||||
|
@ -51,7 +51,8 @@ MainWidget::MainWidget(RDConfig *config,QWidget *parent)
|
|||||||
QString err_msg;
|
QString err_msg;
|
||||||
|
|
||||||
air_panel=NULL;
|
air_panel=NULL;
|
||||||
|
air_tracker=NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get the Startup Date/Time
|
// Get the Startup Date/Time
|
||||||
//
|
//
|
||||||
@ -579,6 +580,12 @@ MainWidget::MainWidget(RDConfig *config,QWidget *parent)
|
|||||||
this,SLOT(panelChannelStoppedData(int,int,int)));
|
this,SLOT(panelChannelStoppedData(int,int,int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Voice Tracker
|
||||||
|
//
|
||||||
|
air_tracker=new VoiceTracker(this);
|
||||||
|
air_tracker->hide();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Full Log List
|
// Full Log List
|
||||||
//
|
//
|
||||||
@ -642,6 +649,14 @@ MainWidget::MainWidget(RDConfig *config,QWidget *parent)
|
|||||||
air_log_list[0]->show();
|
air_log_list[0]->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Voice Tracker Button
|
||||||
|
//
|
||||||
|
air_tracker_button=new QPushButton(this);
|
||||||
|
air_tracker_button->setFont(bigButtonFont());
|
||||||
|
air_tracker_button->setText(tr("Voice\nTracker"));
|
||||||
|
air_tracker_button->setFocusPolicy(Qt::NoFocus);
|
||||||
|
connect(air_tracker_button,SIGNAL(clicked()),this,SLOT(trackerButtonData()));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Button Log
|
// Button Log
|
||||||
@ -1333,6 +1348,8 @@ void MainWidget::fullLogButtonData(int id)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
air_panel->hide();
|
air_panel->hide();
|
||||||
|
ShowTracker(false);
|
||||||
|
air_tracker_button->setPalette(palette());
|
||||||
for(int i=0;i<RDAIRPLAY_LOG_QUANTITY;i++) {
|
for(int i=0;i<RDAIRPLAY_LOG_QUANTITY;i++) {
|
||||||
if(air_log_list[i]->isVisible()) {
|
if(air_log_list[i]->isVisible()) {
|
||||||
air_log_list[i]->hide();
|
air_log_list[i]->hide();
|
||||||
@ -1356,11 +1373,28 @@ void MainWidget::panelButtonData()
|
|||||||
air_log_button[i]->setPalette(palette());
|
air_log_button[i]->setPalette(palette());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ShowTracker(false);
|
||||||
|
air_tracker_button->setPalette(palette());
|
||||||
air_panel->show();
|
air_panel->show();
|
||||||
air_panel_button->setPalette(active_color);
|
air_panel_button->setPalette(active_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWidget::trackerButtonData()
|
||||||
|
{
|
||||||
|
for(int i=0;i<RDAIRPLAY_LOG_QUANTITY;i++) {
|
||||||
|
if(air_log_list[i]->isVisible()) {
|
||||||
|
air_log_list[i]->hide();
|
||||||
|
air_log_button[i]->setPalette(palette());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
air_panel->hide();
|
||||||
|
air_panel_button->setPalette(palette());
|
||||||
|
ShowTracker(true);
|
||||||
|
air_tracker_button->setPalette(active_color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWidget::modeButtonData()
|
void MainWidget::modeButtonData()
|
||||||
{
|
{
|
||||||
int mach=-1;
|
int mach=-1;
|
||||||
@ -2011,8 +2045,14 @@ void MainWidget::resizeEvent(QResizeEvent *e)
|
|||||||
//
|
//
|
||||||
// Sound Panel
|
// Sound Panel
|
||||||
//
|
//
|
||||||
// air_panel->setGeometry(w/2,140,(w/2)-20,h-210);
|
if(air_panel!=NULL) {
|
||||||
air_panel->setGeometry(510,140,w-510,h-215);
|
air_panel->setGeometry(510,140,w-510,h-215);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Voice Tracker
|
||||||
|
//
|
||||||
|
air_tracker->setGeometry(510,140,w-510,h-215);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Full Log Widgets
|
// Full Log Widgets
|
||||||
@ -2033,9 +2073,20 @@ void MainWidget::resizeEvent(QResizeEvent *e)
|
|||||||
|
|
||||||
air_empty_cart->setGeometry(520,size().height()-51,32,32);
|
air_empty_cart->setGeometry(520,size().height()-51,32,32);
|
||||||
|
|
||||||
air_panel_button->setGeometry(562,size().height()-65,80,60);
|
int xpos=562;
|
||||||
|
air_panel_button->setGeometry(xpos,size().height()-65,80,60);
|
||||||
|
xpos+=85;
|
||||||
|
if((size().width()>=(510+air_tracker->sizeHint().width()))&&
|
||||||
|
(size().height()>=(140+air_tracker->sizeHint().height()))) {
|
||||||
|
air_tracker_button->setGeometry(xpos,size().height()-65,80,60);
|
||||||
|
xpos+=85;
|
||||||
|
air_tracker_button->show();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
air_tracker_button->hide();
|
||||||
|
}
|
||||||
for(int i=0;i<RDAIRPLAY_LOG_QUANTITY;i++) {
|
for(int i=0;i<RDAIRPLAY_LOG_QUANTITY;i++) {
|
||||||
air_log_button[i]->setGeometry(647+i*123,size().height()-65,118,60);
|
air_log_button[i]->setGeometry(xpos+i*123,size().height()-65,118,60);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2472,3 +2523,17 @@ RDAirPlayConf::Channel MainWidget::PanelChannel(int mport) const
|
|||||||
}
|
}
|
||||||
return chan;
|
return chan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWidget::ShowTracker(bool state)
|
||||||
|
{
|
||||||
|
if(state) {
|
||||||
|
setMinimumWidth(510+air_tracker->sizeHint().width());
|
||||||
|
setMinimumHeight(140+air_tracker->sizeHint().height());
|
||||||
|
air_tracker->show();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setMinimumSize(sizeHint());
|
||||||
|
air_tracker->hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "post_counter.h"
|
#include "post_counter.h"
|
||||||
#include "pie_counter.h"
|
#include "pie_counter.h"
|
||||||
#include "stop_counter.h"
|
#include "stop_counter.h"
|
||||||
|
#include "voicetracker.h"
|
||||||
#include "wall_clock.h"
|
#include "wall_clock.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -80,6 +81,7 @@ class MainWidget : public RDMainWindow
|
|||||||
void copyButtonData();
|
void copyButtonData();
|
||||||
void fullLogButtonData(int);
|
void fullLogButtonData(int);
|
||||||
void panelButtonData();
|
void panelButtonData();
|
||||||
|
void trackerButtonData();
|
||||||
void modeButtonData();
|
void modeButtonData();
|
||||||
void selectClickedData(int id,int line,RDLogLine::Status status);
|
void selectClickedData(int id,int line,RDLogLine::Status status);
|
||||||
void selectClickedData(unsigned cartnum,int row,int col);
|
void selectClickedData(unsigned cartnum,int row,int col);
|
||||||
@ -112,9 +114,12 @@ class MainWidget : public RDMainWindow
|
|||||||
bool AssertChannelLock(int dir,int card,int port);
|
bool AssertChannelLock(int dir,int card,int port);
|
||||||
bool AssertChannelLock(int dir,int achan);
|
bool AssertChannelLock(int dir,int achan);
|
||||||
int AudioChannel(int card,int port) const;
|
int AudioChannel(int card,int port) const;
|
||||||
|
void ShowTracker(bool state);
|
||||||
RDAirPlayConf::Channel PanelChannel(int mport) const;
|
RDAirPlayConf::Channel PanelChannel(int mport) const;
|
||||||
RDLogPlay *air_log[RDAIRPLAY_LOG_QUANTITY];
|
RDLogPlay *air_log[RDAIRPLAY_LOG_QUANTITY];
|
||||||
RDSoundPanel *air_panel;
|
RDSoundPanel *air_panel;
|
||||||
|
VoiceTracker *air_tracker;
|
||||||
|
QPushButton *air_tracker_button;
|
||||||
PostCounter *air_post_counter;
|
PostCounter *air_post_counter;
|
||||||
PieCounter *air_pie_counter;
|
PieCounter *air_pie_counter;
|
||||||
RDStereoMeter *air_stereo_meter;
|
RDStereoMeter *air_stereo_meter;
|
||||||
|
72
rdairplay/voicetracker.cpp
Normal file
72
rdairplay/voicetracker.cpp
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
// voicetracker.cpp
|
||||||
|
//
|
||||||
|
// Voice tracker panel for RDAirPlay
|
||||||
|
//
|
||||||
|
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <rdlist_logs.h>
|
||||||
|
|
||||||
|
#include "voicetracker.h"
|
||||||
|
|
||||||
|
VoiceTracker::VoiceTracker(QWidget *parent)
|
||||||
|
: RDWidget(parent)
|
||||||
|
{
|
||||||
|
d_tracker_widget=new RDTrackerWidget(&d_import_path,this);
|
||||||
|
|
||||||
|
d_load_button=new QPushButton(tr("Load\nLog"),this);
|
||||||
|
d_load_button->setFont(bigButtonFont());
|
||||||
|
connect(d_load_button,SIGNAL(clicked()),this,SLOT(loadData()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QSize VoiceTracker::sizeHint() const
|
||||||
|
{
|
||||||
|
return d_tracker_widget->sizeHint();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void VoiceTracker::loadData()
|
||||||
|
{
|
||||||
|
QString logname;
|
||||||
|
|
||||||
|
RDListLogs *d=new RDListLogs(&logname,RDLogFilter::StationFilter,"RDAirPlay",
|
||||||
|
this);
|
||||||
|
if(d->exec()) {
|
||||||
|
if(d_tracker_widget->load(logname)) {
|
||||||
|
d_load_button->disconnect();
|
||||||
|
connect(d_load_button,SIGNAL(clicked()),this,SLOT(unloadData()));
|
||||||
|
d_load_button->setText(tr("Unload\nLog"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void VoiceTracker::unloadData()
|
||||||
|
{
|
||||||
|
d_tracker_widget->unload();
|
||||||
|
d_load_button->disconnect();
|
||||||
|
connect(d_load_button,SIGNAL(clicked()),this,SLOT(loadData()));
|
||||||
|
d_load_button->setText(tr("Load\nLog"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void VoiceTracker::resizeEvent(QResizeEvent *e)
|
||||||
|
{
|
||||||
|
d_tracker_widget->setGeometry(0,0,size().width(),size().height());
|
||||||
|
d_load_button->setGeometry(size().width()-90,size().height()-50,80,50);
|
||||||
|
}
|
50
rdairplay/voicetracker.h
Normal file
50
rdairplay/voicetracker.h
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
// voicetracker.h
|
||||||
|
//
|
||||||
|
// Voice tracker panel for RDAirPlay
|
||||||
|
//
|
||||||
|
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef VOICETRACKER_H
|
||||||
|
#define VOICETRACKER_H
|
||||||
|
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
|
#include <rdtrackerwidget.h>
|
||||||
|
#include <rdwidget.h>
|
||||||
|
|
||||||
|
class VoiceTracker : public RDWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
VoiceTracker(QWidget *parent=0);
|
||||||
|
QSize sizeHint() const;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void loadData();
|
||||||
|
void unloadData();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent *e);
|
||||||
|
|
||||||
|
private:
|
||||||
|
RDTrackerWidget *d_tracker_widget;
|
||||||
|
QPushButton *d_load_button;
|
||||||
|
QString d_import_path;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // VOICETRACKER_H
|
Loading…
x
Reference in New Issue
Block a user