diff --git a/ChangeLog b/ChangeLog index ebc15464..3981b5c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22082,3 +22082,6 @@ 2021-07-20 Fred Gleason * Refactored the 'Edit Switcher Event' dialog in rdcatch(1) to improve modularity. +2021-07-27 Fred Gleason + * Refactored the 'Edit Playout' dialog in rdcatch(1) to improve + modularity. diff --git a/rdcatch/edit_playout.cpp b/rdcatch/edit_playout.cpp index d9d33b81..46405558 100644 --- a/rdcatch/edit_playout.cpp +++ b/rdcatch/edit_playout.cpp @@ -61,42 +61,13 @@ EditPlayout::EditPlayout(int id,std::vector *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 *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 *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 *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(); -} diff --git a/rdcatch/edit_playout.h b/rdcatch/edit_playout.h index 2b1d043a..1ff7e8ce 100644 --- a/rdcatch/edit_playout.h +++ b/rdcatch/edit_playout.h @@ -31,6 +31,9 @@ #include #include +#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 *edit_added_events; QString *edit_filter; }; -#endif - +#endif // EDIT_PLAYOUT_H diff --git a/rdcatch/eventwidget.cpp b/rdcatch/eventwidget.cpp index 0845598b..9cd94054 100644 --- a/rdcatch/eventwidget.cpp +++ b/rdcatch/eventwidget.cpp @@ -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; } diff --git a/rdcatch/rdcatch_fr.ts b/rdcatch/rdcatch_fr.ts index 564e1a24..a4d1bb92 100644 --- a/rdcatch/rdcatch_fr.ts +++ b/rdcatch/rdcatch_fr.ts @@ -275,18 +275,6 @@ New Edit Playout - - Event Active - - - - Location: - - - - Start Time: - - Description: @@ -295,38 +283,6 @@ New Destination: - - Active Days - - - - Monday - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - Make OneShot