2017-10-16 Fred Gleason <fredg@paravelsystems.com>

* 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 <dennis.graiani@gmail.com>
	the added Segue parameters to the 'Edit Dropbox' dialog.
	* Modified the 'Segue Length' control in the 'Edit Dropbox' dialog
	to take mS as units.
This commit is contained in:
Fred Gleason 2017-10-16 10:12:25 -04:00
commit ca08ba607b
18 changed files with 258 additions and 26 deletions

View File

@ -16145,3 +16145,11 @@
* Added 'NewHostShortNameRegex=', 'NewHostShortNameGroup=',
'NewServiceNameRegex=' and 'NewServiceNameGroup=' parameters
to rd.conf(5).
2017-10-16 Fred Gleason <fredg@paravelsystems.com>
* 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 <dennis.graiani@gmail.com>
the added Segue parameters to the 'Edit Dropbox' dialog.
* Modified the 'Segue Length' control in the 'Edit Dropbox' dialog
to take mS as units.

View File

@ -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')

View File

@ -24,7 +24,7 @@
/*
* Current Database Version
*/
#define RD_VERSION_DATABASE 270
#define RD_VERSION_DATABASE 271
#endif // DBVERSION_H

View File

@ -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 &param,int value) const
{

View File

@ -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 &param,int value) const;

View File

@ -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:

View File

@ -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);

View File

@ -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;
};

View File

@ -1284,6 +1284,18 @@ nastaveném pro běh služby CAE pro naplnění databáze se zdroji zvuku.</tran
files, causing any whose files remain to be imported again.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert Segue Markers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Length:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditEncoder</name>

View File

@ -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.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert Segue Markers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Length:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditEncoder</name>

View File

@ -1278,6 +1278,18 @@ computador para obtener los recursos de audio de dicho equipo.</translation>
files, causing any whose files remain to be imported again.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert Segue Markers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Length:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditEncoder</name>

View File

@ -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.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert Segue Markers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Length:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditEncoder</name>

View File

@ -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.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert Segue Markers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Length:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditEncoder</name>

View File

@ -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.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert Segue Markers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Length:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditEncoder</name>

View File

@ -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.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert Segue Markers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Level:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Segue Length:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditEncoder</name>

View File

@ -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";
}

View File

@ -2,7 +2,7 @@
//
// Revert the Rivendell database schema to an earlier version.
//
// (C) Copyright 2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2016-2017 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
@ -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

View File

@ -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);