2021-07-27 Fred Gleason <fredg@paravelsystems.com>

* Refactored the 'Edit Playout' dialog in rdcatch(1) to improve
	modularity.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-07-27 10:21:08 -04:00
parent 8496b72f13
commit b550143d78
5 changed files with 72 additions and 251 deletions

View File

@ -22082,3 +22082,6 @@
2021-07-20 Fred Gleason <fredg@paravelsystems.com>
* Refactored the 'Edit Switcher Event' dialog in rdcatch(1) to improve
modularity.
2021-07-27 Fred Gleason <fredg@paravelsystems.com>
* Refactored the 'Edit Playout' dialog in rdcatch(1) to improve
modularity.

View File

@ -61,42 +61,13 @@ EditPlayout::EditPlayout(int id,std::vector<int> *adds,QString *filter,
"RDCatch",false,this);
//
// Active Button
// Event Widget
//
edit_active_button=new QCheckBox(this);
edit_active_button->setGeometry(10,11,20,20);
QLabel *label=new QLabel(tr("Event Active"),this);
label->setGeometry(30,11,125,20);
label->setFont(labelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Station
//
edit_station_box=new RDComboBox(this);
//
// FIXME: Make this work with a model
//
// edit_station_model=new RDStationListModel(false,"",this);
// edit_station_box->setModel(edit_station_model);
edit_station_box->setGeometry(200,10,140,23);
label=new QLabel(tr("Location:"),this);
label->setGeometry(125,10,70,23);
label->setFont(labelFont());
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
connect(edit_station_box,SIGNAL(activated(int)),
this,SLOT(activateStationData(int)));
//
// Start Time
//
edit_starttime_edit=new QTimeEdit(this);
edit_starttime_edit->setGeometry(sizeHint().width()-90,12,80,20);
edit_starttime_edit->setDisplayFormat("hh:mm:ss");
label=new QLabel(tr("Start Time:"),this);
label->setGeometry(sizeHint().width()-175,12,80,20);
label->setFont(labelFont());
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
edit_event_widget=new EventWidget(EventWidget::PlayEvent,this);
edit_event_widget->setGeometry(10,11,edit_event_widget->sizeHint().width(),
edit_event_widget->sizeHint().height());
connect(edit_event_widget,SIGNAL(locationChanged(const QString &,int)),
this,SLOT(locationChangedData(const QString &,int)));
//
// Description
@ -104,7 +75,7 @@ EditPlayout::EditPlayout(int id,std::vector<int> *adds,QString *filter,
edit_description_edit=new QLineEdit(this);
edit_description_edit->setGeometry(105,43,sizeHint().width()-115,20);
edit_description_edit->setValidator(validator);
label=new QLabel(tr("Description:"),this);
QLabel *label=new QLabel(tr("Description:"),this);
label->setGeometry(10,43,90,20);
label->setFont(labelFont());
label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -126,81 +97,11 @@ EditPlayout::EditPlayout(int id,std::vector<int> *adds,QString *filter,
connect(button,SIGNAL(clicked()),this,SLOT(selectCutData()));
//
// Button Label
// DOW Selector
//
QGroupBox *groupbox=new QGroupBox(tr("Active Days"),this);
groupbox->setFont(labelFont());
groupbox->setGeometry(10,104,sizeHint().width()-20,62);
//
// Monday Button
//
edit_mon_button=new QCheckBox(this);
edit_mon_button->setGeometry(20,120,20,20);
label=new QLabel(tr("Monday"),this);
label->setGeometry(40,120,115,20);
label->setFont(subLabelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Tuesday Button
//
edit_tue_button=new QCheckBox(this);
edit_tue_button->setGeometry(115,120,20,20);
label=new QLabel(tr("Tuesday"),this);
label->setGeometry(135,120,115,20);
label->setFont(subLabelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Wednesday Button
//
edit_wed_button=new QCheckBox(this);
edit_wed_button->setGeometry(215,120,20,20);
label=new QLabel(tr("Wednesday"),this);
label->setGeometry(235,120,115,20);
label->setFont(subLabelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Thursday Button
//
edit_thu_button=new QCheckBox(this);
edit_thu_button->setGeometry(335,120,20,20);
label=new QLabel(tr("Thursday"),this);
label->setGeometry(355,120,115,20);
label->setFont(subLabelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Friday Button
//
edit_fri_button=new QCheckBox(this);
edit_fri_button->setGeometry(440,120,20,20);
label=new QLabel(tr("Friday"),this);
label->setGeometry(460,120,40,20);
label->setFont(subLabelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Saturday Button
//
edit_sat_button=new QCheckBox(this);
edit_sat_button->setGeometry(130,145,20,20);
label=new QLabel(tr("Saturday"),this);
label->setGeometry(150,145,60,20);
label->setFont(subLabelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
//
// Sunday Button
//
edit_sun_button=new QCheckBox(this);
edit_sun_button->setGeometry(300,145,20,20);
label=new QLabel(tr("Sunday"),this);
label->setGeometry(320,145,60,20);
label->setFont(subLabelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
edit_dow_selector=new DowSelector(this);
edit_dow_selector->setGeometry(10,104,edit_dow_selector->sizeHint().width(),
edit_dow_selector->sizeHint().height());
//
// OneShot Button
@ -246,28 +147,22 @@ EditPlayout::EditPlayout(int id,std::vector<int> *adds,QString *filter,
//
// Populate Data
//
PopulateDecks(edit_station_box);
edit_active_button->setChecked(edit_recording->isActive());
edit_starttime_edit->setTime(edit_recording->startTime());
edit_event_widget->fromRecording(edit_recording->id());
edit_description_edit->setText(edit_recording->description());
edit_cutname=edit_recording->cutName();
edit_destination_edit->setText(RDCutPath(edit_cutname));
edit_mon_button->setChecked(edit_recording->mon());
edit_tue_button->setChecked(edit_recording->tue());
edit_wed_button->setChecked(edit_recording->wed());
edit_thu_button->setChecked(edit_recording->thu());
edit_fri_button->setChecked(edit_recording->fri());
edit_sat_button->setChecked(edit_recording->sat());
edit_sun_button->setChecked(edit_recording->sun());
edit_dow_selector->fromRecording(edit_recording->id());
edit_oneshot_box->setChecked(edit_recording->oneShot());
activateStationData(edit_station_box->currentIndex(),false);
locationChangedData(edit_event_widget->stationName(),
edit_event_widget->deckNumber());
}
EditPlayout::~EditPlayout()
{
delete edit_cut_dialog;
delete edit_station_box;
delete edit_event_widget;
delete edit_dow_selector;
if(edit_deck!=NULL) {
delete edit_deck;
}
@ -286,16 +181,12 @@ QSizePolicy EditPlayout::sizePolicy() const
}
void EditPlayout::activateStationData(int id,bool use_temp)
void EditPlayout::locationChangedData(const QString &station,int decknum)
{
if(edit_station_box->currentText().isEmpty()) {
return;
}
QStringList f0=edit_station_box->currentText().split(":");
if(edit_deck!=NULL) {
delete edit_deck;
}
edit_deck=new RDDeck(f0[0].trimmed(),f0[1].toInt());
edit_deck=new RDDeck(station,decknum);
}
@ -351,70 +242,12 @@ void EditPlayout::closeEvent(QCloseEvent *e)
}
void EditPlayout::PopulateDecks(QComboBox *box)
{
int count=0;
box->clear();
QString sql=QString("select ")+
"`STATION_NAME`,"+ // 00
"`CHANNEL` "+ // 01
"from `DECKS` where "+
"(`CARD_NUMBER`!=-1)&&"+
"(`PORT_NUMBER`!=-1)&&"+
"(`CHANNEL`>128) order by `STATION_NAME`,`CHANNEL`";
RDSqlQuery *q=new RDSqlQuery(sql);
while(q->next()) {
box->insertItem(box->count(),q->value(0).toString()+
QString().sprintf(" : %dP",q->value(1).toInt()-128));
if((q->value(0).toString()==edit_recording->station())&&
(q->value(1).toUInt()==edit_recording->channel())) {
box->setCurrentIndex(count);
}
count++;
}
if(q->size()>0) {
if(edit_deck!=NULL) {
delete edit_deck;
}
q->first();
edit_deck=new RDDeck(q->value(0).toString(),q->value(1).toUInt());
}
delete q;
}
void EditPlayout::Save()
{
int chan=-1;
QString station=GetLocation(&chan);
edit_recording->setIsActive(edit_active_button->isChecked());
edit_recording->setStation(station);
edit_event_widget->toRecording(edit_recording->id());
edit_recording->setType(RDRecording::Playout);
edit_recording->setChannel(chan+128);
if(edit_starttime_edit->time().isNull()) {
edit_recording->setStartTime(edit_starttime_edit->time().addMSecs(1));
}
else {
edit_recording->setStartTime(edit_starttime_edit->time());
}
edit_recording->setDescription(edit_description_edit->text());
edit_recording->setCutName(edit_cutname);
edit_recording->setMon(edit_mon_button->isChecked());
edit_recording->setTue(edit_tue_button->isChecked());
edit_recording->setWed(edit_wed_button->isChecked());
edit_recording->setThu(edit_thu_button->isChecked());
edit_recording->setFri(edit_fri_button->isChecked());
edit_recording->setSat(edit_sat_button->isChecked());
edit_recording->setSun(edit_sun_button->isChecked());
edit_dow_selector->toRecording(edit_recording->id());
edit_recording->setOneShot(edit_oneshot_box->isChecked());
}
QString EditPlayout::GetLocation(int *chan) const
{
QStringList f0=edit_station_box->currentText().split(":");
*chan=
f0[1].trimmed().left(f0[1].trimmed().length()-1).toInt();
return f0[0].trimmed();
}

View File

@ -31,6 +31,9 @@
#include <rdrecording.h>
#include <rdstationlistmodel.h>
#include "eventwidget.h"
#include "dowselector.h"
class EditPlayout : public RDDialog
{
Q_OBJECT
@ -41,7 +44,7 @@ class EditPlayout : public RDDialog
QSizePolicy sizePolicy() const;
private slots:
void activateStationData(int,bool use_temp=true);
void locationChangedData(const QString &station,int decknum);
void selectCutData();
void saveasData();
void okData();
@ -52,31 +55,19 @@ class EditPlayout : public RDDialog
void closeEvent(QCloseEvent *e);
private:
void PopulateDecks(QComboBox *box);
void Save();
QString GetLocation(int *chan) const;
RDDeck *edit_deck;
RDCutDialog *edit_cut_dialog;
RDRecording *edit_recording;
QCheckBox *edit_active_button;
RDComboBox *edit_station_box;
// RDStationListModel *edit_station_model;
QTimeEdit *edit_starttime_edit;
EventWidget *edit_event_widget;
DowSelector *edit_dow_selector;
QLineEdit *edit_description_edit;
QString edit_cutname;
QLineEdit *edit_destination_edit;
QCheckBox *edit_sun_button;
QCheckBox *edit_mon_button;
QCheckBox *edit_tue_button;
QCheckBox *edit_wed_button;
QCheckBox *edit_thu_button;
QCheckBox *edit_fri_button;
QCheckBox *edit_sat_button;
QCheckBox *edit_oneshot_box;
std::vector<int> *edit_added_events;
QString *edit_filter;
};
#endif
#endif // EDIT_PLAYOUT_H

View File

@ -66,6 +66,24 @@ EventWidget::EventWidget(EventWidget::EventType type,QWidget *parent)
break;
case EventWidget::PlayEvent:
d_location_box->clear();
sql=QString("select ")+
"`STATION_NAME`,"+ // 00
"`CHANNEL` "+ // 01
"from `DECKS` where "+
"(`CARD_NUMBER`!=-1)&&"+
"(`PORT_NUMBER`!=-1)&&"+
"(`CHANNEL`>128) order by `STATION_NAME`,`CHANNEL`";
q=new RDSqlQuery(sql);
while(q->next()) {
d_location_box->
insertItem(d_location_box->count(),
q->value(0).toString()+
QString().sprintf(" : %dP",q->value(1).toInt()-128),
q->value(0).toString()+"\t"+
QString().sprintf("%d",q->value(1).toInt()-128));
}
delete q;
break;
case EventWidget::OtherEvent:
@ -126,8 +144,20 @@ void EventWidget::toRecording(unsigned record_id) const
"`IS_ACTIVE`='"+RDYesNo(d_state_check->isChecked())+"',"+
"`STATION_NAME`='"+RDEscapeString(d_current_station_name)+"',"+
"`START_TIME`='"+
RDEscapeString(d_time_edit->time().toString("hh:mm:ss"))+"' "+
"where "+
RDEscapeString(d_time_edit->time().toString("hh:mm:ss"))+"' ";
switch(d_event_type) {
case EventWidget::RecordEvent:
sql+=QString().sprintf(",`CHANNEL`=%u ",d_current_deck_number);
break;
case EventWidget::PlayEvent:
sql+=QString().sprintf(",`CHANNEL`=%u ",d_current_deck_number+128);
break;
case EventWidget::OtherEvent:
break;
}
sql+="where "+
QString().sprintf("`ID`=%u",record_id);
RDSqlQuery::apply(sql);
}
@ -148,9 +178,17 @@ void EventWidget::fromRecording(unsigned record_id)
d_time_edit->setTime(q->value(3).toTime());
switch(d_event_type) {
case EventWidget::RecordEvent:
d_location_box->
setCurrentText(q->value(1).toString()+
QString().sprintf(" : %uR",q->value(2).toUInt()));
break;
case EventWidget::PlayEvent:
d_location_box->
setCurrentText(q->value(1).toString()+
QString().sprintf(" : %uP",q->value(2).toUInt()-128));
d_current_station_name=q->value(1).toString();
d_current_deck_number=q->value(2).toUInt()-128;
break;
case EventWidget::OtherEvent:
@ -176,7 +214,7 @@ void EventWidget::locationActivatedData(const QString &str)
case 2:
d_current_station_name=f0.at(0).trimmed();
d_current_deck_number=f0.at(1).toInt()-1;
d_current_deck_number=f0.at(1).left(f0.at(1).length()-1).toInt();
emit locationChanged(d_current_station_name,d_current_deck_number);
break;
}

View File

@ -275,18 +275,6 @@ New</source>
<source>Edit Playout</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Event Active</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Location:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Start Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Description:</source>
<translation type="unfinished"></translation>
@ -295,38 +283,6 @@ New</source>
<source>Destination:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Active Days</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Monday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tuesday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wednesday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Thursday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Friday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Saturday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sunday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Make OneShot</source>
<translation type="unfinished"></translation>