From 71b8f28d08b0afa36f884afb3afb0c423e9db4dc Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Thu, 18 Jun 2020 11:42:21 -0400 Subject: [PATCH 1/9] 2020-06-18 Fred Gleason * Modified the 'Edit Event' dialog in rdlogmanager(1) to use symbolic menu item ids. Signed-off-by: Fred Gleason --- ChangeLog | 3 + rdlogmanager/import_listview.cpp | 114 +++++++++++++++++-------------- 2 files changed, 67 insertions(+), 50 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0e4e161e..6c95dfa5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19887,3 +19887,6 @@ 2020-06-10 Fred Gleason * Fixed a bug in ripcd(8) that caused connections to ModbusTCP devices to fail to be properly restored by the connection watchdog. +2020-06-18 Fred Gleason + * Modified the 'Edit Event' dialog in rdlogmanager(1) to use + symbolic menu item ids. diff --git a/rdlogmanager/import_listview.cpp b/rdlogmanager/import_listview.cpp index af9e2e9b..a06c68d4 100644 --- a/rdlogmanager/import_listview.cpp +++ b/rdlogmanager/import_listview.cpp @@ -39,6 +39,18 @@ #include "../icons/mic16.xpm" #include "../icons/notemarker.xpm" +// +// Menu Items +// +#define MENU_INSERT_NOTE 0 +#define MENU_EDIT_NOTE 1 +#define MENU_INSERT_TRACK 2 +#define MENU_EDIT_TRACK 3 +#define MENU_PLAY_TRANS 4 +#define MENU_SEGUE_TRANS 5 +#define MENU_STOP_TRANS 6 +#define MENU_DELETE 7 + ImportListView::ImportListView(QWidget *parent) : Q3ListView(parent) { @@ -62,23 +74,26 @@ ImportListView::ImportListView(QWidget *parent) // import_menu=new Q3PopupMenu(this); connect(import_menu,SIGNAL(aboutToShow()),this,SLOT(aboutToShowData())); - import_menu-> - insertItem(tr("Insert Log Note"),this,SLOT(insertNoteMenuData()),0,0); - import_menu-> - insertItem(tr("Edit Log Note"),this,SLOT(editNoteMenuData()),0,1); + import_menu->insertItem(tr("Insert Log Note"),this,SLOT(insertNoteMenuData()), + 0,MENU_INSERT_NOTE); + import_menu->insertItem(tr("Edit Log Note"),this,SLOT(editNoteMenuData()), + 0,MENU_EDIT_NOTE); import_menu->insertSeparator(); - import_menu-> - insertItem(tr("Insert Voice Track"),this,SLOT(insertTrackMenuData()),0,2); - import_menu-> - insertItem(tr("Edit Voice Track"),this,SLOT(editTrackMenuData()),0,3); + import_menu->insertItem(tr("Insert Voice Track"), + this,SLOT(insertTrackMenuData()), + 0,MENU_INSERT_TRACK); + import_menu->insertItem(tr("Edit Voice Track"),this,SLOT(editTrackMenuData()), + 0,MENU_EDIT_TRACK); import_menu->insertSeparator(); - import_menu->insertItem(tr("PLAY Transition"),this,SLOT(playMenuData()),0,4); - import_menu-> - insertItem(tr("SEGUE Transition"),this,SLOT(segueMenuData()),0,5); - import_menu->insertItem(tr("STOP Transition"),this,SLOT(stopMenuData()),0,6); + import_menu->insertItem(tr("PLAY Transition"),this,SLOT(playMenuData()), + 0,MENU_PLAY_TRANS); + import_menu->insertItem(tr("SEGUE Transition"),this,SLOT(segueMenuData()), + 0,MENU_SEGUE_TRANS); + import_menu->insertItem(tr("STOP Transition"),this,SLOT(stopMenuData()), + 0,MENU_STOP_TRANS); import_menu->insertSeparator(); - import_menu-> - insertItem(tr("Delete"),this,SLOT(deleteMenuData()),0,8); + import_menu->insertItem(tr("Delete"),this,SLOT(deleteMenuData()), + 0,MENU_DELETE); import_force_trans=RDLogLine::NoTrans; import_allow_stop=true; @@ -249,77 +264,76 @@ void ImportListView::validateTransitions() void ImportListView::aboutToShowData() { if((import_menu_item==NULL)||(import_menu_i_item->isEndMarker())) { - import_menu->setItemEnabled(0,true); - import_menu->setItemEnabled(1,false); - import_menu->setItemEnabled(2,true); - import_menu->setItemEnabled(3,false); - import_menu->setItemChecked(4,false); - import_menu->setItemEnabled(4,false); - import_menu->setItemChecked(5,false); - import_menu->setItemEnabled(5,false); - import_menu->setItemChecked(6,false); - import_menu->setItemEnabled(6,false); - import_menu->setItemChecked(7,false); - import_menu->setItemEnabled(7,false); - import_menu->setItemEnabled(8,false); + import_menu->setItemEnabled(MENU_INSERT_NOTE,true); + import_menu->setItemEnabled(MENU_EDIT_NOTE,false); + import_menu->setItemEnabled(MENU_INSERT_TRACK,true); + import_menu->setItemEnabled(MENU_EDIT_TRACK,false); + import_menu->setItemChecked(MENU_PLAY_TRANS,false); + import_menu->setItemEnabled(MENU_PLAY_TRANS,false); + import_menu->setItemChecked(MENU_SEGUE_TRANS,false); + import_menu->setItemEnabled(MENU_SEGUE_TRANS,false); + import_menu->setItemChecked(MENU_STOP_TRANS,false); + import_menu->setItemEnabled(MENU_STOP_TRANS,false); + import_menu->setItemChecked(MENU_DELETE,false); + import_menu->setItemEnabled(MENU_DELETE,false); return; } if(import_menu_i_item->eventType()==RDLogLine::Marker) { - import_menu->setItemEnabled(1,true); + import_menu->setItemEnabled(MENU_EDIT_NOTE,true); } else { - import_menu->setItemEnabled(1,false); + import_menu->setItemEnabled(MENU_EDIT_NOTE,false); } if(import_menu_i_item->eventType()==RDLogLine::Track) { - import_menu->setItemEnabled(3,true); + import_menu->setItemEnabled(MENU_EDIT_TRACK,true); } else { - import_menu->setItemEnabled(3,false); + import_menu->setItemEnabled(MENU_EDIT_TRACK,false); } - import_menu->setItemChecked(4,false); - import_menu->setItemChecked(5,false); - import_menu->setItemChecked(6,false); - import_menu->setItemChecked(7,false); + import_menu->setItemChecked(MENU_PLAY_TRANS,false); + import_menu->setItemChecked(MENU_SEGUE_TRANS,false); + import_menu->setItemChecked(MENU_STOP_TRANS,false); + import_menu->setItemChecked(MENU_DELETE,false); if(import_menu_line==0) { - import_menu->setItemEnabled(4,import_allow_first_trans); - import_menu->setItemEnabled(5,import_allow_first_trans); - import_menu->setItemEnabled(7,import_allow_first_trans); + import_menu->setItemEnabled(MENU_PLAY_TRANS,import_allow_first_trans); + import_menu->setItemEnabled(MENU_SEGUE_TRANS,import_allow_first_trans); + import_menu->setItemEnabled(MENU_DELETE,import_allow_first_trans); if((import_menu_line==0)&&import_allow_stop&&import_allow_first_trans) { - import_menu->setItemEnabled(6,true); + import_menu->setItemEnabled(MENU_STOP_TRANS,true); } else { - import_menu->setItemEnabled(6,false); + import_menu->setItemEnabled(MENU_STOP_TRANS,false); } } else { - import_menu->setItemEnabled(4,true); - import_menu->setItemEnabled(5,true); - import_menu->setItemEnabled(7,true); + import_menu->setItemEnabled(MENU_PLAY_TRANS,true); + import_menu->setItemEnabled(MENU_SEGUE_TRANS,true); + import_menu->setItemEnabled(MENU_DELETE,true); if((import_menu_line==0)&&import_allow_stop) { - import_menu->setItemEnabled(6,true); - import_menu->setItemEnabled(6,true); + import_menu->setItemEnabled(MENU_STOP_TRANS,true); + import_menu->setItemEnabled(MENU_STOP_TRANS,true); } else { - import_menu->setItemEnabled(6,false); + import_menu->setItemEnabled(MENU_STOP_TRANS,false); } } switch(import_menu_i_item->transType()) { case RDLogLine::Play: - import_menu->setItemChecked(4,true); + import_menu->setItemChecked(MENU_PLAY_TRANS,true); break; case RDLogLine::Segue: - import_menu->setItemChecked(5,true); + import_menu->setItemChecked(MENU_SEGUE_TRANS,true); break; case RDLogLine::Stop: - import_menu->setItemChecked(6,true); + import_menu->setItemChecked(MENU_STOP_TRANS,true); break; default: break; } - import_menu->setItemEnabled(8,true); + import_menu->setItemEnabled(MENU_DELETE,true); } From 70839e146647d870e2cf621b5e0739519efee5e6 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Thu, 18 Jun 2020 11:57:20 -0400 Subject: [PATCH 2/9] 2020-06-18 Fred Gleason * Removed the checkbox from the 'Delete' right-click menu item in the 'Edit Event' dialog in rdlogmanager(1). Signed-off-by: Fred Gleason --- ChangeLog | 3 +++ rdlogmanager/import_listview.cpp | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6c95dfa5..d0db6ee6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19890,3 +19890,6 @@ 2020-06-18 Fred Gleason * Modified the 'Edit Event' dialog in rdlogmanager(1) to use symbolic menu item ids. +2020-06-18 Fred Gleason + * Removed the checkbox from the 'Delete' right-click menu item + in the 'Edit Event' dialog in rdlogmanager(1). diff --git a/rdlogmanager/import_listview.cpp b/rdlogmanager/import_listview.cpp index a06c68d4..a7a345e3 100644 --- a/rdlogmanager/import_listview.cpp +++ b/rdlogmanager/import_listview.cpp @@ -274,7 +274,6 @@ void ImportListView::aboutToShowData() import_menu->setItemEnabled(MENU_SEGUE_TRANS,false); import_menu->setItemChecked(MENU_STOP_TRANS,false); import_menu->setItemEnabled(MENU_STOP_TRANS,false); - import_menu->setItemChecked(MENU_DELETE,false); import_menu->setItemEnabled(MENU_DELETE,false); return; } @@ -293,7 +292,6 @@ void ImportListView::aboutToShowData() import_menu->setItemChecked(MENU_PLAY_TRANS,false); import_menu->setItemChecked(MENU_SEGUE_TRANS,false); import_menu->setItemChecked(MENU_STOP_TRANS,false); - import_menu->setItemChecked(MENU_DELETE,false); if(import_menu_line==0) { import_menu->setItemEnabled(MENU_PLAY_TRANS,import_allow_first_trans); import_menu->setItemEnabled(MENU_SEGUE_TRANS,import_allow_first_trans); From dcf2076087b7cc826e03674c1210006ba0d16a09 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Thu, 18 Jun 2020 16:40:43 -0400 Subject: [PATCH 3/9] 2020-06-18 Fred Gleason * Fixed a regression in the 'Edit Event' dialog in rdlogmanager(1) that caused the first cart transition type to be incorrect when the 'Pre-Import Carts' list was populated. --- ChangeLog | 4 ++++ rdlogmanager/edit_event.cpp | 32 +++++++++++++++++++++++++++----- rdlogmanager/import_listview.cpp | 6 ++++++ rdlogmanager/import_listview.h | 1 + 4 files changed, 38 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0db6ee6..01662b64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19893,3 +19893,7 @@ 2020-06-18 Fred Gleason * Removed the checkbox from the 'Delete' right-click menu item in the 'Edit Event' dialog in rdlogmanager(1). +2020-06-18 Fred Gleason + * Fixed a regression in the 'Edit Event' dialog in rdlogmanager(1) + that caused the first cart transition type to be incorrect when + the 'Pre-Import Carts' list was populated. diff --git a/rdlogmanager/edit_event.cpp b/rdlogmanager/edit_event.cpp index fa5b86d1..f231620f 100644 --- a/rdlogmanager/edit_event.cpp +++ b/rdlogmanager/edit_event.cpp @@ -460,9 +460,9 @@ EditEvent::EditEvent(QString eventname,bool new_event, connect(event_preimport_down_button,SIGNAL(clicked()), this,SLOT(preimportDownData())); - // + // ************************* // Import Section - // + // ************************* label=new QLabel(tr("IMPORT"),this); label->setFont(labelFont()); label->setGeometry(CENTER_LINE+15,387,200,16); @@ -767,8 +767,6 @@ EditEvent::EditEvent(QString eventname,bool new_event, case RDLogLine::Hard: event_timetype_check->setChecked(true); - // event_post_box->setChecked(event_event->postPoint()); - event_firsttrans_box->setCurrentItem(event_event->firstTransType()); switch((grace=event_event->graceTime())) { case 0: event_grace_group->button(0)->setChecked(true); @@ -801,7 +799,31 @@ EditEvent::EditEvent(QString eventname,bool new_event, event_source_group->button(event_event->importSource())->setChecked(true); event_startslop_edit->setTime(QTime().addMSecs(event_event->startSlop())); event_endslop_edit->setTime(QTime().addMSecs(event_event->endSlop())); - event_firsttrans_box->setCurrentItem(event_event->firstTransType()); + if(event_position_box->isChecked()||event_timetype_check->isChecked()) { + event_firsttrans_box->setCurrentItem(event_event->firstTransType()); + } + else { + if(event_preimport_list->eventImportList()->size()>=1) { + event_firsttrans_box-> + setCurrentItem(event_preimport_list->eventImportList()-> + item(0)->transType()); + } + else { + if(event_event->importSource()!=RDEventLine::None) { + event_firsttrans_box->setCurrentItem(event_event->firstTransType()); + } + else { + if(event_postimport_list->eventImportList()->size()>=1) { + event_firsttrans_box-> + setCurrentItem(event_postimport_list->eventImportList()-> + item(0)->transType()); + } + else { + event_firsttrans_box->setCurrentItem(event_event->firstTransType()); + } + } + } + } event_defaulttrans_box->setCurrentItem(event_event->defaultTransType()); if(!event_event->schedGroup().isEmpty()) { event_sched_group_box->setCurrentText(event_event->schedGroup()); diff --git a/rdlogmanager/import_listview.cpp b/rdlogmanager/import_listview.cpp index a7a345e3..fa567485 100644 --- a/rdlogmanager/import_listview.cpp +++ b/rdlogmanager/import_listview.cpp @@ -103,6 +103,12 @@ ImportListView::ImportListView(QWidget *parent) } +RDEventImportList *ImportListView::eventImportList() const +{ + return import_list; +} + + void ImportListView::setForceTrans(RDLogLine::TransType trans) { import_force_trans=trans; diff --git a/rdlogmanager/import_listview.h b/rdlogmanager/import_listview.h index 2083c461..7b01d323 100644 --- a/rdlogmanager/import_listview.h +++ b/rdlogmanager/import_listview.h @@ -33,6 +33,7 @@ class ImportListView : public Q3ListView public: ImportListView(QWidget *parent); + RDEventImportList *eventImportList() const; void setForceTrans(RDLogLine::TransType trans); void setAllowStop(bool state); void setAllowFirstTrans(bool state); From a994558a8982340d3f40c020eb3be9ba6e09b547 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Fri, 19 Jun 2020 17:38:09 -0400 Subject: [PATCH 4/9] 2020-06-19 Fred Gleason * Modified the 'Edit Event' dialog in rdlogmanager(1) to show '[auto]' as the transition type for the leading event in Pre-/Post-Import lists. Signed-off-by: Fred Gleason --- ChangeLog | 4 + lib/rdeventimportlist.cpp | 14 ++- lib/rdeventimportlist.h | 4 +- rdlogmanager/edit_event.cpp | 169 +++++++++++++---------------- rdlogmanager/edit_event.h | 3 +- rdlogmanager/import_listview.cpp | 130 +++++++++------------- rdlogmanager/import_listview.h | 11 +- rdlogmanager/rdlogmanager_cs.ts | 2 +- rdlogmanager/rdlogmanager_de.ts | 2 +- rdlogmanager/rdlogmanager_es.ts | 2 +- rdlogmanager/rdlogmanager_fr.ts | 2 +- rdlogmanager/rdlogmanager_nb.ts | 2 +- rdlogmanager/rdlogmanager_nn.ts | 2 +- rdlogmanager/rdlogmanager_pt_BR.ts | 2 +- 14 files changed, 155 insertions(+), 194 deletions(-) diff --git a/ChangeLog b/ChangeLog index 01662b64..c6461678 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19897,3 +19897,7 @@ * Fixed a regression in the 'Edit Event' dialog in rdlogmanager(1) that caused the first cart transition type to be incorrect when the 'Pre-Import Carts' list was populated. +2020-06-19 Fred Gleason + * Modified the 'Edit Event' dialog in rdlogmanager(1) to show '[auto]' + as the transition type for the leading event in Pre-/Post-Import + lists. diff --git a/lib/rdeventimportlist.cpp b/lib/rdeventimportlist.cpp index 2edbded7..efb5c461 100644 --- a/lib/rdeventimportlist.cpp +++ b/lib/rdeventimportlist.cpp @@ -2,7 +2,7 @@ // // Abstract an rdlogmanager(1) Import List // -// (C) Copyright 2018-2019 Fred Gleason +// (C) Copyright 2018-2020 Fred Gleason // // 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 @@ -191,7 +191,7 @@ void RDEventImportList::load() } -void RDEventImportList::save() const +void RDEventImportList::save(RDLogLine::TransType first_trans) const { QString sql=QString("delete from EVENT_LINES where ")+ "EVENT_NAME=\""+RDEscapeString(list_event_name)+"\" && "+ @@ -205,8 +205,14 @@ void RDEventImportList::save() const QString().sprintf("COUNT=%u,",i)+ QString().sprintf("EVENT_TYPE=%d,",item->eventType())+ QString().sprintf("CART_NUMBER=%u,",item->cartNumber())+ - QString().sprintf("TRANS_TYPE=%d,",item->transType())+ - "MARKER_COMMENT=\""+RDEscapeString(item->markerComment())+"\""; + "MARKER_COMMENT=\""+RDEscapeString(item->markerComment())+"\","; + if(first_trans==RDLogLine::NoTrans) { + sql+=QString().sprintf("TRANS_TYPE=%d",item->transType()); + } + else { + sql+=QString().sprintf("TRANS_TYPE=%d",first_trans); + first_trans=RDLogLine::NoTrans; + } RDSqlQuery::apply(sql); } } diff --git a/lib/rdeventimportlist.h b/lib/rdeventimportlist.h index 1b580ab4..8347c03b 100644 --- a/lib/rdeventimportlist.h +++ b/lib/rdeventimportlist.h @@ -2,7 +2,7 @@ // // Abstract an rdlogmanager(1) Import List // -// (C) Copyright 2018-2019 Fred Gleason +// (C) Copyright 2018-2020 Fred Gleason // // 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 @@ -64,7 +64,7 @@ class RDEventImportList void removeItem(int n); void moveItem(int from_line,int to_line); void load(); - void save() const; + void save(RDLogLine::TransType first_trans=RDLogLine::NoTrans) const; void clear(); private: diff --git a/rdlogmanager/edit_event.cpp b/rdlogmanager/edit_event.cpp index f231620f..9508e8c7 100644 --- a/rdlogmanager/edit_event.cpp +++ b/rdlogmanager/edit_event.cpp @@ -309,7 +309,9 @@ EditEvent::EditEvent(QString eventname,bool new_event, 20); event_firsttrans_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); event_firsttrans_box=new QComboBox(this); - event_firsttrans_box->setGeometry(event_firsttrans_label->geometry().x()+event_firsttrans_label->geometry().width(),134,90,20); + event_firsttrans_box->setGeometry(event_firsttrans_label->geometry().x()+ + event_firsttrans_label->geometry().width(), + 134,90,20); event_firsttrans_box->insertItem(tr("Play")); event_firsttrans_box->insertItem(tr("Segue")); event_firsttrans_box->insertItem(tr("Stop")); @@ -436,8 +438,8 @@ EditEvent::EditEvent(QString eventname,bool new_event, event_preimport_list->setItemMargin(5); event_preimport_list->load(event_name,RDEventImportList::PreImport); event_preimport_list->setSortColumn(-1); - connect(event_preimport_list,SIGNAL(sizeChanged(int)), - this,SLOT(preimportChangedData(int))); + connect(event_preimport_list,SIGNAL(validationNeeded()), + this,SLOT(validate())); event_preimport_list->addColumn(""); event_preimport_list->addColumn(tr("Cart")); event_preimport_list->addColumn(tr("Group")); @@ -460,9 +462,9 @@ EditEvent::EditEvent(QString eventname,bool new_event, connect(event_preimport_down_button,SIGNAL(clicked()), this,SLOT(preimportDownData())); - // ************************* - // Import Section - // ************************* + // + // Imports + // label=new QLabel(tr("IMPORT"),this); label->setFont(labelFont()); label->setGeometry(CENTER_LINE+15,387,200,16); @@ -657,7 +659,6 @@ EditEvent::EditEvent(QString eventname,bool new_event, event_postimport_list->setAllColumnsShowFocus(true); event_postimport_list->setItemMargin(5); event_postimport_list->setSortColumn(-1); - event_postimport_list->setAllowStop(false); event_postimport_list->load(event_name,RDEventImportList::PostImport); event_postimport_list->addColumn(""); event_postimport_list->addColumn(tr("Cart")); @@ -671,6 +672,8 @@ EditEvent::EditEvent(QString eventname,bool new_event, this,SLOT(cartClickedData(Q3ListViewItem *))); connect(event_postimport_list,SIGNAL(lengthChanged(int)), this,SLOT(postimportLengthChangedData(int))); + connect(event_postimport_list,SIGNAL(validationNeeded()), + this,SLOT(validate())); event_postimport_up_button= new RDTransportButton(RDTransportButton::Up,this); event_postimport_up_button->setGeometry(sizeHint().width()-50,532-3,40,40); @@ -803,7 +806,7 @@ EditEvent::EditEvent(QString eventname,bool new_event, event_firsttrans_box->setCurrentItem(event_event->firstTransType()); } else { - if(event_preimport_list->eventImportList()->size()>=1) { + if(event_preimport_list->eventImportList()->size()>=2) { event_firsttrans_box-> setCurrentItem(event_preimport_list->eventImportList()-> item(0)->transType()); @@ -855,8 +858,8 @@ EditEvent::EditEvent(QString eventname,bool new_event, prepositionToggledData(event_position_box->isChecked()); timeToggledData(event_timetype_check->isChecked()); importClickedData(event_source_group->checkedId()); - preimportChangedData(event_preimport_list->childCount()); - SetPostTransition(); + event_postimport_list->refreshList(); + validate(); } @@ -961,21 +964,7 @@ void EditEvent::prepositionToggledData(bool state) // // CART STACK Section // - if(state) { - event_preimport_list->setForceTrans(RDLogLine::Stop); - } - else { - if(event_timetype_check->isChecked()) { - event_preimport_list-> - setForceTrans((RDLogLine::TransType)event_firsttrans_box-> - currentItem()); - } - else { - event_preimport_list->setForceTrans(RDLogLine::NoTrans); - } - } event_preimport_list->refreshList(); - SetPostTransition(); } @@ -986,18 +975,6 @@ void EditEvent::timeToggledData(bool state) event_next_button->setEnabled(state); event_wait_button->setEnabled(state); event_grace_edit->setEnabled(state); - if(state) { - event_preimport_list-> - setForceTrans((RDLogLine::TransType)event_firsttrans_box->currentItem()); - } - else { - if(event_position_box->isChecked()) { - event_preimport_list->setForceTrans(RDLogLine::Stop); - } - else { - event_preimport_list->setForceTrans(RDLogLine::NoTrans); - } - } event_preimport_list->refreshList(); if(state) { graceClickedData(event_grace_group->checkedId()); @@ -1022,7 +999,6 @@ void EditEvent::timeToggledData(bool state) (event_preimport_list->childCount()==0)) { } } - SetPostTransition(); } @@ -1044,16 +1020,12 @@ void EditEvent::graceClickedData(int id) event_grace_edit->setEnabled(true); break; } - SetPostTransition(); } void EditEvent::timeTransitionData(int id) { - event_preimport_list-> - setForceTrans((RDLogLine::TransType)event_firsttrans_box->currentItem()); event_preimport_list->refreshList(); - SetPostTransition(); } @@ -1103,7 +1075,6 @@ void EditEvent::importClickedData(int id) state=(id==2)&&state; event_nestevent_label->setEnabled(state); event_nestevent_box->setEnabled(state); - SetPostTransition(); event_sched_group_box->setEnabled(stateschedinv); event_artist_sep_label->setEnabled(stateschedinv); event_artist_sep_spinbox->setEnabled(stateschedinv); @@ -1118,12 +1089,6 @@ void EditEvent::importClickedData(int id) } -void EditEvent::preimportChangedData(int size) -{ - SetPostTransition(); -} - - void EditEvent::preimportLengthChangedData(int msecs) { event_preimport_length_edit->setText(RDGetTimeLength(msecs,true,false)); @@ -1143,7 +1108,6 @@ void EditEvent::preimportUpData() return; } event_preimport_list->move(line,line-1); - event_preimport_list->validateTransitions(); event_preimport_list->refreshList(line-1); } @@ -1161,7 +1125,6 @@ void EditEvent::preimportDownData() return; } event_preimport_list->move(line,line+1); - event_preimport_list->validateTransitions(); event_preimport_list->refreshList(line+1); event_preimport_list->ensureItemVisible(item); } @@ -1180,7 +1143,6 @@ void EditEvent::postimportUpData() return; } event_postimport_list->move(line,line-1); - event_postimport_list->validateTransitions(); event_postimport_list->refreshList(line-1); } @@ -1198,7 +1160,6 @@ void EditEvent::postimportDownData() return; } event_postimport_list->move(line,line+1); - event_postimport_list->validateTransitions(); event_postimport_list->refreshList(line+1); } @@ -1252,7 +1213,8 @@ void EditEvent::saveAsData() if(event_new_event) { AbandonEvent(old_name); } - setCaption("RDLogManager - "+tr("Editing Event")+" - "+event_event->name()); + setWindowTitle("RDLogManager - "+tr("Editing Event")+" - "+ + event_event->name()); } else { if(QMessageBox::question(this,tr("RDLogManager"), @@ -1297,6 +1259,62 @@ void EditEvent::colorData() } +void EditEvent::validate() +{ + RDEventImportList *pre_list=event_preimport_list->eventImportList(); + RDEventImportList *post_list=event_postimport_list->eventImportList(); + + // + // Pre-Position Log + // + if(event_position_box->isChecked()) { + event_firsttrans_box->setCurrentIndex((int)RDLogLine::Stop); + } + + // + // Pre-Position Log / Timed Start + // + if(event_position_box->isChecked()||event_timetype_check->isChecked()) { + if(pre_list->size()>=2) { + pre_list->item(0)-> + setTransType((RDLogLine::TransType)event_firsttrans_box-> + currentIndex()); + event_postimport_list->setAllowFirstTrans(true); + if(post_list->size()>=2) { + if(post_list->item(0)->transType()==RDLogLine::Stop) { + post_list->item(0)->setTransType(RDLogLine::Play); + event_postimport_list->refreshList(0); + } + } + } + else { + event_postimport_list->setAllowFirstTrans(false); + } + } + else { + event_postimport_list->setAllowFirstTrans(pre_list->size()>=2); + if(pre_list->size()>=2) { + if(post_list->size()>=2) { + if(post_list->item(0)->transType()==RDLogLine::Stop) { + post_list->item(0)->setTransType(RDLogLine::Play); + event_postimport_list->refreshList(0); + } + } + } + } + + // + // Fixup added list members + // + event_preimport_list-> + fixupTransitions((RDLogLine::TransType)event_firsttrans_box-> + currentIndex()); + event_postimport_list-> + fixupTransitions((RDLogLine::TransType)event_firsttrans_box-> + currentIndex()); +} + + void EditEvent::okData() { Save(); @@ -1409,43 +1427,6 @@ void EditEvent::RefreshLibrary() } -void EditEvent::SetPostTransition() -{ - if((event_position_box->isChecked())|| - (event_timetype_check->isChecked())|| - (event_preimport_list->childCount()!=0)|| - (event_source_group->checkedId()!=0)) { - event_postimport_list->setAllowStop(false); - } - else { - event_postimport_list->setAllowStop(true); - } - if(event_preimport_list->childCount()==0) { - if(event_position_box->isChecked()) { - event_postimport_list->setAllowFirstTrans(false); - event_postimport_list->setForceTrans(RDLogLine::Stop); - } - else { - if(event_timetype_check->isChecked()) { - event_postimport_list-> - setForceTrans((RDLogLine::TransType)event_firsttrans_box-> - currentItem()); - event_postimport_list->setAllowFirstTrans(false); - } - else { - event_postimport_list->setAllowFirstTrans(true); - event_postimport_list->setForceTrans(RDLogLine::NoTrans); - } - } - } - else { - event_postimport_list->setAllowFirstTrans(true); - event_postimport_list->setForceTrans(RDLogLine::NoTrans); - } - event_postimport_list->refreshList(); -} - - void EditEvent::Save() { QString properties; @@ -1459,7 +1440,6 @@ void EditEvent::Save() } if(event_timetype_check->isChecked()) { event_event->setTimeType(RDLogLine::Hard); - // event_event->setPostPoint(event_post_box->isChecked()); event_event->setFirstTransType((RDLogLine::TransType) event_firsttrans_box->currentItem()); switch(event_grace_group->checkedId()) { @@ -1479,7 +1459,6 @@ void EditEvent::Save() else { event_event->setTimeType(RDLogLine::Relative); event_event->setGraceTime(0); - // event_event->setPostPoint(false); event_event->setFirstTransType(RDLogLine::Play); } @@ -1539,9 +1518,11 @@ void EditEvent::Save() } event_preimport_list->setEventName(event_name); - event_preimport_list->save(); + event_preimport_list-> + save((RDLogLine::TransType)event_firsttrans_box->currentIndex()); event_postimport_list->setEventName(event_name); - event_postimport_list->save(); + event_postimport_list-> + save((RDLogLine::TransType)event_firsttrans_box->currentIndex()); event_saved=true; } diff --git a/rdlogmanager/edit_event.h b/rdlogmanager/edit_event.h index 9c12ed60..6c58836b 100644 --- a/rdlogmanager/edit_event.h +++ b/rdlogmanager/edit_event.h @@ -68,7 +68,6 @@ class EditEvent : public RDDialog void autofillToggledData(bool); void autofillWarnToggledData(bool); void importClickedData(int); - void preimportChangedData(int size); void preimportLengthChangedData(int msecs); void preimportUpData(); void preimportDownData(); @@ -81,6 +80,7 @@ class EditEvent : public RDDialog void saveAsData(); void svcData(); void colorData(); + void validate(); void okData(); void cancelData(); @@ -90,7 +90,6 @@ class EditEvent : public RDDialog private: void RefreshLibrary(); - void SetPostTransition(); void Save(); void CopyEventPerms(QString old_name,QString new_name); void AbandonEvent(QString name); diff --git a/rdlogmanager/import_listview.cpp b/rdlogmanager/import_listview.cpp index fa567485..ce9fc6e1 100644 --- a/rdlogmanager/import_listview.cpp +++ b/rdlogmanager/import_listview.cpp @@ -48,8 +48,7 @@ #define MENU_EDIT_TRACK 3 #define MENU_PLAY_TRANS 4 #define MENU_SEGUE_TRANS 5 -#define MENU_STOP_TRANS 6 -#define MENU_DELETE 7 +#define MENU_DELETE 6 ImportListView::ImportListView(QWidget *parent) : Q3ListView(parent) @@ -89,16 +88,10 @@ ImportListView::ImportListView(QWidget *parent) 0,MENU_PLAY_TRANS); import_menu->insertItem(tr("SEGUE Transition"),this,SLOT(segueMenuData()), 0,MENU_SEGUE_TRANS); - import_menu->insertItem(tr("STOP Transition"),this,SLOT(stopMenuData()), - 0,MENU_STOP_TRANS); import_menu->insertSeparator(); import_menu->insertItem(tr("Delete"),this,SLOT(deleteMenuData()), 0,MENU_DELETE); - - import_force_trans=RDLogLine::NoTrans; - import_allow_stop=true; import_allow_first_trans=true; - setAcceptDrops(true); } @@ -109,22 +102,26 @@ RDEventImportList *ImportListView::eventImportList() const } -void ImportListView::setForceTrans(RDLogLine::TransType trans) -{ - import_force_trans=trans; - validateTransitions(); -} - - -void ImportListView::setAllowStop(bool state) -{ - import_allow_stop=state; -} - - void ImportListView::setAllowFirstTrans(bool state) { - import_allow_first_trans=state; + Q3ListViewItem *item=NULL; + RDEventImportItem *i_item=NULL; + + if(state!=import_allow_first_trans) { + if(childCount()>=2) { + if((item=firstChild())!=NULL) { + if(!state) { + item->setText(5,tr("[auto]")); + } + else { + if((i_item=import_list->item(0))!=NULL) { + item->setText(5,RDLogLine::transText(i_item->transType())); + } + } + } + } + import_allow_first_trans=state; + } } @@ -150,9 +147,14 @@ bool ImportListView::load(const QString &event_name, } -void ImportListView::save() +void ImportListView::save(RDLogLine::TransType first_trans) { - import_list->save(); + if(import_allow_first_trans) { + import_list->save(RDLogLine::NoTrans); + } + else { + import_list->save(first_trans); + } } @@ -211,21 +213,11 @@ void ImportListView::refreshList(int line) default: break; } - switch(i_item->transType()) { - case RDLogLine::Play: - item->setText(5,tr("PLAY")); - break; - - case RDLogLine::Segue: - item->setText(5,tr("SEGUE")); - break; - - case RDLogLine::Stop: - item->setText(5,tr("STOP")); - break; - - default: - break; + if((i==0)&&(!import_allow_first_trans)) { + item->setText(5,tr("[auto]")); + } + else { + item->setText(5,RDLogLine::transText(i_item->transType())); } item->setText(6,QString().sprintf("%d",i)); if(cart!=NULL) { @@ -246,22 +238,18 @@ void ImportListView::refreshList(int line) } -void ImportListView::validateTransitions() +void ImportListView::fixupTransitions(RDLogLine::TransType repl_trans) { - if(import_list->size()>=1) { - if(import_force_trans!=RDLogLine::NoTrans) { - import_list->item(0)->setTransType(import_force_trans); - } - else { - if((import_list->item(0)->transType()==RDLogLine::Stop)&& - (!import_allow_stop)) { - import_list->item(0)->setTransType(RDLogLine::Segue); - } - } + Q3ListViewItem *item=firstChild(); + + if(repl_trans==RDLogLine::Stop) { + repl_trans=RDLogLine::RDLogLine::Segue; } - for(int i=1;i<(import_list->size()-1);i++) { - if(import_list->item(i)->transType()==RDLogLine::Stop) { - import_list->item(1)->setTransType(RDLogLine::Segue); + for(int i=0;isize();i++) { + if(import_list->item(i)->transType()==RDLogLine::NoTrans) { + import_list->item(i)->setTransType(repl_trans); + item->setText(5,RDLogLine::transText(repl_trans)); + item=item->nextSibling(); } } } @@ -278,8 +266,6 @@ void ImportListView::aboutToShowData() import_menu->setItemEnabled(MENU_PLAY_TRANS,false); import_menu->setItemChecked(MENU_SEGUE_TRANS,false); import_menu->setItemEnabled(MENU_SEGUE_TRANS,false); - import_menu->setItemChecked(MENU_STOP_TRANS,false); - import_menu->setItemEnabled(MENU_STOP_TRANS,false); import_menu->setItemEnabled(MENU_DELETE,false); return; } @@ -297,41 +283,29 @@ void ImportListView::aboutToShowData() } import_menu->setItemChecked(MENU_PLAY_TRANS,false); import_menu->setItemChecked(MENU_SEGUE_TRANS,false); - import_menu->setItemChecked(MENU_STOP_TRANS,false); if(import_menu_line==0) { import_menu->setItemEnabled(MENU_PLAY_TRANS,import_allow_first_trans); import_menu->setItemEnabled(MENU_SEGUE_TRANS,import_allow_first_trans); - import_menu->setItemEnabled(MENU_DELETE,import_allow_first_trans); - if((import_menu_line==0)&&import_allow_stop&&import_allow_first_trans) { - import_menu->setItemEnabled(MENU_STOP_TRANS,true); - } - else { - import_menu->setItemEnabled(MENU_STOP_TRANS,false); - } } else { import_menu->setItemEnabled(MENU_PLAY_TRANS,true); import_menu->setItemEnabled(MENU_SEGUE_TRANS,true); import_menu->setItemEnabled(MENU_DELETE,true); - if((import_menu_line==0)&&import_allow_stop) { - import_menu->setItemEnabled(MENU_STOP_TRANS,true); - import_menu->setItemEnabled(MENU_STOP_TRANS,true); - } - else { - import_menu->setItemEnabled(MENU_STOP_TRANS,false); - } } switch(import_menu_i_item->transType()) { case RDLogLine::Play: import_menu->setItemChecked(MENU_PLAY_TRANS,true); + import_menu->setItemChecked(MENU_SEGUE_TRANS,false); break; case RDLogLine::Segue: + import_menu->setItemChecked(MENU_PLAY_TRANS,false); import_menu->setItemChecked(MENU_SEGUE_TRANS,true); break; case RDLogLine::Stop: - import_menu->setItemChecked(MENU_STOP_TRANS,true); + import_menu->setItemChecked(MENU_PLAY_TRANS,false); + import_menu->setItemChecked(MENU_SEGUE_TRANS,false); break; default: @@ -361,9 +335,9 @@ void ImportListView::insertNoteMenuData() RDEventImportItem *i_item=new RDEventImportItem(); i_item->setEventType(RDLogLine::Marker); i_item->setMarkerComment(note); - i_item->setTransType(RDLogLine::Segue); + i_item->setTransType(RDLogLine::NoTrans); import_list->takeItem(import_menu_line,i_item); - validateTransitions(); + emit validationNeeded(); refreshList(import_menu_line); emit sizeChanged(childCount()); } @@ -401,9 +375,9 @@ void ImportListView::insertTrackMenuData() RDEventImportItem *i_item=new RDEventImportItem(); i_item->setEventType(RDLogLine::Track); i_item->setMarkerComment(note); - i_item->setTransType(RDLogLine::Segue); + i_item->setTransType(RDLogLine::NoTrans); import_list->takeItem(import_menu_line,i_item); - validateTransitions(); + emit validationNeeded(); refreshList(import_menu_line); emit sizeChanged(childCount()); } @@ -445,7 +419,7 @@ void ImportListView::stopMenuData() void ImportListView::deleteMenuData() { import_list->removeItem(import_menu_item->text(6).toInt()); - validateTransitions(); + emit validationNeeded(); refreshList(); emit sizeChanged(childCount()); } @@ -543,12 +517,12 @@ void ImportListView::dropEvent(QDropEvent *e) else { i_item->setEventType(RDLogLine::Macro); } - i_item->setTransType(RDLogLine::Segue); + i_item->setTransType(RDLogLine::NoTrans); import_list->takeItem(line,i_item); delete cart; } } - validateTransitions(); + emit validationNeeded(); refreshList(line); emit sizeChanged(childCount()); } diff --git a/rdlogmanager/import_listview.h b/rdlogmanager/import_listview.h index 7b01d323..2f71eb75 100644 --- a/rdlogmanager/import_listview.h +++ b/rdlogmanager/import_listview.h @@ -2,7 +2,7 @@ // // The Import Carts ListView widget for RDLogManager. // -// (C) Copyright 2002-2018 Fred Gleason +// (C) Copyright 2002-2020 Fred Gleason // // 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 @@ -34,19 +34,18 @@ class ImportListView : public Q3ListView public: ImportListView(QWidget *parent); RDEventImportList *eventImportList() const; - void setForceTrans(RDLogLine::TransType trans); - void setAllowStop(bool state); void setAllowFirstTrans(bool state); void move(int from_line,int to_line); void setEventName(const QString &str); bool load(const QString &event_name,RDEventImportList::ImportType type); - void save(); + void save(RDLogLine::TransType first_trans); void refreshList(int line=-1); - void validateTransitions(); + void fixupTransitions(RDLogLine::TransType repl_trans); signals: void sizeChanged(int size); void lengthChanged(int msecs); + void validationNeeded(); private slots: void aboutToShowData(); @@ -75,8 +74,6 @@ class ImportListView : public Q3ListView int import_menu_line; RDEventImportItem *import_menu_i_item; Q3ListViewItem *import_menu_item; - RDLogLine::TransType import_force_trans; - bool import_allow_stop; bool import_allow_first_trans; QWidget *import_parent; }; diff --git a/rdlogmanager/rdlogmanager_cs.ts b/rdlogmanager/rdlogmanager_cs.ts index d302ba36..f2a5b68f 100644 --- a/rdlogmanager/rdlogmanager_cs.ts +++ b/rdlogmanager/rdlogmanager_cs.ts @@ -1136,7 +1136,7 @@ Opětovné sloučení tato data smaže. Sloučit znovu? - STOP Transition + [auto] diff --git a/rdlogmanager/rdlogmanager_de.ts b/rdlogmanager/rdlogmanager_de.ts index de1c1ad0..c65ecffc 100644 --- a/rdlogmanager/rdlogmanager_de.ts +++ b/rdlogmanager/rdlogmanager_de.ts @@ -1136,7 +1136,7 @@ Einbinden wird diese entfernen. Fortfahren? - STOP Transition + [auto] diff --git a/rdlogmanager/rdlogmanager_es.ts b/rdlogmanager/rdlogmanager_es.ts index 646cc6cb..10d6692c 100644 --- a/rdlogmanager/rdlogmanager_es.ts +++ b/rdlogmanager/rdlogmanager_es.ts @@ -1138,7 +1138,7 @@ removerá estos datos. ¿Remezclar? - STOP Transition + [auto] diff --git a/rdlogmanager/rdlogmanager_fr.ts b/rdlogmanager/rdlogmanager_fr.ts index 405957b0..3d83b511 100644 --- a/rdlogmanager/rdlogmanager_fr.ts +++ b/rdlogmanager/rdlogmanager_fr.ts @@ -936,7 +936,7 @@ Do you want to save? - STOP Transition + [auto] diff --git a/rdlogmanager/rdlogmanager_nb.ts b/rdlogmanager/rdlogmanager_nb.ts index 2b9b261a..2c26e3f3 100644 --- a/rdlogmanager/rdlogmanager_nb.ts +++ b/rdlogmanager/rdlogmanager_nb.ts @@ -1141,7 +1141,7 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt? - STOP Transition + [auto] diff --git a/rdlogmanager/rdlogmanager_nn.ts b/rdlogmanager/rdlogmanager_nn.ts index 2b9b261a..2c26e3f3 100644 --- a/rdlogmanager/rdlogmanager_nn.ts +++ b/rdlogmanager/rdlogmanager_nn.ts @@ -1141,7 +1141,7 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt? - STOP Transition + [auto] diff --git a/rdlogmanager/rdlogmanager_pt_BR.ts b/rdlogmanager/rdlogmanager_pt_BR.ts index f2dbc67e..cc8e0da4 100644 --- a/rdlogmanager/rdlogmanager_pt_BR.ts +++ b/rdlogmanager/rdlogmanager_pt_BR.ts @@ -1138,7 +1138,7 @@ Re-agregar removerá estes dados. Re-agregar? - STOP Transition + [auto] From 3f7be11b1cc80f799119ba22cc79312ead678622 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Fri, 19 Jun 2020 17:59:42 -0400 Subject: [PATCH 5/9] 2020-06-19 Fred Gleason * Removed the 'Q3PopupMenu' dependency from rdlogmanager(1). Signed-off-by: Fred Gleason --- ChangeLog | 2 ++ rdlogmanager/import_listview.cpp | 16 ++++++++-------- rdlogmanager/import_listview.h | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index c6461678..a858a27b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19901,3 +19901,5 @@ * Modified the 'Edit Event' dialog in rdlogmanager(1) to show '[auto]' as the transition type for the leading event in Pre-/Post-Import lists. +2020-06-19 Fred Gleason + * Removed the 'Q3PopupMenu' dependency from rdlogmanager(1). diff --git a/rdlogmanager/import_listview.cpp b/rdlogmanager/import_listview.cpp index ce9fc6e1..e0cd8fb9 100644 --- a/rdlogmanager/import_listview.cpp +++ b/rdlogmanager/import_listview.cpp @@ -71,26 +71,26 @@ ImportListView::ImportListView(QWidget *parent) // // Right Button Menu // - import_menu=new Q3PopupMenu(this); + import_menu=new QMenu(this); connect(import_menu,SIGNAL(aboutToShow()),this,SLOT(aboutToShowData())); import_menu->insertItem(tr("Insert Log Note"),this,SLOT(insertNoteMenuData()), - 0,MENU_INSERT_NOTE); + 0,MENU_INSERT_NOTE); import_menu->insertItem(tr("Edit Log Note"),this,SLOT(editNoteMenuData()), - 0,MENU_EDIT_NOTE); + 0,MENU_EDIT_NOTE); import_menu->insertSeparator(); import_menu->insertItem(tr("Insert Voice Track"), - this,SLOT(insertTrackMenuData()), - 0,MENU_INSERT_TRACK); + this,SLOT(insertTrackMenuData()), + 0,MENU_INSERT_TRACK); import_menu->insertItem(tr("Edit Voice Track"),this,SLOT(editTrackMenuData()), - 0,MENU_EDIT_TRACK); + 0,MENU_EDIT_TRACK); import_menu->insertSeparator(); import_menu->insertItem(tr("PLAY Transition"),this,SLOT(playMenuData()), 0,MENU_PLAY_TRANS); import_menu->insertItem(tr("SEGUE Transition"),this,SLOT(segueMenuData()), - 0,MENU_SEGUE_TRANS); + 0,MENU_SEGUE_TRANS); import_menu->insertSeparator(); import_menu->insertItem(tr("Delete"),this,SLOT(deleteMenuData()), - 0,MENU_DELETE); + 0,MENU_DELETE); import_allow_first_trans=true; setAcceptDrops(true); } diff --git a/rdlogmanager/import_listview.h b/rdlogmanager/import_listview.h index 2f71eb75..9a58dee9 100644 --- a/rdlogmanager/import_listview.h +++ b/rdlogmanager/import_listview.h @@ -23,7 +23,7 @@ #include #include -#include +#include #include @@ -70,7 +70,7 @@ class ImportListView : public Q3ListView QPixmap *import_macro_map; QPixmap *import_notemarker_map; QPixmap *import_mic16_map; - Q3PopupMenu *import_menu; + QMenu *import_menu; int import_menu_line; RDEventImportItem *import_menu_i_item; Q3ListViewItem *import_menu_item; From e223de260982d51b9d8c68a558769963084153ff Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 23 Jun 2020 11:03:40 -0400 Subject: [PATCH 6/9] 2020-06-23 Fred Gleason * Fixed a bug in the 'Add Next' ['PX'] RML that failed to return an error when an invalid offset value was supplied. * Fixed a bug in the 'Add Next' ['PX'] RML that failed to honor the 'Default Trans. Type' setting in the 'Configure RDAirPlay' dialog in rdadmin(1). Signed-off-by: Fred Gleason --- ChangeLog | 6 +++++ rdairplay/local_macros.cpp | 46 ++++++++++++++++++++++++++++---------- rdairplay/rdairplay.cpp | 1 + rdairplay/rdairplay.h | 1 + 4 files changed, 42 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index a858a27b..8796d16c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19903,3 +19903,9 @@ lists. 2020-06-19 Fred Gleason * Removed the 'Q3PopupMenu' dependency from rdlogmanager(1). +2020-06-23 Fred Gleason + * Fixed a bug in the 'Add Next' ['PX'] RML that failed to return an + error when an invalid offset value was supplied. + * Fixed a bug in the 'Add Next' ['PX'] RML that failed to honor + the 'Default Trans. Type' setting in the 'Configure RDAirPlay' + dialog in rdadmin(1). diff --git a/rdairplay/local_macros.cpp b/rdairplay/local_macros.cpp index 9d9962d3..d297daaf 100644 --- a/rdairplay/local_macros.cpp +++ b/rdairplay/local_macros.cpp @@ -2,7 +2,7 @@ // // Local RML Macros for the Rivendell's RDAirPlay // -// (C) Copyright 2002-2018 Fred Gleason +// (C) Copyright 2002-2020 Fred Gleason // // 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 @@ -44,6 +44,8 @@ void MainWidget::RunLocalMacros(RDMacro *rml) int mach=0; RDLogLine::TransType trans=RDLogLine::Play; int offset=0; + bool ok=false; + unsigned cart=0; if(rml->role()!=RDMacro::Cmd) { return; @@ -792,7 +794,11 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if((rml->arg(0).toInt()<1)||(rml->arg(0).toInt()>3)|| + mach=rml->arg(0).toInt(); + cart=cart; + offset=0; + trans=air_default_trans_type; + if((mach<1)||(mach>3)|| (rml->arg(1).toUInt()>999999)) { if(rml->echoRequested()) { rml->acknowledge(false); @@ -800,30 +806,46 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - offset=0; if(rml->argQuantity()>=3) { - offset=rml->arg(2).toInt(); + offset=rml->arg(2).toInt(&ok); + if(!ok) { + if(rml->echoRequested()) { + rml->acknowledge(false); + rda->ripc()->sendRml(rml); + } + return; + } } - trans=RDLogLine::Play; if(rml->argQuantity()==4) { + trans=RDLogLine::NoTrans; + if(rml->arg(3).toLower()=="play") { + trans=RDLogLine::Play; + } if(rml->arg(3).toLower()=="segue") { trans=RDLogLine::Segue; } if(rml->arg(3).toLower()=="stop") { trans=RDLogLine::Stop; } + if(trans==RDLogLine::NoTrans) { + if(rml->echoRequested()) { + rml->acknowledge(false); + rda->ripc()->sendRml(rml); + } + return; + } } - if(air_log[rml->arg(0).toInt()-1]->nextLine()>=0) { - air_log[rml->arg(0).toInt()-1]-> - insert(air_log[rml->arg(0).toInt()-1]->nextLine()+offset, + if(air_log[mach-1]->nextLine()>=0) { + air_log[mach-1]-> + insert(air_log[mach-1]->nextLine()+offset, rml->arg(1).toUInt(),RDLogLine::NoTrans,trans); } else { - air_log[rml->arg(0).toInt()-1]-> - insert(air_log[rml->arg(0).toInt()-1]->size(), + air_log[mach-1]-> + insert(air_log[mach-1]->size(), rml->arg(1).toUInt(),RDLogLine::NoTrans,trans); - air_log[rml->arg(0).toInt()-1]-> - makeNext(air_log[rml->arg(0).toInt()-1]->size()-1); + air_log[mach-1]-> + makeNext(air_log[mach-1]->size()-1); } if(rml->echoRequested()) { rml->acknowledge(true); diff --git a/rdairplay/rdairplay.cpp b/rdairplay/rdairplay.cpp index 21992d32..8405774b 100644 --- a/rdairplay/rdairplay.cpp +++ b/rdairplay/rdairplay.cpp @@ -191,6 +191,7 @@ MainWidget::MainWidget(RDConfig *config,QWidget *parent) // rdairplay_previous_exit_code=rda->airplayConf()->exitCode(); rda->airplayConf()->setExitCode(RDAirPlayConf::ExitDirty); + air_default_trans_type=rda->airplayConf()->defaultTransType(); air_clear_filter=rda->airplayConf()->clearFilter(); air_bar_action=rda->airplayConf()->barAction(); air_op_mode_style=rda->airplayConf()->opModeStyle(); diff --git a/rdairplay/rdairplay.h b/rdairplay/rdairplay.h index a6c3a1de..7e99402b 100644 --- a/rdairplay/rdairplay.h +++ b/rdairplay/rdairplay.h @@ -161,6 +161,7 @@ class MainWidget : public RDWidget int air_meter_port[3]; int air_cue_card; int air_cue_port; + RDLogLine::TransType air_default_trans_type; RDInstanceLock *air_lock; bool air_clear_filter; RDAirPlayConf::BarAction air_bar_action; From 5ee62649abb162e60a9992ee2619f33b5c3b2d6a Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 23 Jun 2020 11:07:33 -0400 Subject: [PATCH 7/9] 2020-06-23 Fred Gleason * Applied the RD_MAX_CART_NUMBER define in 'rdairplay/local_macros.cpp'. Signed-off-by: Fred Gleason --- ChangeLog | 3 +++ rdairplay/local_macros.cpp | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8796d16c..9a462700 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19909,3 +19909,6 @@ * Fixed a bug in the 'Add Next' ['PX'] RML that failed to honor the 'Default Trans. Type' setting in the 'Configure RDAirPlay' dialog in rdadmin(1). +2020-06-23 Fred Gleason + * Applied the RD_MAX_CART_NUMBER define in + 'rdairplay/local_macros.cpp'. diff --git a/rdairplay/local_macros.cpp b/rdairplay/local_macros.cpp index d297daaf..4eb6057f 100644 --- a/rdairplay/local_macros.cpp +++ b/rdairplay/local_macros.cpp @@ -308,7 +308,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) (rml->arg(1).toInt()>AIR_PANEL_BUTTON_COLUMNS)|| (rml->arg(2).toInt()<=0)|| (rml->arg(2).toInt()>AIR_PANEL_BUTTON_ROWS)|| - (rml->arg(3).toUInt()>999999)) { + (rml->arg(3).toUInt()>RD_MAX_CART_NUMBER)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -799,7 +799,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) offset=0; trans=air_default_trans_type; if((mach<1)||(mach>3)|| - (rml->arg(1).toUInt()>999999)) { + (rml->arg(1).toUInt()>RD_MAX_CART_NUMBER)) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); @@ -904,7 +904,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } - if(rml->arg(2).toUInt()>999999) { + if(rml->arg(2).toUInt()>RD_MAX_CART_NUMBER) { if(rml->echoRequested()) { rml->acknowledge(false); rda->ripc()->sendRml(rml); From 5692b42aefa5388b83dad9c1fe8be990ae3b314c Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 7 Jul 2020 12:08:49 -0400 Subject: [PATCH 8/9] 2020-07-07 Fred Gleason * Modified 'RDWaveFile' to work around known fencepost errors in WAV files generated by "Sonic Studio soundBlade" by "PME Mastering, Inc." Signed-off-by: Fred Gleason --- ChangeLog | 4 ++++ lib/rdwavefile.cpp | 29 +++++++++++++++++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a462700..35ccbe12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19912,3 +19912,7 @@ 2020-06-23 Fred Gleason * Applied the RD_MAX_CART_NUMBER define in 'rdairplay/local_macros.cpp'. +2020-07-07 Fred Gleason + * Modified 'RDWaveFile' to work around known fencepost errors in + WAV files generated by "Sonic Studio soundBlade" by + "PME Mastering, Inc." diff --git a/lib/rdwavefile.cpp b/lib/rdwavefile.cpp index 8b865629..7cee7d9d 100644 --- a/lib/rdwavefile.cpp +++ b/lib/rdwavefile.cpp @@ -2494,16 +2494,23 @@ bool RDWaveFile::IsM4A(int fd) #endif } + off_t RDWaveFile::FindChunk(int fd,const char *chunk_name,unsigned *chunk_size, bool big_end) { - int i; + int offset; char name[5]={0,0,0,0,0}; unsigned char buffer[4]; lseek(fd,12,SEEK_SET); - i=read(fd,name,4); - i=read(fd,buffer,4); + offset=read(fd,name,4); + if(!isalnum(0xff&name[0])) { + name[0]=name[1]; + name[1]=name[2]; + name[2]=name[3]; + offset=read(fd,name+3,1); + } + offset=read(fd,buffer,4); if(big_end) { *chunk_size= buffer[3]+(256*buffer[2])+(65536*buffer[1])+(16777216*buffer[0]); @@ -2512,13 +2519,23 @@ off_t RDWaveFile::FindChunk(int fd,const char *chunk_name,unsigned *chunk_size, *chunk_size= buffer[0]+(256*buffer[1])+(65536*buffer[2])+(16777216*buffer[3]); } - while(i==4) { + while(offset==4) { if(strcasecmp(chunk_name,name)==0) { return lseek(fd,0,SEEK_CUR); } lseek(fd,*chunk_size,SEEK_CUR); - i=read(fd,name,4); - i=read(fd,buffer,4); + offset=read(fd,name,4); + // + // Attempt to work around known fencepost errors in WAV files generated by + // "Sonic Studio soundBlade" by "PME Mastering, Inc." (and perhaps others?) + // + if(!isalnum(0xff&name[0])) { + name[0]=name[1]; + name[1]=name[2]; + name[2]=name[3]; + offset=read(fd,name+3,1); + } + offset=read(fd,buffer,4); if(big_end) { *chunk_size=buffer[3]+(256*buffer[2])+(65536*buffer[1])+ (16777216*buffer[0]); From 909d16ee52f8c172ce439529e35dd283026609f7 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 7 Jul 2020 12:15:10 -0400 Subject: [PATCH 9/9] 2020-07-07 Fred Gleason * Incremented the package version to 3.4.0int1. Signed-off-by: Fred Gleason --- ChangeLog | 2 ++ NEWS | 2 +- PACKAGE_VERSION | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 35ccbe12..da398ec7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19916,3 +19916,5 @@ * Modified 'RDWaveFile' to work around known fencepost errors in WAV files generated by "Sonic Studio soundBlade" by "PME Mastering, Inc." +2020-07-07 Fred Gleason + * Incremented the package version to 3.4.0int1. diff --git a/NEWS b/NEWS index 417632c9..8a031cb0 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ The NEWS file for the Rivendell package. ------------------------------------------------------------------------------- -v3.4.0int0 -- 5 June 2020 +v3.4.0int1 -- 7 July 2020 Changes: As-played Reports. Added a 'Results Report'. diff --git a/PACKAGE_VERSION b/PACKAGE_VERSION index 59efc4bf..e8085bde 100644 --- a/PACKAGE_VERSION +++ b/PACKAGE_VERSION @@ -1 +1 @@ -3.4.0int0 \ No newline at end of file +3.4.0int1 \ No newline at end of file