diff --git a/ChangeLog b/ChangeLog index 8d77c6f9..2a65bc2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16145,3 +16145,11 @@ * Added 'NewHostShortNameRegex=', 'NewHostShortNameGroup=', 'NewServiceNameRegex=' and 'NewServiceNameGroup=' parameters to rd.conf(5). +2017-10-16 Fred Gleason + * Added 'DROPBOXES.SEGUE_LEVEL' and 'DROPBOXES.SEGUE_LENGTH' fields + to the database. + * Incremented the database version to 271. + * Applied a pull request from Dennis Graiani + the added Segue parameters to the 'Edit Dropbox' dialog. + * Modified the 'Segue Length' control in the 'Edit Dropbox' dialog + to take mS as units. diff --git a/docs/tables/dropboxes.txt b/docs/tables/dropboxes.txt index 6a3d3615..d82ef8c0 100644 --- a/docs/tables/dropboxes.txt +++ b/docs/tables/dropboxes.txt @@ -14,6 +14,8 @@ AUTOTRIM_LEVEL int(11) SINGLE_CART enum('N','Y') TO_CART uint(10) FORCE_TO_MONO enum('N','Y') +SEGUE_LEVEL int(11) dBFS +SEGUE_LENGTH int(11) msec USE_CARTCHUNK_ID enum('N','Y') TITLE_FROM_CARTCHUNK_ID enum('N','Y') Set Rivendell cart title from cartchunk cutid. DELETE_CUTS enum('N','Y') diff --git a/lib/dbversion.h b/lib/dbversion.h index b5b7492d..eee18957 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 270 +#define RD_VERSION_DATABASE 271 #endif // DBVERSION_H diff --git a/lib/rddropbox.cpp b/lib/rddropbox.cpp index cd73183a..ccc6840b 100644 --- a/lib/rddropbox.cpp +++ b/lib/rddropbox.cpp @@ -311,6 +311,27 @@ void RDDropbox::setCreateEnddateOffset(int offset) const SetRow("CREATE_ENDDATE_OFFSET",offset); } +int RDDropbox::segueLevel() const +{ + return RDGetSqlValue("DROPBOXES","ID",box_id,"SEGUE_LEVEL").toInt(); +} + + +void RDDropbox::setSegueLevel(int level) const +{ + SetRow("SEGUE_LEVEL",level); +} + +int RDDropbox::segueLength() const +{ + return RDGetSqlValue("DROPBOXES","ID",box_id,"SEGUE_LENGTH").toInt(); +} + + +void RDDropbox::setSegueLength(int length) const +{ + SetRow("SEGUE_LENGTH",length); +} void RDDropbox::SetRow(const QString ¶m,int value) const { diff --git a/lib/rddropbox.h b/lib/rddropbox.h index 63d43dc5..bc727295 100644 --- a/lib/rddropbox.h +++ b/lib/rddropbox.h @@ -71,6 +71,10 @@ class RDDropbox void setCreateStartdateOffset(int offset) const; int createEnddateOffset() const; void setCreateEnddateOffset(int offset) const; + int segueLevel() const; + void setSegueLevel(int level) const; + int segueLength() const; + void setSegueLength(int length) const; private: void SetRow(const QString ¶m,int value) const; diff --git a/rdadmin/createdb.cpp b/rdadmin/createdb.cpp index 0b726b0c..f87ab79c 100644 --- a/rdadmin/createdb.cpp +++ b/rdadmin/createdb.cpp @@ -1752,6 +1752,8 @@ bool CreateDb(QString name,QString pwd) SINGLE_CART enum('N','Y') default 'N',\ TO_CART int unsigned default 0,\ FORCE_TO_MONO enum('N','Y') default 'N',\ + SEGUE_LEVEL int(11) default 1,\ + SEGUE_LENGTH int(11) default 0,\ USE_CARTCHUNK_ID enum('N','Y') default 'N',\ TITLE_FROM_CARTCHUNK_ID enum('N','Y') default 'N',\ DELETE_CUTS enum('N','Y') default 'N',\ @@ -8501,6 +8503,14 @@ int UpdateDb(int ver) delete q; } + if(ver<271) { + sql=QString("alter table DROPBOXES ")+ + "add column SEGUE_LEVEL int(11) default 1 after FORCE_TO_MONO, "+ + "add column SEGUE_LENGTH int(11) default 0 after SEGUE_LEVEL"; + q=new RDSqlQuery(sql); + delete q; + } + // // Maintainer's Note: diff --git a/rdadmin/edit_dropbox.cpp b/rdadmin/edit_dropbox.cpp index a91599d0..fceba50d 100644 --- a/rdadmin/edit_dropbox.cpp +++ b/rdadmin/edit_dropbox.cpp @@ -238,14 +238,55 @@ EditDropbox::EditDropbox(int id,QWidget *parent) connect(box_autotrim_box,SIGNAL(toggled(bool)), this,SLOT(autotrimToggledData(bool))); + // + // Segue + // + box_segue_box=new QCheckBox(this); + box_segue_box->setGeometry(90,271,15,15); + label=new QLabel(box_segue_box,tr("Insert Segue Markers"), + this); + label->setGeometry(110,269,sizeHint().width()-40,20); + label->setFont(font); + label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); + box_segue_level_spin= + new QSpinBox(this); + box_segue_level_spin->setGeometry(300,295,50,20); + box_segue_level_spin->setRange(-100,0); + box_segue_level_label= + new QLabel(box_segue_level_spin,tr("Segue Level:"), + this); + box_segue_level_label->setGeometry(120,295,160,20); + box_segue_level_label->setFont(font); + box_segue_level_label->setAlignment(AlignVCenter|AlignRight); + box_segue_level_unit= + new QLabel(box_segue_level_spin,("dBFS"),this); + box_segue_level_unit->setGeometry(360,296,60,20); + box_segue_level_unit->setAlignment(AlignVCenter|AlignLeft); + + box_segue_length_spin=new QSpinBox(this); + box_segue_length_spin->setGeometry(300,320,70,20); + box_segue_length_spin->setRange(0,180000); + box_segue_length_label= + new QLabel(box_segue_length_spin,tr("Segue Length:"), + this); + box_segue_length_label->setGeometry(120,320,160,20); + box_segue_length_label->setFont(font); + box_segue_length_label->setAlignment(AlignVCenter|AlignRight); + box_segue_length_unit= + new QLabel(box_segue_length_spin,("msec"),this); + box_segue_length_unit->setGeometry(375,321,60,20); + box_segue_length_unit->setAlignment(AlignVCenter|AlignLeft); + connect(box_segue_box,SIGNAL(toggled(bool)), + this,SLOT(segueToggledData(bool))); + // // Use CartChunk ID // box_use_cartchunk_id_box=new QCheckBox(this); - box_use_cartchunk_id_box->setGeometry(90,271,15,15); + box_use_cartchunk_id_box->setGeometry(90,350,15,15); label=new QLabel(box_use_cartchunk_id_box, tr("Get cart number from CartChunk CutID"),this); - label->setGeometry(110,269,sizeHint().width()-40,20); + label->setGeometry(110,348,sizeHint().width()-40,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); @@ -253,10 +294,10 @@ EditDropbox::EditDropbox(int id,QWidget *parent) // Title from CartChunk ID // box_title_from_cartchunk_id_box=new QCheckBox(this); - box_title_from_cartchunk_id_box->setGeometry(90,295,15,15); + box_title_from_cartchunk_id_box->setGeometry(90,374,15,15); label=new QLabel(box_title_from_cartchunk_id_box, tr("Get cart title from CartChunk CutID"),this); - label->setGeometry(110,293,sizeHint().width()-40,20); + label->setGeometry(110,372,sizeHint().width()-40,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); @@ -264,10 +305,10 @@ EditDropbox::EditDropbox(int id,QWidget *parent) // Fix Broken Formats // box_fix_broken_formats_box=new QCheckBox(this); - box_fix_broken_formats_box->setGeometry(90,319,15,15); + box_fix_broken_formats_box->setGeometry(90,398,15,15); label=new QLabel(box_fix_broken_formats_box, tr("Attempt to work around malformatted input files"),this); - label->setGeometry(110,317,sizeHint().width()-40,20); + label->setGeometry(110,396,sizeHint().width()-40,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); @@ -276,14 +317,14 @@ EditDropbox::EditDropbox(int id,QWidget *parent) // box_startoffset_spin= new QSpinBox(this); - box_startoffset_spin->setGeometry(215,341,50,20); + box_startoffset_spin->setGeometry(215,422,50,20); box_startoffset_spin->setRange(-7,7); label=new QLabel(box_startoffset_spin,tr("Offset start date by"),this); - label->setGeometry(90,341,120,20); + label->setGeometry(90,422,120,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); label=new QLabel(box_startoffset_spin,tr("days"),this); - label->setGeometry(275,343,100,20); + label->setGeometry(275,424,100,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); @@ -292,14 +333,14 @@ EditDropbox::EditDropbox(int id,QWidget *parent) // box_endoffset_spin= new QSpinBox(this); - box_endoffset_spin->setGeometry(215,365,50,20); + box_endoffset_spin->setGeometry(215,446,50,20); box_endoffset_spin->setRange(-7,7); label=new QLabel(box_endoffset_spin,tr("Offset end date by"),this); - label->setGeometry(90,365,120,20); + label->setGeometry(90,446,120,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); label=new QLabel(box_endoffset_spin,tr("days"),this); - label->setGeometry(275,365,100,20); + label->setGeometry(275,446,100,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); @@ -307,38 +348,38 @@ EditDropbox::EditDropbox(int id,QWidget *parent) // Create Dates // box_create_dates_box=new QCheckBox(this); - box_create_dates_box->setGeometry(90,399,15,15); + box_create_dates_box->setGeometry(90,470,15,15); label=new QLabel(box_create_dates_box,tr("Create Dates when no Dates Exist"), this); - label->setGeometry(110,397,sizeHint().width()-40,20); + label->setGeometry(110,468,sizeHint().width()-40,20); label->setFont(font); label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix); box_create_startdate_offset_spin= new QSpinBox(this); - box_create_startdate_offset_spin->setGeometry(300,423,50,20); + box_create_startdate_offset_spin->setGeometry(300,494,50,20); box_create_startdate_offset_spin->setRange(-180,180); box_create_startdate_label= new QLabel(box_create_startdate_offset_spin,tr("Create start date offset:"), this); - box_create_startdate_label->setGeometry(120,423,160,20); + box_create_startdate_label->setGeometry(120,494,160,20); box_create_startdate_label->setFont(font); box_create_startdate_label->setAlignment(AlignVCenter|AlignRight); box_create_startdate_unit= new QLabel(box_create_startdate_offset_spin,("days"),this); - box_create_startdate_unit->setGeometry(360,424,60,20); + box_create_startdate_unit->setGeometry(360,495,60,20); box_create_startdate_unit->setAlignment(AlignVCenter|AlignLeft); box_create_enddate_offset_spin=new QSpinBox(this); - box_create_enddate_offset_spin->setGeometry(300,453,50,20); + box_create_enddate_offset_spin->setGeometry(300,524,50,20); box_create_enddate_offset_spin->setRange(-180,180); box_create_enddate_label= new QLabel(box_create_enddate_offset_spin,tr("Create end date offset:"), this); - box_create_enddate_label->setGeometry(120,453,160,20); + box_create_enddate_label->setGeometry(120,524,160,20); box_create_enddate_label->setFont(font); box_create_enddate_label->setAlignment(AlignVCenter|AlignRight); box_create_enddate_unit= new QLabel(box_create_enddate_offset_spin,("days"),this); - box_create_enddate_unit->setGeometry(360,453,60,20); + box_create_enddate_unit->setGeometry(360,524,60,20); box_create_enddate_unit->setAlignment(AlignVCenter|AlignLeft); connect(box_create_dates_box,SIGNAL(toggled(bool)), this,SLOT(createDatesToggledData(bool))); @@ -413,7 +454,12 @@ EditDropbox::EditDropbox(int id,QWidget *parent) box_create_enddate_offset_spin->setValue(box_dropbox->createEnddateOffset()); normalizationToggledData(box_normalization_box->isChecked()); autotrimToggledData(box_autotrim_box->isChecked()); + segueToggledData(box_segue_box->isChecked()); createDatesToggledData(box_create_dates_box->isChecked()); + segueToggledData(box_segue_box->isChecked()); + box_segue_box->setChecked(box_dropbox->segueLevel()<1); + box_segue_level_spin->setValue(box_dropbox->segueLevel()/100); + box_segue_length_spin->setValue(box_dropbox->segueLength()); sql=QString("select SCHED_CODE from DROPBOX_SCHED_CODES ")+ QString().sprintf("where DROPBOX_ID=%d",box_dropbox->id()); @@ -427,7 +473,7 @@ EditDropbox::EditDropbox(int id,QWidget *parent) QSize EditDropbox::sizeHint() const { - return QSize(450,573); + return QSize(450,644); } @@ -489,6 +535,20 @@ void EditDropbox::autotrimToggledData(bool state) box_autotrim_level_unit->setEnabled(state); } +void EditDropbox::segueToggledData(bool state) +{ + box_segue_level_spin->setEnabled(state); + box_segue_level_label->setEnabled(state); + box_segue_level_unit->setEnabled(state); + box_segue_length_spin->setEnabled(state); + box_segue_length_label->setEnabled(state); + box_segue_length_unit->setEnabled(state); + if (!state) { + box_segue_level_spin->setValue(1); + box_segue_length_spin->setValue(0); + } +} + void EditDropbox::createDatesToggledData(bool state) { box_create_startdate_offset_spin->setEnabled(state); @@ -560,6 +620,7 @@ void EditDropbox::okData() box_dropbox-> setAutotrimLevel(box_autotrim_level_spin->value()*100); } + else { box_dropbox->setAutotrimLevel(0); } @@ -573,6 +634,15 @@ void EditDropbox::okData() box_dropbox->setCreateStartdateOffset(box_create_startdate_offset_spin->value()); box_dropbox->setCreateEnddateOffset(box_create_enddate_offset_spin->value()); + if(box_segue_box->isChecked()){ + box_dropbox->setSegueLevel(box_segue_level_spin->value()*100); + box_dropbox->setSegueLength(box_segue_length_spin->value()); + } + else{ + box_dropbox->setSegueLevel(1); + box_dropbox->setSegueLength(0); + } + sql=QString("delete from DROPBOX_SCHED_CODES where ")+ QString().sprintf("DROPBOX_ID=%d",box_dropbox->id()); q=new RDSqlQuery(sql); diff --git a/rdadmin/edit_dropbox.h b/rdadmin/edit_dropbox.h index 660fafbd..4fc9c8ef 100644 --- a/rdadmin/edit_dropbox.h +++ b/rdadmin/edit_dropbox.h @@ -53,6 +53,7 @@ class EditDropbox : public QDialog void schedcodesData(); void normalizationToggledData(bool state); void autotrimToggledData(bool state); + void segueToggledData(bool state); void createDatesToggledData(bool state); void resetData(); void okData(); @@ -93,6 +94,13 @@ class EditDropbox : public QDialog QSpinBox *box_create_enddate_offset_spin; QLabel *box_create_enddate_label; QLabel *box_create_enddate_unit; + QCheckBox *box_segue_box; + QSpinBox *box_segue_level_spin; + QLabel *box_segue_level_label; + QLabel *box_segue_level_unit; + QSpinBox *box_segue_length_spin; + QLabel *box_segue_length_label; + QLabel *box_segue_length_unit; RDSchedCodesDialog *box_schedcodes_dialog; QStringList box_schedcodes; }; diff --git a/rdadmin/rdadmin_cs.ts b/rdadmin/rdadmin_cs.ts index af48f351..e306814c 100644 --- a/rdadmin/rdadmin_cs.ts +++ b/rdadmin/rdadmin_cs.ts @@ -1284,6 +1284,18 @@ nastaveném pro běh služby CAE pro naplnění databáze se zdroji zvuku. + + Insert Segue Markers + + + + Segue Level: + + + + Segue Length: + + EditEncoder diff --git a/rdadmin/rdadmin_de.ts b/rdadmin/rdadmin_de.ts index 60edd410..18933964 100644 --- a/rdadmin/rdadmin_de.ts +++ b/rdadmin/rdadmin_de.ts @@ -1252,6 +1252,18 @@ configured to run the CAE service in order to populate the audio resources datab files, causing any whose files remain to be imported again. + + Insert Segue Markers + + + + Segue Level: + + + + Segue Length: + + EditEncoder diff --git a/rdadmin/rdadmin_es.ts b/rdadmin/rdadmin_es.ts index ab51b776..73695c2d 100644 --- a/rdadmin/rdadmin_es.ts +++ b/rdadmin/rdadmin_es.ts @@ -1278,6 +1278,18 @@ computador para obtener los recursos de audio de dicho equipo. files, causing any whose files remain to be imported again. + + Insert Segue Markers + + + + Segue Level: + + + + Segue Length: + + EditEncoder diff --git a/rdadmin/rdadmin_fr.ts b/rdadmin/rdadmin_fr.ts index 096fe6c4..31885762 100644 --- a/rdadmin/rdadmin_fr.ts +++ b/rdadmin/rdadmin_fr.ts @@ -1031,6 +1031,18 @@ configured to run the CAE service in order to populate the audio resources datab files, causing any whose files remain to be imported again. + + Insert Segue Markers + + + + Segue Level: + + + + Segue Length: + + EditEncoder diff --git a/rdadmin/rdadmin_nb.ts b/rdadmin/rdadmin_nb.ts index 178980f3..17892845 100644 --- a/rdadmin/rdadmin_nb.ts +++ b/rdadmin/rdadmin_nb.ts @@ -1234,6 +1234,18 @@ configured to run the CAE service in order to populate the audio resources datab files, causing any whose files remain to be imported again. + + Insert Segue Markers + + + + Segue Level: + + + + Segue Length: + + EditEncoder diff --git a/rdadmin/rdadmin_nn.ts b/rdadmin/rdadmin_nn.ts index 178980f3..17892845 100644 --- a/rdadmin/rdadmin_nn.ts +++ b/rdadmin/rdadmin_nn.ts @@ -1234,6 +1234,18 @@ configured to run the CAE service in order to populate the audio resources datab files, causing any whose files remain to be imported again. + + Insert Segue Markers + + + + Segue Level: + + + + Segue Length: + + EditEncoder diff --git a/rdadmin/rdadmin_pt_BR.ts b/rdadmin/rdadmin_pt_BR.ts index 19122a4d..df06d28f 100644 --- a/rdadmin/rdadmin_pt_BR.ts +++ b/rdadmin/rdadmin_pt_BR.ts @@ -1235,6 +1235,18 @@ configured to run the CAE service in order to populate the audio resources datab files, causing any whose files remain to be imported again. + + Insert Segue Markers + + + + Segue Level: + + + + Segue Length: + + EditEncoder diff --git a/rdcatchd/startdropboxes.cpp b/rdcatchd/startdropboxes.cpp index 3db621a5..04e5324a 100644 --- a/rdcatchd/startdropboxes.cpp +++ b/rdcatchd/startdropboxes.cpp @@ -60,7 +60,9 @@ void MainObject::StartDropboxes() "CREATE_STARTDATE_OFFSET,"+ // 17 "CREATE_ENDDATE_OFFSET,"+ // 18 "SET_USER_DEFINED,"+ // 19 - "FORCE_TO_MONO "+ // 20 + "FORCE_TO_MONO,"+ // 20 + "SEGUE_LEVEL,"+ // 21 + "SEGUE_LENGTH "+ // 22 "from DROPBOXES where "+ "STATION_NAME=\""+RDEscapeString(catch_config->stationName())+"\""; q=new RDSqlQuery(sql); @@ -85,6 +87,12 @@ void MainObject::StartDropboxes() if(q->value(6).toString()=="Y") { cmd+=" --use-cartchunk-cutid"; } + if(q->value(21).toInt()<1) { + cmd+= + QString().sprintf(" --segue-level=%d",q->value(21).toInt()); + cmd+= + QString().sprintf(" --segue-length=%u",q->value(22).toUInt()); + } if(q->value(7).toString()=="Y") { cmd+=" --title-from-cartchunk-cutid"; } diff --git a/utils/rdrevert/rdrevert.cpp b/utils/rdrevert/rdrevert.cpp index 36fe42f5..e615bcb5 100644 --- a/utils/rdrevert/rdrevert.cpp +++ b/utils/rdrevert/rdrevert.cpp @@ -2,7 +2,7 @@ // // Revert the Rivendell database schema to an earlier version. // -// (C) Copyright 2016 Fred Gleason +// (C) Copyright 2016-2017 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 @@ -239,6 +239,10 @@ void MainObject::Revert(int schema) const case 270: Revert270(); break; + + case 271: + Revert271(); + break; } } @@ -709,7 +713,6 @@ void MainObject::Revert269() const SetVersion(268); } - void MainObject::Revert270() const { QString sql; @@ -723,6 +726,19 @@ void MainObject::Revert270() const } +void MainObject::Revert271() const +{ + QString sql; + QSqlQuery *q; + sql=QString("alter table DROPBOXES drop column SEGUE_LEVEL, ")+ + "drop column SEGUE_LENGTH"; + q=new QSqlQuery(sql); + delete q; + + SetVersion(270); +} + + int MainObject::GetVersion() const { QString sql; @@ -767,7 +783,7 @@ int MainObject::MapSchema(const QString &ver) version_map["2.15"]=259; version_map["2.16"]=263; version_map["2.17"]=268; - version_map["2.18"]=270; + version_map["2.18"]=271; // // Normalize String diff --git a/utils/rdrevert/rdrevert.h b/utils/rdrevert/rdrevert.h index d097c862..3a95d17d 100644 --- a/utils/rdrevert/rdrevert.h +++ b/utils/rdrevert/rdrevert.h @@ -66,6 +66,7 @@ class MainObject : public QObject void Revert268() const; void Revert269() const; void Revert270() const; + void Revert271() const; int GetVersion() const; void SetVersion(int schema) const; int MapSchema(const QString &ver);