diff --git a/ChangeLog b/ChangeLog index 563921d0..1cc4898b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24142,3 +24142,6 @@ title field in the 'Edit Clock' dialog to be incorrect. 2023-05-19 Fred Gleason * Added a formal video display resolution requirement to 'INSTALL'. +2023-05-19 Fred Gleason + * Refactored the 'Editing Event' dialog in rdlogmanager(1) to be + resizeable. diff --git a/rdlogmanager/Makefile.am b/rdlogmanager/Makefile.am index 5a7f2330..acdea84d 100644 --- a/rdlogmanager/Makefile.am +++ b/rdlogmanager/Makefile.am @@ -1,6 +1,6 @@ ## Makefile.am ## -## (C) Copyright 2002-2021 Fred Gleason +## (C) Copyright 2002-2023 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 @@ -53,6 +53,7 @@ dist_rdlogmanager_SOURCES = add_clock.cpp add_clock.h\ edit_schedcoderules.cpp edit_schedcoderules.h\ edit_track.cpp edit_track.h\ eventlistmodel.cpp eventlistmodel.h\ + eventwidget.cpp eventwidget.h\ generate_log.cpp generate_log.h\ importcartsmodel.cpp importcartsmodel.h\ importcartsview.cpp importcartsview.h\ @@ -84,6 +85,7 @@ nodist_rdlogmanager_SOURCES = moc_add_clock.cpp\ moc_edit_schedcoderules.cpp\ moc_edit_track.cpp\ moc_eventlistmodel.cpp\ + moc_eventwidget.cpp\ moc_generate_log.cpp\ moc_importcartsmodel.cpp\ moc_importcartsview.cpp\ diff --git a/rdlogmanager/edit_event.cpp b/rdlogmanager/edit_event.cpp index b982e259..ad61152c 100644 --- a/rdlogmanager/edit_event.cpp +++ b/rdlogmanager/edit_event.cpp @@ -49,7 +49,6 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, // Fix the Window Size // setMinimumSize(sizeHint()); - setMaximumSize(sizeHint()); // ******************************* // Library Section @@ -59,22 +58,16 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, // event_lib_filter_edit=new QLineEdit(this); if(rda->station()->filterMode()==RDStation::FilterAsynchronous) { - event_lib_filter_edit->setGeometry(55,2,CENTER_LINE-135,20); connect(event_lib_filter_edit,SIGNAL(returnPressed()), this,SLOT(searchData())); } - else { - event_lib_filter_edit->setGeometry(55,2,CENTER_LINE-70,20); - } connect(event_lib_filter_edit,SIGNAL(textChanged(const QString &)), this,SLOT(filterChangedData(const QString &))); - QLabel *label=new QLabel(tr("Filter:"),this); - label->setFont(labelFont()); - label->setGeometry(5,2,45,20); - label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); + event_lib_filter_label=new QLabel(tr("Filter:"),this); + event_lib_filter_label->setFont(labelFont()); + event_lib_filter_label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); event_search_button=new QPushButton(tr("Search"),this); event_search_button->setFont(subButtonFont()); - event_search_button->setGeometry(CENTER_LINE-70,2,60,20); event_search_button->setDisabled(true); connect(event_search_button,SIGNAL(clicked()),this,SLOT(searchData())); event_search_button-> @@ -84,16 +77,14 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, // Group Filter // event_group_box=new QComboBox(this); - event_group_box->setGeometry(55,25,CENTER_LINE-70,20); event_group_model=new RDGroupListModel(true,false,false,this); event_group_model->changeUser(); event_group_box->setModel(event_group_model); connect(event_group_box,SIGNAL(activated(const QString &)), this,SLOT(filterActivatedData(const QString &))); - label=new QLabel(tr("Group:"),this); - label->setFont(labelFont()); - label->setGeometry(5,25,45,20); - label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); + event_group_label=new QLabel(tr("Group:"),this); + event_group_label->setFont(labelFont()); + event_group_label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); // // Type Filter @@ -101,36 +92,29 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, event_lib_type_group=new QButtonGroup(this); connect(event_lib_type_group,SIGNAL(buttonClicked(int)), this,SLOT(filterClickedData(int))); - QRadioButton *rbutton=new QRadioButton(this); - rbutton->setGeometry(55,55,15,15); - event_lib_type_group->addButton(rbutton,0); - label=new QLabel(tr("All"),this); - label->setFont(labelFont()); - label->setGeometry(75,55,30,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - rbutton->setChecked(true); + event_lib_type_none_radio=new QRadioButton(this); + event_lib_type_group->addButton(event_lib_type_none_radio,0); + event_lib_type_none_label=new QLabel(tr("All"),this); + event_lib_type_none_label->setFont(labelFont()); + event_lib_type_none_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_lib_type_none_radio->setChecked(true); - rbutton=new QRadioButton(this); - rbutton->setGeometry(125,55,15,15); - event_lib_type_group->addButton(rbutton,1); - label=new QLabel(tr("Audio Only"),this); - label->setFont(labelFont()); - label->setGeometry(145,55,80,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_lib_type_audio_radio=new QRadioButton(this); + event_lib_type_group->addButton(event_lib_type_audio_radio,1); + event_lib_type_audio_label=new QLabel(tr("Audio Only"),this); + event_lib_type_audio_label->setFont(labelFont()); + event_lib_type_audio_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - rbutton=new QRadioButton(this); - rbutton->setGeometry(235,55,15,15); - event_lib_type_group->addButton(rbutton,2); - label=new QLabel(tr("Macros Only"),this); - label->setFont(labelFont()); - label->setGeometry(255,55,80,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_lib_type_macro_radio=new QRadioButton(this); + event_lib_type_group->addButton(event_lib_type_macro_radio,2); + event_lib_type_macro_label=new QLabel(tr("Macros Only"),this); + event_lib_type_macro_label->setFont(labelFont()); + event_lib_type_macro_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); // // Cart List // event_lib_view=new LibraryTableView(this); - event_lib_view->setGeometry(10,80,CENTER_LINE-20,sizeHint().height()-300); event_lib_view->setDragEnabled(true); event_lib_model=new RDLibraryModel(this); event_lib_model->setFont(font()); @@ -149,14 +133,13 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, // Empty Cart Source // event_empty_cart=new RDEmptyCart(this); - event_empty_cart->setGeometry(CENTER_LINE-227,sizeHint().height()-202,32,32); // // Cart Player // QString sql; RDSqlQuery *q; - event_player = NULL; + event_player=NULL; sql=QString("select ")+ "`OUTPUT_CARD`,"+ // 00 "`OUTPUT_PORT`,"+ // 01 @@ -170,10 +153,6 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, new RDSimplePlayer(rda->cae(),rda->ripc(),q->value(0).toInt(), q->value(1).toInt(),q->value(2).toUInt(), q->value(3).toUInt(),this); - event_player->playButton()-> - setGeometry(CENTER_LINE-180,sizeHint().height()-210,80,50); - event_player-> - stopButton()->setGeometry(CENTER_LINE-90,sizeHint().height()-210,80,50); event_player->stopButton()->setOnColor(Qt::red); } delete q; @@ -182,537 +161,50 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, // Remarks // event_remarks_edit=new QTextEdit(this); - event_remarks_edit-> - setGeometry(10,sizeHint().height()-150,CENTER_LINE-20,140); event_remarks_edit->setAcceptRichText(false); - label=new QLabel(tr("USER NOTES"),this); - label->setFont(labelFont()); - label->setGeometry(15,sizeHint().height()-165,100,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_remarks_label=new QLabel(tr("USER NOTES"),this); + event_remarks_label->setFont(labelFont()); + event_remarks_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); // // Load Group List // RefreshLibrary(); - // ******************************* - // Pre-Position Log Section - // ******************************* - event_position_group=new QGroupBox(tr("PRE-POSITION LOG"),this); - event_position_group->setFont(labelFont()); - event_position_group-> - setGeometry(CENTER_LINE+10,1,sizeHint().width()-CENTER_LINE-15,43); - - event_position_box=new QCheckBox(this); - event_position_box->setGeometry(CENTER_LINE+15,21,15,22); - // event_position_box->setGeometry(CENTER_LINE+15,19,15,22); - connect(event_position_box,SIGNAL(toggled(bool)), - this,SLOT(prepositionToggledData(bool))); - event_position_label=new QLabel(tr("Cue to this event"),this); - event_position_label->setFont(labelFont()); - event_position_label->setGeometry(CENTER_LINE+35,20,150,22); - event_position_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - event_position_edit=new QTimeEdit(this); - event_position_edit->setGeometry(CENTER_LINE+144,20,60,22); - event_position_edit->setDisplayFormat("mm:ss"); - event_position_unit=new QLabel(tr("before scheduled start. (First cart will have a STOP transition.)"), - this); - event_position_unit->setFont(labelFont()); - event_position_unit->setGeometry(CENTER_LINE+212,21, - sizeHint().width()-CENTER_LINE-227,22); - event_position_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - // ******************************* - // Timed Start Section - // ******************************* - event_timetype_group=new QGroupBox(tr("TIMED START"),this); - event_timetype_group->setFont(labelFont()); - event_timetype_group-> - setGeometry(CENTER_LINE+10,49,sizeHint().width()-CENTER_LINE-15,66); - // - // Time Type + // Properties Section // - event_timetype_check=new QCheckBox(this); - event_timetype_check->setGeometry(CENTER_LINE+15,70,15,15); - event_timetype_label=new QLabel(tr("Use hard start time"),this); - event_timetype_label->setGeometry(CENTER_LINE+35,69,120,16); - event_timetype_label->setFont(labelFont()); - event_timetype_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); - - // - // Grace Time - // - event_grace_groupbox= - new QGroupBox(tr("Action If Previous Event Still Playing"),this); - event_grace_groupbox->setFont(labelFont()); - event_grace_groupbox-> - setGeometry(CENTER_LINE+170,69,sizeHint().width()-CENTER_LINE-200,42); - event_grace_group=new QButtonGroup(this); - event_immediate_button=new QRadioButton(tr("Start immediately"),this); - event_immediate_button->setGeometry(CENTER_LINE+180,92,160,15); - event_immediate_button->setFont(subLabelFont()); - event_grace_group->addButton(event_immediate_button,0); - event_next_button=new QRadioButton(tr("Make next"),this); - event_next_button->setGeometry(CENTER_LINE+320,92,160,15); - event_next_button->setFont(subLabelFont()); - event_grace_group->addButton(event_next_button,1); - event_wait_button=new QRadioButton(tr("Wait up to"),this); - event_wait_button->setGeometry(CENTER_LINE+430,92,160,15); - event_wait_button->setFont(subLabelFont()); - event_grace_group->addButton(event_wait_button,2); - - event_grace_edit=new QTimeEdit(this); - event_grace_edit->setGeometry(CENTER_LINE+510,89,60,20); - event_grace_edit->setDisplayFormat("mm:ss"); - connect(event_timetype_check,SIGNAL(toggled(bool)), - this,SLOT(timeToggledData(bool))); - connect(event_grace_group,SIGNAL(buttonClicked(int)), - this,SLOT(graceClickedData(int))); - - // ******************************* - // Transitions Section - // ******************************* - event_transitions_group=new QGroupBox(tr("TRANSITIONS"),this); - event_transitions_group->setFont(labelFont()); - event_transitions_group-> - setGeometry(CENTER_LINE+10,120,sizeHint().width()-CENTER_LINE-15,63); - - // - // First Cart Transition Type - // - event_firsttrans_label= - new QLabel(tr("First cart has a"),this); - event_firsttrans_label->setFont(labelFont()); - event_firsttrans_label-> - setGeometry(CENTER_LINE+15,140, - labelFontMetrics()->width(event_firsttrans_label->text()+" "), - 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(), - 140,90,20); - event_firsttrans_box->insertItem(0,tr("Play")); - event_firsttrans_box->insertItem(1,tr("Segue")); - event_firsttrans_box->insertItem(2,tr("Stop")); - event_firsttrans_unit=new QLabel("transition.",this); - event_firsttrans_unit->setFont(labelFont()); - event_firsttrans_unit-> - setGeometry(event_firsttrans_box->geometry().x()+ - event_firsttrans_box->geometry().width()+5,140, - labelFontMetrics()->width(tr("transition.")),20); - event_firsttrans_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - connect(event_firsttrans_box,SIGNAL(activated(int)), - this,SLOT(timeTransitionData(int))); - - // - // Default Transition Type - // - event_defaulttrans_label=new QLabel(tr("Imported carts have a"),this); - event_defaulttrans_label->setFont(labelFont()); - event_defaulttrans_label-> - setGeometry(CENTER_LINE+15,161, - labelFontMetrics()->width(event_defaulttrans_label->text()+" "), - 20); - event_defaulttrans_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - event_defaulttrans_box=new QComboBox(this); - event_defaulttrans_box-> - setGeometry(event_defaulttrans_label->geometry().x()+ - event_defaulttrans_label->geometry().width(),161,90,20); - event_defaulttrans_box->insertItem(0,tr("Play")); - event_defaulttrans_box->insertItem(1,tr("Segue")); - event_defaulttrans_box->insertItem(2,tr("Stop")); - event_defaulttrans_unit=new QLabel(tr("transition."),this); - event_defaulttrans_unit->setFont(labelFont()); - event_defaulttrans_unit-> - setGeometry(event_defaulttrans_box->geometry().x()+ - event_defaulttrans_box->geometry().width()+5,161, - labelFontMetrics()->width(tr("transition.")),20); - event_defaulttrans_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - // ******************************* - // Enforcing Length Section - // ******************************* - event_autofill_group=new QGroupBox(tr("ENFORCING LENGTH"),this); - event_autofill_group->setFont(labelFont()); - event_autofill_group-> - setGeometry(CENTER_LINE+10,188,sizeHint().width()-CENTER_LINE-15,43); - - event_autofill_box=new QCheckBox(this); - event_autofill_box->setGeometry(CENTER_LINE+15,210,15,15); - connect(event_autofill_box,SIGNAL(toggled(bool)), - this,SLOT(autofillToggledData(bool))); - label=new QLabel(tr("Use AutoFill"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+35,210,150,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - event_autofill_slop_box=new QCheckBox(this); - event_autofill_slop_box->setGeometry(CENTER_LINE+210,210,15,15); - connect(event_autofill_slop_box,SIGNAL(toggled(bool)), - this,SLOT(autofillWarnToggledData(bool))); - event_autofill_slop_label1= - new QLabel(tr("Warn if fill is over or under"),this); - event_autofill_slop_label1->setFont(labelFont()); - event_autofill_slop_label1-> - setGeometry(CENTER_LINE+230,210, - labelFontMetrics()->width(event_autofill_slop_label1->text()), - 15); - event_autofill_slop_label1->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); - - event_autofill_slop_edit=new QTimeEdit(this); - event_autofill_slop_edit->setDisplayFormat("mm:ss"); - event_autofill_slop_label=new QLabel(tr("by at least")+" ",this); - event_autofill_slop_label-> - setGeometry(event_autofill_slop_label1->geometry().x()+ - event_autofill_slop_label1->geometry().width(),210, - labelFontMetrics()->width(event_autofill_slop_label->text()+" "),15); - event_autofill_slop_edit-> - setGeometry(event_autofill_slop_label->geometry().x()+ - event_autofill_slop_label->geometry().width(),207,60,22); - event_autofill_slop_label->setFont(labelFont()); - event_autofill_slop_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - - event_timescale_box=new QCheckBox(this); - event_timescale_box->setGeometry(CENTER_LINE+250,210,15,15); - label=new QLabel(tr("Use Timescaling"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+270,214,150,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - event_timescale_box->hide(); - label->hide(); - - // ******************************* - // Cart Stack Section - // ******************************* - event_stack_group=new QGroupBox(tr("CART STACK"),this); - event_stack_group->setFont(labelFont()); - event_stack_group-> - setGeometry(CENTER_LINE+10,235,sizeHint().width()-CENTER_LINE-15,408); - // - // Pre-Import Carts Section - // - label=new QLabel(tr("PRE-IMPORT CARTS"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+15,255,200,16); - - // - // Pre-Import Carts List - // - event_preimport_length_edit=new QLineEdit(this); - event_preimport_length_edit->setGeometry(sizeHint().width()-140,253,80,20); - event_preimport_length_edit->setReadOnly(true); - label=new QLabel(tr("Len:"),this); - label->setFont(labelFont()); - label->setGeometry(sizeHint().width()-330,255,185,16); - label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); - - event_preimport_view=new ImportCartsView(this); - event_preimport_view->setGeometry(CENTER_LINE+15,272, - sizeHint().width()-CENTER_LINE-75,115); - event_preimport_view->setDragEnabled(true); - event_preimport_model= - new ImportCartsModel(event_name,ImportCartsModel::PreImport,true,this); - event_preimport_model->setFont(font()); - event_preimport_model->setPalette(palette()); - event_preimport_view->setModel(event_preimport_model); - connect(event_preimport_view->selectionModel(), - SIGNAL(selectionChanged(const QItemSelection &,const QItemSelection &)), - this, - SLOT(selectionChangedData(const QItemSelection &, - const QItemSelection &))); - connect(event_preimport_model,SIGNAL(modelReset()), - event_preimport_view,SLOT(resizeColumnsToContents())); - connect(event_preimport_view,SIGNAL(cartDropped(int,RDLogLine *)), - event_preimport_model,SLOT(processCartDrop(int,RDLogLine *))); - connect(event_preimport_model,SIGNAL(totalLengthChanged(int)), - this,SLOT(preimportLengthChangedData(int))); - event_preimport_view->resizeColumnsToContents(); - preimportLengthChangedData(event_preimport_model->totalLength()); - - event_preimport_up_button=new RDTransportButton(RDTransportButton::Up,this); - event_preimport_up_button->setGeometry(sizeHint().width()-50,277,40,40); - connect(event_preimport_up_button,SIGNAL(clicked()), - this,SLOT(preimportUpData())); - event_preimport_down_button= - new RDTransportButton(RDTransportButton::Down,this); - event_preimport_down_button->setGeometry(sizeHint().width()-50,342,40,40); - connect(event_preimport_down_button,SIGNAL(clicked()), - this,SLOT(preimportDownData())); - - // - // Imports - // - label=new QLabel(tr("IMPORT"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+15,392,200,16); - - event_source_group=new QButtonGroup(this); - connect(event_source_group,SIGNAL(buttonClicked(int)), - this,SLOT(importClickedData(int))); - rbutton=new QRadioButton(this); - event_source_group->addButton(rbutton,RDEventLine::None); - rbutton->setGeometry(CENTER_LINE+80,392,15,15); - label=new QLabel(tr("None"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+100,392,150,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - rbutton=new QRadioButton(this); - event_source_group->addButton(rbutton,RDEventLine::Traffic); - rbutton->setGeometry(CENTER_LINE+160,392,15,15); - label=new QLabel(tr("From Traffic"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+180,392,150,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - rbutton=new QRadioButton(this); - rbutton->setGeometry(CENTER_LINE+280,392,15,15); - event_source_group->addButton(rbutton,RDEventLine::Music); - label=new QLabel(tr("From Music"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+300,392,150,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - rbutton=new QRadioButton(this); - rbutton->setGeometry(CENTER_LINE+400,392,15,15); - event_source_group->addButton(rbutton,RDEventLine::Scheduler); - label=new QLabel(tr("Select from:"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+420,392,150,15); - label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - // - // Scheduler Group - // - event_sched_group_box=new RDComboBox(this); - event_sched_group_box->setGeometry(CENTER_LINE+510,389,100,20); - QString sql2="select `NAME` from `GROUPS` order by `NAME`"; - RDSqlQuery *q2=new RDSqlQuery(sql2); - while(q2->next()) { - event_sched_group_box->insertItem(q2->value(0).toString()); - } - delete q2; - - // - // Artist Separation SpinBox - // - event_artist_sep_label=new QLabel(tr("Artist Separation"),this); - event_artist_sep_label->setFont(defaultFont()); - event_artist_sep_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - event_artist_sep_label->setGeometry(CENTER_LINE+410,412,100,20); - - event_artist_sep_spinbox=new QSpinBox(this); - event_artist_sep_spinbox->setGeometry(CENTER_LINE+515,413,53,20); - event_artist_sep_spinbox->setMinimum( -1 ); - event_artist_sep_spinbox->setMaximum( 50000 ); - event_artist_sep_spinbox->setSpecialValueText("None"); - - event_artist_none_button=new QPushButton(this); - event_artist_none_button->setGeometry(CENTER_LINE+575,413,40,20); - event_artist_none_button->setFont(subButtonFont()); - event_artist_none_button->setText(tr("None")); - connect(event_artist_none_button,SIGNAL(clicked()),this,SLOT(artistData())); - - // - // Title Separation SpinBox - // - event_title_sep_label=new QLabel(tr("Title Separation"),this); - event_title_sep_label->setFont(defaultFont()); - event_title_sep_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - event_title_sep_label->setGeometry(CENTER_LINE+410,434,100,20); - - event_title_sep_spinbox=new QSpinBox(this); - event_title_sep_spinbox->setGeometry(CENTER_LINE+515,434,53,20); - event_title_sep_spinbox->setMinimum( -1 ); - event_title_sep_spinbox->setMaximum( 50000 ); - event_title_sep_spinbox->setSpecialValueText("None"); - - event_title_none_button=new QPushButton(this); - event_title_none_button->setGeometry(CENTER_LINE+575,434,40,20); - event_title_none_button->setFont(subButtonFont()); - event_title_none_button->setText(tr("None")); - connect(event_title_none_button,SIGNAL(clicked()),this,SLOT(titleData())); - - // - // Must have code.. - // - event_have_code_label=new QLabel(tr("Must have code"),this); - event_have_code_label->setFont(defaultFont()); - event_have_code_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - event_have_code_label->setGeometry(CENTER_LINE+410,457,100,20); - - event_have_code_box=new RDComboBox(this); - event_have_code_box->setGeometry(CENTER_LINE+515,457,100,20); - - // - // And code - // - event_have_code2_label=new QLabel(tr("and code"),this); - event_have_code2_label->setFont(defaultFont()); - event_have_code2_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); - event_have_code2_label->setGeometry(CENTER_LINE+410,478,100,20); - - event_have_code2_box=new RDComboBox(this); - event_have_code2_box->setGeometry(CENTER_LINE+515,478,100,20); - - // - // Fill scheduler codes - // - event_have_code_box->insertItem(tr("[None]")); - event_have_code2_box->insertItem(tr("[None]")); - - sql2="select `CODE` from `SCHED_CODES` order by `CODE`"; - q2=new RDSqlQuery(sql2); - while(q2->next()) { - event_have_code_box->insertItem(q2->value(0).toString()); - event_have_code2_box->insertItem(q2->value(0).toString()); - } - delete q2; - - // - // Start Slop Time - // - event_startslop_label=new QLabel(tr("Import carts scheduled"),this); - event_startslop_label->setFont(defaultFont()); - event_startslop_label->setGeometry(CENTER_LINE+30,413,140,22); - event_startslop_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - event_startslop_edit=new QTimeEdit(this); - event_startslop_edit->setGeometry(CENTER_LINE+166,413,60,22); - event_startslop_edit->setDisplayFormat("mm:ss"); - event_startslop_unit=new QLabel(tr("prior to the start of this event."),this); - event_startslop_unit->setFont(defaultFont()); - event_startslop_unit->setGeometry(CENTER_LINE+230,413, - sizeHint().width()-CENTER_LINE-450,22); - event_startslop_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - // - // End Slop Time - // - event_endslop_label=new QLabel(tr("Import carts scheduled"),this); - event_endslop_label->setFont(defaultFont()); - event_endslop_label->setGeometry(CENTER_LINE+30,434,140,22); - event_endslop_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - event_endslop_edit=new QTimeEdit(this); - event_endslop_edit->setGeometry(CENTER_LINE+166,434,60,22); - event_endslop_edit->setDisplayFormat("mm:ss"); - event_endslop_unit=new QLabel(tr("after the end of this event."),this); - event_endslop_unit->setFont(defaultFont()); - event_endslop_unit->setGeometry(CENTER_LINE+230,434, - sizeHint().width()-CENTER_LINE-460,22); - event_endslop_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - - // - // Nested Event - // - event_nestevent_label=new QLabel(tr("Import inline traffic event"),this); - event_nestevent_label->setFont(defaultFont()); - event_nestevent_label->setGeometry(CENTER_LINE+35,459,190,20); - event_nestevent_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); - event_nestevent_box=new QComboBox(this); - event_nestevent_box->setGeometry(CENTER_LINE+30,478,365,20); - event_nestevent_box->insertItem(0,tr("[none]")); - - // - // Post-Import Carts Section - // - label=new QLabel(tr("POST-IMPORT CARTS"),this); - label->setFont(labelFont()); - label->setGeometry(CENTER_LINE+15,510,200,16); - - // - // Post-Import Carts List - // - event_postimport_length_edit=new QLineEdit(this); - event_postimport_length_edit->setGeometry(sizeHint().width()-140,506,80,20); - event_postimport_length_edit->setReadOnly(true); - label=new QLabel(tr("Len:"),this); - label->setFont(labelFont()); - label->setGeometry(sizeHint().width()-330,508,185,16); - label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); - - event_postimport_view=new ImportCartsView(this); - event_postimport_view->setGeometry(CENTER_LINE+15,525, - sizeHint().width()-CENTER_LINE-75,125-10); - event_postimport_view->setDragEnabled(true); - event_postimport_model= - new ImportCartsModel(event_name,ImportCartsModel::PostImport,false,this); - event_postimport_model->setFont(font()); - event_postimport_model->setPalette(palette()); - event_postimport_view->setModel(event_postimport_model); - connect(event_postimport_view->selectionModel(), - SIGNAL(selectionChanged(const QItemSelection &,const QItemSelection &)), - this, - SLOT(selectionChangedData(const QItemSelection &, - const QItemSelection &))); - connect(event_postimport_model,SIGNAL(modelReset()), - event_postimport_view,SLOT(resizeColumnsToContents())); - connect(event_postimport_view,SIGNAL(cartDropped(int,RDLogLine *)), - event_postimport_model,SLOT(processCartDrop(int,RDLogLine *))); - connect(event_postimport_model,SIGNAL(totalLengthChanged(int)), - this,SLOT(postimportLengthChangedData(int))); - event_postimport_view->resizeColumnsToContents(); - postimportLengthChangedData(event_postimport_model->totalLength()); - - /* - event_postimport_up_button=new RDTransportButton(RDTransportButton::Up,this); - event_postimport_up_button->setGeometry(sizeHint().width()-50,275,40,40); - connect(event_postimport_up_button,SIGNAL(clicked()), - this,SLOT(postimportUpData())); - event_postimport_down_button= - new RDTransportButton(RDTransportButton::Down,this); - event_postimport_down_button->setGeometry(sizeHint().width()-50,340,40,40); - connect(event_postimport_down_button,SIGNAL(clicked()), - this,SLOT(postimportDownData())); - */ - event_postimport_up_button= - new RDTransportButton(RDTransportButton::Up,this); - event_postimport_up_button->setGeometry(sizeHint().width()-50,532,40,40); - connect(event_postimport_up_button,SIGNAL(clicked()), - this,SLOT(postimportUpData())); - event_postimport_down_button= - new RDTransportButton(RDTransportButton::Down,this); - event_postimport_down_button->setGeometry(sizeHint().width()-50,592,40,40); - connect(event_postimport_down_button,SIGNAL(clicked()), - this,SLOT(postimportDownData())); + event_widget=new EventWidget(this); // // Save Button // - QPushButton *button=new QPushButton(this); - button->setGeometry(CENTER_LINE+10,sizeHint().height()-60,80,50); - button->setFont(buttonFont()); - button->setText(tr("Save")); - connect(button,SIGNAL(clicked()),this,SLOT(saveData())); + event_save_button=new QPushButton(this); + event_save_button->setFont(buttonFont()); + event_save_button->setText(tr("Save")); + connect(event_save_button,SIGNAL(clicked()),this,SLOT(saveData())); // // Save As Button // - button=new QPushButton(this); - button->setGeometry(CENTER_LINE+100,sizeHint().height()-60,80,50); - button->setFont(buttonFont()); - button->setText(tr("Save As")); - connect(button,SIGNAL(clicked()),this,SLOT(saveAsData())); - button->setDisabled(new_event); + event_saveas_button=new QPushButton(this); + event_saveas_button->setFont(buttonFont()); + event_saveas_button->setText(tr("Save As")); + connect(event_saveas_button,SIGNAL(clicked()),this,SLOT(saveAsData())); + event_saveas_button->setDisabled(new_event); // // Service Association Button // - button=new QPushButton(this); - button->setGeometry(CENTER_LINE+(sizeHint().width()-CENTER_LINE)/2-85, - sizeHint().height()-60,80,50); - button->setFont(buttonFont()); - button->setText(tr("Services\nList")); - connect(button,SIGNAL(clicked()),this,SLOT(svcData())); + event_services_list_button=new QPushButton(this); + event_services_list_button->setFont(buttonFont()); + event_services_list_button->setText(tr("Services\nList")); + connect(event_services_list_button,SIGNAL(clicked()),this,SLOT(svcData())); // // Color Button // event_color_button=new QPushButton(this); - event_color_button-> - setGeometry(CENTER_LINE+(sizeHint().width()-CENTER_LINE)/2+5, - sizeHint().height()-60,80,50); event_color_button->setFont(buttonFont()); event_color_button->setText(tr("Color")); connect(event_color_button,SIGNAL(clicked()),this,SLOT(colorData())); @@ -721,130 +213,44 @@ EditEvent::EditEvent(QString eventname,bool new_event,QStringList *new_events, // // OK Button // - button=new QPushButton(this); - button->setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50); + event_ok_button=new QPushButton(this); if(rda->station()->filterMode()==RDStation::FilterSynchronous) { - button->setDefault(true); + event_ok_button->setDefault(true); } - button->setFont(buttonFont()); - button->setText(tr("OK")); - connect(button,SIGNAL(clicked()),this,SLOT(okData())); + event_ok_button->setFont(buttonFont()); + event_ok_button->setText(tr("OK")); + connect(event_ok_button,SIGNAL(clicked()),this,SLOT(okData())); // // Cancel Button // - button=new QPushButton(this); - button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50); - button->setFont(buttonFont()); - button->setText(tr("Cancel")); - connect(button,SIGNAL(clicked()),this,SLOT(cancelData())); + event_cancel_button=new QPushButton(this); + event_cancel_button->setFont(buttonFont()); + event_cancel_button->setText(tr("Cancel")); + connect(event_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData())); // // Load Event // event_remarks_edit->setText(event_event->remarks()); - int pos=event_event->preposition(); - if(pos<0) { - event_position_box->setChecked(false); - prepositionToggledData(false); - } - else { - event_position_box->setChecked(true); - event_position_edit->setTime(QTime(0,0,0).addMSecs(pos)); - prepositionToggledData(true); - } - - int grace=0; - switch(event_event->timeType()) { - case RDLogLine::Relative: - event_timetype_check->setChecked(false); - event_grace_group->button(0)->setChecked(true); - timeToggledData(false); - break; - - case RDLogLine::Hard: - event_timetype_check->setChecked(true); - switch((grace=event_event->graceTime())) { - case 0: - event_grace_group->button(0)->setChecked(true); - event_grace_edit->setTime(QTime()); - break; - - case -1: - event_grace_group->button(1)->setChecked(true); - event_grace_edit->setTime(QTime()); - break; - - default: - event_grace_group->button(2)->setChecked(true); - event_grace_edit->setTime(QTime(0,0,0).addMSecs(grace)); - break; - } - - case RDLogLine::NoTime: - break; - } - - event_autofill_box->setChecked(event_event->useAutofill()); - int autofill_slop=event_event->autofillSlop(); - if(autofill_slop>=0) { - event_autofill_slop_box->setChecked(true); - event_autofill_slop_edit->setTime(QTime(0,0,0).addMSecs(autofill_slop)); - } - autofillToggledData(event_autofill_box->isChecked()); - event_timescale_box->setChecked(event_event->useTimescale()); - event_source_group->button(event_event->importSource())->setChecked(true); - event_startslop_edit->setTime(QTime(0,0,0).addMSecs(event_event->startSlop())); - event_endslop_edit->setTime(QTime(0,0,0).addMSecs(event_event->endSlop())); - event_firsttrans_box->setCurrentIndex(event_event->firstTransType()); - event_defaulttrans_box->setCurrentIndex(event_event->defaultTransType()); - if(!event_event->schedGroup().isEmpty()) { - event_sched_group_box->setCurrentText(event_event->schedGroup()); - } - event_artist_sep_spinbox->setValue(event_event->artistSep()); - event_title_sep_spinbox->setValue(event_event->titleSep()); - if(event_have_code_box->findText(event_event->HaveCode())!=-1) { - event_have_code_box->setCurrentText(event_event->HaveCode()); - } - if(event_have_code2_box->findText(event_event->HaveCode2())!=-1) { - event_have_code2_box->setCurrentText(event_event->HaveCode2()); - } event_color=event_event->color(); if(event_color.isValid()) { - event_color_button->setPalette(QPalette(event_color,palette().color(QPalette::Background))); + event_color_button-> + setPalette(QPalette(event_color,palette().color(QPalette::Background))); } - QString str=event_event->nestedEvent(); - sql=QString("select `NAME` from `EVENTS` where ")+ - "`NAME`!='"+RDEscapeString(eventname)+"'"+ - "order by `NAME`"; - q=new RDSqlQuery(sql); - while(q->next()) { - event_nestevent_box->insertItem(event_nestevent_box->count(), - q->value(0).toString()); - if(q->value(0).toString()==str) { - event_nestevent_box->setCurrentIndex(event_nestevent_box->count()-1); - } - } - delete q; - prepositionToggledData(event_position_box->isChecked()); - timeToggledData(event_timetype_check->isChecked()); - importClickedData(event_source_group->checkedId()); + event_widget->load(event_event); } EditEvent::~EditEvent() { delete event_lib_view; - delete event_preimport_view; - delete event_preimport_model; - delete event_postimport_view; - delete event_postimport_model; } QSize EditEvent::sizeHint() const { - return QSize(1024,715); + return QSize(1300,800); } @@ -910,227 +316,6 @@ void EditEvent::selectionChangedData(const QItemSelection &before, } -void EditEvent::prepositionToggledData(bool state) -{ - event_position_edit->setEnabled(state); - - // - // TIMED START Section - // - event_timetype_check->setDisabled(state); - event_timetype_group->setDisabled(state); - event_timetype_label->setDisabled(state); - if(event_timetype_check->isChecked()) { - event_grace_groupbox->setDisabled(state); - event_immediate_button->setDisabled(state); - event_next_button->setDisabled(state); - event_wait_button->setDisabled(state); - } - - // - // TRANSITIONS Section - // - if(state) { - event_firsttrans_box->setCurrentIndex(2); - } - event_firsttrans_box->setDisabled(state); - event_firsttrans_label->setDisabled(state); - event_firsttrans_unit->setDisabled(state); -} - - -void EditEvent::timeToggledData(bool state) -{ - event_grace_groupbox->setEnabled(state); - event_immediate_button->setEnabled(state); - event_next_button->setEnabled(state); - event_wait_button->setEnabled(state); - event_grace_edit->setEnabled(state); - if(state) { - graceClickedData(event_grace_group->checkedId()); - timeTransitionData(2); - event_position_box->setDisabled(true); - event_position_edit->setDisabled(true); - event_position_group->setDisabled(true); - event_position_label->setDisabled(true); - event_position_unit->setDisabled(true); - } - else { - event_grace_edit->setDisabled(true); - if(event_position_box->isChecked()) { - event_position_edit->setEnabled(true); - } - event_position_box->setEnabled(true); - event_position_group->setEnabled(true); - event_position_label->setEnabled(true); - event_position_unit->setEnabled(true); - } -} - - -void EditEvent::graceClickedData(int id) -{ - switch(id) { - case 0: - timeTransitionData(RDLogLine::Stop); - event_grace_edit->setDisabled(true); - break; - - case 1: - timeTransitionData(RDLogLine::Segue); - event_grace_edit->setDisabled(true); - break; - - case 2: - timeTransitionData(RDLogLine::Segue); - event_grace_edit->setEnabled(true); - break; - } -} - - -void EditEvent::timeTransitionData(int id) -{ - //event_preimport_list->refreshList(); -} - - -void EditEvent::autofillToggledData(bool state) -{ - event_autofill_slop_box->setEnabled(state); - event_autofill_slop_label1->setEnabled(state); - if(state) { - autofillWarnToggledData(event_autofill_slop_box->isChecked()); - } - else { - autofillWarnToggledData(false); - } -} - - -void EditEvent::autofillWarnToggledData(bool state) -{ - event_autofill_slop_edit->setEnabled(state); - event_autofill_slop_label->setEnabled(state); -} - - -void EditEvent::importClickedData(int id) -{ - bool state=true; - bool statesched=true; - bool stateschedinv=false; - if(id==0) { - state=false; - statesched=false; - } - if(id==3) { - state=false; - statesched=false; - stateschedinv=true; - } - event_startslop_edit->setEnabled(statesched); - event_startslop_label->setEnabled(statesched); - event_startslop_unit->setEnabled(statesched); - event_endslop_edit->setEnabled(statesched); - event_endslop_label->setEnabled(statesched); - event_endslop_unit->setEnabled(statesched); - event_defaulttrans_box->setEnabled(state); - event_defaulttrans_label->setEnabled(state); - event_defaulttrans_unit->setEnabled(state); - state=(id==2)&&state; - event_nestevent_label->setEnabled(state); - event_nestevent_box->setEnabled(state); - event_sched_group_box->setEnabled(stateschedinv); - event_artist_sep_label->setEnabled(stateschedinv); - event_artist_sep_spinbox->setEnabled(stateschedinv); - event_artist_none_button->setEnabled(stateschedinv); - event_title_sep_label->setEnabled(stateschedinv); - event_title_sep_spinbox->setEnabled(stateschedinv); - event_title_none_button->setEnabled(stateschedinv); - event_have_code_box->setEnabled(stateschedinv); - event_have_code_label->setEnabled(stateschedinv); - event_have_code2_box->setEnabled(stateschedinv); - event_have_code2_label->setEnabled(stateschedinv); -} - - -void EditEvent::preimportLengthChangedData(int msecs) -{ - event_preimport_length_edit->setText(RDGetTimeLength(msecs,true,false)); -} - - -void EditEvent::preimportUpData() -{ - QModelIndexList rows=event_preimport_view->selectionModel()->selectedRows(); - - if(rows.size()!=1) { - return; - } - if(event_preimport_model->moveUp(rows.first())) { - event_preimport_view->selectRow(rows.first().row()-1); - } -} - - -void EditEvent::preimportDownData() -{ - QModelIndexList rows=event_preimport_view->selectionModel()->selectedRows(); - - if(rows.size()!=1) { - return; - } - if(event_preimport_model->moveDown(rows.first())) { - event_preimport_view->selectRow(rows.first().row()+1); - } -} - - -void EditEvent::postimportUpData() -{ - QModelIndexList rows=event_postimport_view->selectionModel()->selectedRows(); - - if(rows.size()!=1) { - return; - } - if(event_postimport_model->moveUp(rows.first())) { - event_postimport_view->selectRow(rows.first().row()-1); - } -} - - -void EditEvent::postimportDownData() -{ - QModelIndexList rows=event_postimport_view->selectionModel()->selectedRows(); - - if(rows.size()!=1) { - return; - } - if(event_postimport_model->moveDown(rows.first())) { - event_postimport_view->selectRow(rows.first().row()+1); - } -} - - -void EditEvent::postimportLengthChangedData(int msecs) -{ - event_postimport_length_edit->setText(RDGetTimeLength(msecs,true,false)); -} - - -void EditEvent::artistData() -{ - event_artist_sep_spinbox->setValue(-1); -} - - -void EditEvent::titleData() -{ - event_title_sep_spinbox->setValue(-1); -} - - void EditEvent::saveData() { Save(); @@ -1156,8 +341,7 @@ void EditEvent::saveAsData() if(!q->first()) { delete event_event; event_event=new RDEvent(event_name,true); - event_preimport_model->setEventName(event_name); - event_postimport_model->setEventName(event_name); + event_widget->rename(event_name); Save(); event_new_events->push_back(event_name); CopyEventPerms(old_name,event_name); @@ -1177,6 +361,7 @@ void EditEvent::saveAsData() } delete event_event; event_event=new RDEvent(event_name,true); + event_widget->rename(event_name); Save(); event_modified_events->push_back(event_name); sql=QString("delete from `EVENT_PERMS` where ")+ @@ -1244,12 +429,61 @@ void EditEvent::closeEvent(QCloseEvent *e) } +void EditEvent::resizeEvent(QResizeEvent *e) +{ + int w=size().width(); + int h=size().height(); + int x_divide=w-event_widget->sizeHint().width(); + + if(rda->station()->filterMode()==RDStation::FilterAsynchronous) { + event_lib_filter_edit->setGeometry(55,2,x_divide-130,20); + } + else { + event_lib_filter_edit->setGeometry(55,2,x_divide-65,20); + } + + event_lib_filter_label->setGeometry(5,2,45,20); + event_search_button->setGeometry(CENTER_LINE-70,2,60,20); + event_group_box->setGeometry(55,25,x_divide-65,20); + event_group_label->setGeometry(5,25,45,20); + event_lib_type_none_radio->setGeometry(55,55,15,15); + event_lib_type_none_label->setGeometry(75,55,30,15); + event_lib_type_audio_radio->setGeometry(125,55,15,15); + event_lib_type_audio_label->setGeometry(145,55,80,15); + event_lib_type_macro_radio->setGeometry(235,55,15,15); + event_lib_type_macro_label->setGeometry(255,55,80,15); + + event_lib_view->setGeometry(10,80,x_divide-20,h/2); + event_empty_cart->setGeometry(x_divide-230,h/2+100,32,32); + if(event_player!=NULL) { + event_player->playButton()->setGeometry(x_divide-180,h/2+90,80,50); + event_player->stopButton()->setGeometry(x_divide-90,h/2+90,80,50); + } + event_remarks_label->setGeometry(15,h/2+135,100,15); + event_remarks_edit->setGeometry(10,h/2+150,x_divide-20,h-(h/2+180)); + event_widget->setGeometry(30+x_divide,0, + event_widget->sizeHint().width(), + event_widget->sizeHint().height()); + + event_save_button->setGeometry(w-610,h-60,80,50); + event_saveas_button->setGeometry(w-520,h-60,80,50); + + event_services_list_button->setGeometry(w-395,h-60,80,50); + event_color_button-> + setGeometry(w-305,h-60,80,50); + + event_ok_button->setGeometry(w-180,h-60,80,50); + event_cancel_button->setGeometry(w-90,h-60,80,50); +} + + void EditEvent::paintEvent(QPaintEvent *e) { + int x_divide=size().width()-event_widget->sizeHint().width(); + QPainter *p=new QPainter(this); p->setPen(Qt::black); - p->drawLine(CENTER_LINE,10,CENTER_LINE,sizeHint().height()-10); - p->drawLine(CENTER_LINE+408,408,CENTER_LINE+408,493); + p->drawLine(x_divide,10,x_divide,size().height()-10); p->end(); } @@ -1274,139 +508,14 @@ void EditEvent::Save() { QString properties; + event_widget->save(event_event); event_event->setRemarks(event_remarks_edit->toPlainText()); - if(event_position_box->isChecked()) { - event_event->setPreposition(QTime(0,0,0).msecsTo(event_position_edit->time())); - } - else { - event_event->setPreposition(-1); - } - if(event_timetype_check->isChecked()) { - event_event->setTimeType(RDLogLine::Hard); - event_event->setFirstTransType((RDLogLine::TransType) - event_firsttrans_box->currentIndex()); - switch(event_grace_group->checkedId()) { - case 0: - event_event->setGraceTime(0); - break; - - case 1: - event_event->setGraceTime(-1); - break; - - default: - event_event->setGraceTime(QTime(0,0,0).msecsTo(event_grace_edit->time())); - break; - } - } - else { - event_event->setTimeType(RDLogLine::Relative); - event_event->setGraceTime(0); - event_event->setFirstTransType(RDLogLine::Play); - } - - event_event->setUseAutofill(event_autofill_box->isChecked()); - if(event_autofill_slop_box->isChecked()) { - event_event-> - setAutofillSlop(QTime(0,0,0).msecsTo(event_autofill_slop_edit->time())); - } - else { - event_event->setAutofillSlop(-1); - } - event_event->setUseTimescale(event_timescale_box->isChecked()); - event_event-> - setImportSource((RDEventLine::ImportSource)event_source_group->checkedId()); - event_event->setStartSlop(QTime(0,0,0).msecsTo(event_startslop_edit->time())); - event_event->setEndSlop(QTime(0,0,0).msecsTo(event_endslop_edit->time())); - if(!event_timetype_check->isChecked()) { - event_event-> - setFirstTransType((RDLogLine::TransType)event_firsttrans_box-> - currentIndex()); - } - event_event-> - setDefaultTransType((RDLogLine::TransType)event_defaulttrans_box-> - currentIndex()); event_event->setColor(event_color); - if(event_nestevent_box->currentIndex()==0) { - event_event->setNestedEvent(""); - } - else { - event_event->setNestedEvent(event_nestevent_box->currentText()); - } - event_event->setSchedGroup(event_sched_group_box->currentText()); - event_event->setArtistSep(event_artist_sep_spinbox->value()); - event_event->setTitleSep(event_title_sep_spinbox->value()); - event_event->setHaveCode(""); - event_event->setHaveCode2(""); - if(event_have_code_box->currentIndex()>0) { - event_event->setHaveCode(event_have_code_box->currentText()); - } - if(event_have_code2_box->currentIndex()>0) { - event_event->setHaveCode2(event_have_code2_box->currentText()); - } - - // - // If both codes are the same, remove second code - // - if (event_event->HaveCode()==event_event->HaveCode2()) { - event_event->setHaveCode2(""); - } - - // - // Save second code as first code when first code isn't defined - // - if (event_event->HaveCode().isEmpty()) { - event_event->setHaveCode(event_event->HaveCode2()); - event_event->setHaveCode2(""); - } - - event_preimport_model-> - save((RDLogLine::TransType)event_firsttrans_box->currentIndex()); - event_postimport_model->save(); event_saved=true; } -QString EditEvent::GetProperties() -{ - int prepos_msec=-1; - RDLogLine::TimeType time_type=RDLogLine::Relative; - int grace_msec=-1; - - if(event_position_box->isChecked()) { - prepos_msec=QTime(0,0,0).msecsTo(event_position_edit->time()); - } - if(event_timetype_check->isChecked()) { - time_type=RDLogLine::Hard; - } - if(event_timetype_check->isChecked()) { - switch(event_grace_group->checkedId()) { - case 0: - grace_msec=0; - break; - - case 1: - grace_msec=-1; - break; - - default: - grace_msec=QTime(0,0,0).msecsTo(event_grace_edit->time()); - break; - } - } - - return RDEventLine:: - propertiesText(prepos_msec, - (RDLogLine::TransType)event_firsttrans_box->currentIndex(), - time_type, - grace_msec, - event_autofill_box->isChecked(), - (RDEventLine::ImportSource)event_source_group->checkedId(), - event_nestevent_box->currentIndex()>0); -} - - void EditEvent::CopyEventPerms(QString old_name,QString new_name) { QString sql; diff --git a/rdlogmanager/edit_event.h b/rdlogmanager/edit_event.h index 88554200..245dee95 100644 --- a/rdlogmanager/edit_event.h +++ b/rdlogmanager/edit_event.h @@ -2,7 +2,7 @@ // // Edit a Rivendell Log Event // -// (C) Copyright 2002-2021 Fred Gleason +// (C) Copyright 2002-2023 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 @@ -39,6 +39,7 @@ #include #include +#include "eventwidget.h" #include "importcartsmodel.h" #include "importcartsview.h" #include "librarytableview.h" @@ -65,21 +66,6 @@ class EditEvent : public RDDialog void searchData(); void selectionChangedData(const QItemSelection &before, const QItemSelection &after); - void prepositionToggledData(bool state); - void timeToggledData(bool); - void graceClickedData(int); - void timeTransitionData(int); - void autofillToggledData(bool); - void autofillWarnToggledData(bool); - void importClickedData(int); - void preimportLengthChangedData(int msecs); - void preimportUpData(); - void preimportDownData(); - void postimportUpData(); - void postimportDownData(); - void postimportLengthChangedData(int msecs); - void artistData(); - void titleData(); void saveData(); void saveAsData(); void svcData(); @@ -89,6 +75,7 @@ class EditEvent : public RDDialog protected: void closeEvent(QCloseEvent *e); + void resizeEvent(QResizeEvent *e); void paintEvent(QPaintEvent *e); private: @@ -96,84 +83,42 @@ class EditEvent : public RDDialog void Save(); void CopyEventPerms(QString old_name,QString new_name); void AbandonEvent(QString name); - QString GetProperties(); QString event_name; RDEvent *event_event; + QLabel *event_lib_filter_label; QLineEdit *event_lib_filter_edit; QButtonGroup *event_lib_type_group; + QLabel *event_lib_type_none_label; + QRadioButton *event_lib_type_none_radio; + QLabel *event_lib_type_audio_label; + QRadioButton *event_lib_type_audio_radio; + QLabel *event_lib_type_macro_label; + QRadioButton *event_lib_type_macro_radio; + QLabel *event_group_label; QComboBox *event_group_box; RDGroupListModel *event_group_model; RDComboBox *event_sched_group_box; - QSpinBox* event_artist_sep_spinbox; - QLabel *event_artist_sep_label; - QPushButton *event_artist_none_button; - QSpinBox* event_title_sep_spinbox; - QLabel *event_title_sep_label; - QPushButton *event_title_none_button; - RDComboBox* event_have_code_box; - QLabel *event_have_code_label; - RDComboBox* event_have_code2_box; - QLabel *event_have_code2_label; + QPushButton *event_search_button; LibraryTableView *event_lib_view; RDLibraryModel *event_lib_model; - QPushButton *event_search_button; - QGroupBox *event_position_group; - QLabel *event_position_label; - QLabel *event_position_unit; - QCheckBox *event_position_box; - QTimeEdit *event_position_edit; - QGroupBox *event_timetype_group; - QCheckBox *event_timetype_check; - QLabel *event_timetype_label; - QButtonGroup *event_grace_group; - QGroupBox *event_grace_groupbox; - QRadioButton *event_immediate_button; - QRadioButton *event_next_button; - QRadioButton *event_wait_button; - QTimeEdit *event_grace_edit; - QGroupBox *event_autofill_group; - QCheckBox *event_autofill_box; - QCheckBox *event_autofill_slop_box; - QLabel *event_autofill_slop_label1; - QLabel *event_autofill_slop_label; - QTimeEdit *event_autofill_slop_edit; - QCheckBox *event_timescale_box; - QGroupBox *event_stack_group; - ImportCartsView *event_preimport_view; - ImportCartsModel *event_preimport_model; - QLineEdit *event_preimport_length_edit; - RDTransportButton *event_preimport_up_button; - RDTransportButton *event_preimport_down_button; - QButtonGroup *event_source_group; - QTimeEdit *event_startslop_edit; - QLabel *event_startslop_label; - QLabel *event_startslop_unit; - QTimeEdit *event_endslop_edit; - QLabel *event_endslop_label; - QLabel *event_endslop_unit; - QGroupBox *event_transitions_group; - QComboBox *event_firsttrans_box; - QLabel *event_firsttrans_label; - QLabel *event_firsttrans_unit; - QComboBox *event_defaulttrans_box; - QLabel *event_defaulttrans_label; - QLabel *event_defaulttrans_unit; - QLabel *event_nestevent_label; - QComboBox *event_nestevent_box; - ImportCartsView *event_postimport_view; - ImportCartsModel *event_postimport_model; - QLineEdit *event_postimport_length_edit; RDTransportButton *event_postimport_up_button; RDTransportButton *event_postimport_down_button; + QPushButton *event_save_button; + QPushButton *event_saveas_button; + QPushButton *event_services_list_button; QPushButton *event_color_button; + QPushButton *event_ok_button; + QPushButton *event_cancel_button; QColor event_color; bool event_saved; bool event_new_event; QStringList *event_new_events; QStringList *event_modified_events; RDSimplePlayer *event_player; + QLabel *event_remarks_label; QTextEdit *event_remarks_edit; RDEmptyCart *event_empty_cart; + EventWidget *event_widget; }; diff --git a/rdlogmanager/eventwidget.cpp b/rdlogmanager/eventwidget.cpp new file mode 100644 index 00000000..1992162c --- /dev/null +++ b/rdlogmanager/eventwidget.cpp @@ -0,0 +1,1121 @@ +// eventwidget.cpp +// +// Widget for editing a LogManager event +// +// (C) Copyright 2002-2023 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 +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#include + +#include +#include + +#include "eventwidget.h" + +EventWidget::EventWidget(QWidget *parent) + : RDWidget(parent) +{ + event_event=NULL; + event_preimport_model=NULL; + event_postimport_model=NULL; + + // ******************************* + // Pre-Position Log Section + // ******************************* + event_position_group=new QGroupBox(tr("PRE-POSITION LOG"),this); + event_position_group->setFont(labelFont()); + + event_position_box=new QCheckBox(this); + connect(event_position_box,SIGNAL(toggled(bool)), + this,SLOT(prepositionToggledData(bool))); + event_position_label=new QLabel(tr("Cue to this event"),this); + event_position_label->setFont(labelFont()); + event_position_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_position_edit=new QTimeEdit(this); + event_position_edit->setDisplayFormat("mm:ss"); + event_position_unit=new QLabel(tr("before scheduled start. (First cart will have a STOP transition.)"), + this); + event_position_unit->setFont(labelFont()); + event_position_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + // ******************************* + // Timed Start Section + // ******************************* + event_timetype_group=new QGroupBox(tr("TIMED START"),this); + event_timetype_group->setFont(labelFont()); + + // + // Time Type + // + event_timetype_check=new QCheckBox(this); + event_timetype_label=new QLabel(tr("Use hard start time"),this); + event_timetype_label->setFont(labelFont()); + event_timetype_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); + + // + // Grace Time + // + event_grace_groupbox= + new QGroupBox(tr("Action If Previous Event Still Playing"),this); + event_grace_groupbox->setFont(labelFont()); + event_grace_group=new QButtonGroup(this); + event_immediate_button=new QRadioButton(tr("Start immediately"),this); + event_immediate_button->setFont(subLabelFont()); + event_grace_group->addButton(event_immediate_button,0); + event_next_button=new QRadioButton(tr("Make next"),this); + event_next_button->setFont(subLabelFont()); + event_grace_group->addButton(event_next_button,1); + event_wait_button=new QRadioButton(tr("Wait up to"),this); + event_wait_button->setFont(subLabelFont()); + event_grace_group->addButton(event_wait_button,2); + + event_grace_edit=new QTimeEdit(this); + event_grace_edit->setDisplayFormat("mm:ss"); + connect(event_timetype_check,SIGNAL(toggled(bool)), + this,SLOT(timeToggledData(bool))); + connect(event_grace_group,SIGNAL(buttonClicked(int)), + this,SLOT(graceClickedData(int))); + + // ******************************* + // Transitions Section + // ******************************* + event_transitions_group=new QGroupBox(tr("TRANSITIONS"),this); + event_transitions_group->setFont(labelFont()); + + // + // First Cart Transition Type + // + event_firsttrans_label= + new QLabel(tr("First cart has a"),this); + event_firsttrans_label->setFont(labelFont()); + event_firsttrans_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_firsttrans_box=new QComboBox(this); + event_firsttrans_box->insertItem(0,tr("Play")); + event_firsttrans_box->insertItem(1,tr("Segue")); + event_firsttrans_box->insertItem(2,tr("Stop")); + event_firsttrans_unit=new QLabel("transition.",this); + event_firsttrans_unit->setFont(labelFont()); + event_firsttrans_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + connect(event_firsttrans_box,SIGNAL(activated(int)), + this,SLOT(timeTransitionData(int))); + + // + // Default Transition Type + // + event_defaulttrans_label=new QLabel(tr("Imported carts have a"),this); + event_defaulttrans_label->setFont(labelFont()); + event_defaulttrans_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_defaulttrans_box=new QComboBox(this); + event_defaulttrans_box->insertItem(0,tr("Play")); + event_defaulttrans_box->insertItem(1,tr("Segue")); + event_defaulttrans_box->insertItem(2,tr("Stop")); + event_defaulttrans_unit=new QLabel(tr("transition."),this); + event_defaulttrans_unit->setFont(labelFont()); + event_defaulttrans_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + // ******************************* + // Enforcing Length Section + // ******************************* + event_autofill_group=new QGroupBox(tr("ENFORCING LENGTH"),this); + event_autofill_group->setFont(labelFont()); + + event_autofill_box=new QCheckBox(this); + connect(event_autofill_box,SIGNAL(toggled(bool)), + this,SLOT(autofillToggledData(bool))); + event_autofill_label=new QLabel(tr("Use AutoFill"),this); + event_autofill_label->setFont(labelFont()); + event_autofill_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + event_autofill_slop_box=new QCheckBox(this); + connect(event_autofill_slop_box,SIGNAL(toggled(bool)), + this,SLOT(autofillWarnToggledData(bool))); + event_autofill_slop_label1= + new QLabel(tr("Warn if fill is over or under"),this); + event_autofill_slop_label1->setFont(labelFont()); + event_autofill_slop_label1->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); + + event_autofill_slop_edit=new QTimeEdit(this); + event_autofill_slop_edit->setDisplayFormat("mm:ss"); + event_autofill_slop_label=new QLabel(tr("by at least")+" ",this); + event_autofill_slop_label->setFont(labelFont()); + event_autofill_slop_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + + event_timescale_box=new QCheckBox(this); + event_timescale_label=new QLabel(tr("Use Timescaling"),this); + event_timescale_label->setFont(labelFont()); + event_timescale_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_timescale_box->hide(); + event_timescale_label->hide(); + + // ******************************* + // Cart Stack Section + // ******************************* + event_stack_group=new QGroupBox(tr("CART STACK"),this); + event_stack_group->setFont(labelFont()); + // + // Pre-Import Carts Section + // + event_preimport_carts_label=new QLabel(tr("PRE-IMPORT CARTS"),this); + event_preimport_carts_label->setFont(labelFont()); + + // + // Pre-Import Carts List + // + event_preimport_length_edit=new QLineEdit(this); + event_preimport_length_edit->setReadOnly(true); + event_preimport_length_label=new QLabel(tr("Len:"),this); + event_preimport_length_label->setFont(labelFont()); + event_preimport_length_label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); + + event_preimport_view=new ImportCartsView(this); + event_preimport_view->setDragEnabled(true); + + event_preimport_up_button=new RDTransportButton(RDTransportButton::Up,this); + connect(event_preimport_up_button,SIGNAL(clicked()), + this,SLOT(preimportUpData())); + event_preimport_down_button= + new RDTransportButton(RDTransportButton::Down,this); + connect(event_preimport_down_button,SIGNAL(clicked()), + this,SLOT(preimportDownData())); + + // + // Imports + // + event_imports_label=new QLabel(tr("IMPORT"),this); + event_imports_label->setFont(labelFont()); + + event_source_group=new QButtonGroup(this); + connect(event_source_group,SIGNAL(buttonClicked(int)), + this,SLOT(importClickedData(int))); + event_source_none_radio=new QRadioButton(this); + event_source_group->addButton(event_source_none_radio,RDEventLine::None); + event_source_group_none_label=new QLabel(tr("None"),this); + event_source_group_none_label->setFont(labelFont()); + event_source_group_none_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + event_source_traffic_radio=new QRadioButton(this); + event_source_group->addButton(event_source_traffic_radio,RDEventLine::Traffic); + event_source_group_traffic_label=new QLabel(tr("From Traffic"),this); + event_source_group_traffic_label->setFont(labelFont()); + event_source_group_traffic_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + event_source_music_radio=new QRadioButton(this); + event_source_group->addButton(event_source_music_radio,RDEventLine::Music); + event_source_group_music_label=new QLabel(tr("From Music"),this); + event_source_group_music_label->setFont(labelFont()); + event_source_group_music_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + event_source_scheduler_radio=new QRadioButton(this); + event_source_group->addButton(event_source_scheduler_radio,RDEventLine::Scheduler); + event_source_group_scheduler_label=new QLabel(tr("Select from:"),this); + event_source_group_scheduler_label->setFont(labelFont()); + event_source_group_scheduler_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + // + // Scheduler Group + // + event_sched_group_box=new RDComboBox(this); + + // + // Artist Separation SpinBox + // + event_artist_sep_label=new QLabel(tr("Artist Separation"),this); + event_artist_sep_label->setFont(defaultFont()); + event_artist_sep_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + + event_artist_sep_spinbox=new QSpinBox(this); + event_artist_sep_spinbox->setMinimum( -1 ); + event_artist_sep_spinbox->setMaximum( 50000 ); + event_artist_sep_spinbox->setSpecialValueText("None"); + + event_artist_none_button=new QPushButton(this); + event_artist_none_button->setFont(subButtonFont()); + event_artist_none_button->setText(tr("None")); + connect(event_artist_none_button,SIGNAL(clicked()),this,SLOT(artistData())); + + // + // Title Separation SpinBox + // + event_title_sep_label=new QLabel(tr("Title Separation"),this); + event_title_sep_label->setFont(defaultFont()); + event_title_sep_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + + event_title_sep_spinbox=new QSpinBox(this); + event_title_sep_spinbox->setMinimum( -1 ); + event_title_sep_spinbox->setMaximum( 50000 ); + event_title_sep_spinbox->setSpecialValueText("None"); + + event_title_none_button=new QPushButton(this); + event_title_none_button->setFont(subButtonFont()); + event_title_none_button->setText(tr("None")); + connect(event_title_none_button,SIGNAL(clicked()),this,SLOT(titleData())); + + // + // Must have code.. + // + event_have_code_label=new QLabel(tr("Must have code"),this); + event_have_code_label->setFont(defaultFont()); + event_have_code_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + + event_have_code_box=new RDComboBox(this); + + // + // And code + // + event_have_code2_label=new QLabel(tr("and code"),this); + event_have_code2_label->setFont(defaultFont()); + event_have_code2_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + + event_have_code2_box=new RDComboBox(this); + + // + // Start Slop Time + // + event_startslop_label=new QLabel(tr("Import carts scheduled"),this); + event_startslop_label->setFont(defaultFont()); + event_startslop_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_startslop_edit=new QTimeEdit(this); + event_startslop_edit->setDisplayFormat("mm:ss"); + event_startslop_unit=new QLabel(tr("prior to the start of this event."),this); + event_startslop_unit->setFont(defaultFont()); + event_startslop_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + // + // End Slop Time + // + event_endslop_label=new QLabel(tr("Import carts scheduled"),this); + event_endslop_label->setFont(defaultFont()); + event_endslop_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_endslop_edit=new QTimeEdit(this); + event_endslop_edit->setDisplayFormat("mm:ss"); + event_endslop_unit=new QLabel(tr("after the end of this event."),this); + event_endslop_unit->setFont(defaultFont()); + event_endslop_unit->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + + // + // Nested Event + // + event_nestevent_label=new QLabel(tr("Import inline traffic event"),this); + event_nestevent_label->setFont(defaultFont()); + event_nestevent_label->setAlignment(Qt::AlignVCenter|Qt::AlignLeft); + event_nestevent_box=new QComboBox(this); + event_nestevent_box->insertItem(0,tr("[none]")); + + // + // Post-Import Carts Section + // + event_postimport_carts_label=new QLabel(tr("POST-IMPORT CARTS"),this); + event_postimport_carts_label->setFont(labelFont()); + + // + // Post-Import Carts List + // + event_postimport_length_edit=new QLineEdit(this); + event_postimport_length_edit->setReadOnly(true); + event_postimport_length_label=new QLabel(tr("Len:"),this); + event_postimport_length_label->setFont(labelFont()); + event_postimport_length_label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); + + event_postimport_view=new ImportCartsView(this); + event_postimport_view->setDragEnabled(true); + + event_postimport_up_button= + new RDTransportButton(RDTransportButton::Up,this); + connect(event_postimport_up_button,SIGNAL(clicked()), + this,SLOT(postimportUpData())); + event_postimport_down_button= + new RDTransportButton(RDTransportButton::Down,this); + connect(event_postimport_down_button,SIGNAL(clicked()), + this,SLOT(postimportDownData())); + +} + + +EventWidget::~EventWidget() +{ +} + + +QSize EventWidget::sizeHint() const +{ + return QSize(624,645); +} + + +QSizePolicy EventWidget::sizePolicy() const +{ + return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::MinimumExpanding); +} + + +QString EventWidget::properties() const +{ + int prepos_msec=-1; + RDLogLine::TimeType time_type=RDLogLine::Relative; + int grace_msec=-1; + + if(event_position_box->isChecked()) { + prepos_msec=QTime(0,0,0).msecsTo(event_position_edit->time()); + } + if(event_timetype_check->isChecked()) { + time_type=RDLogLine::Hard; + } + if(event_timetype_check->isChecked()) { + switch(event_grace_group->checkedId()) { + case 0: + grace_msec=0; + break; + + case 1: + grace_msec=-1; + break; + + default: + grace_msec=QTime(0,0,0).msecsTo(event_grace_edit->time()); + break; + } + } + + return RDEventLine:: + propertiesText(prepos_msec, + (RDLogLine::TransType)event_firsttrans_box->currentIndex(), + time_type, + grace_msec, + event_autofill_box->isChecked(), + (RDEventLine::ImportSource)event_source_group->checkedId(), + event_nestevent_box->currentIndex()>0); +} + + +void EventWidget::rename(const QString &str) +{ + event_preimport_model->setEventName(str); + event_postimport_model->setEventName(str); +} + + +void EventWidget::load(RDEvent *evt) +{ + QString sql; + RDSqlQuery *q=NULL; + int pos; + int grace; + + event_event=evt; + + // + // Fill scheduler codes + // + event_have_code_box->clear(); + event_have_code2_box->clear(); + event_have_code_box->insertItem(tr("[None]")); + event_have_code2_box->insertItem(tr("[None]")); + + sql="select `CODE` from `SCHED_CODES` order by `CODE`"; + q=new RDSqlQuery(sql); + while(q->next()) { + event_have_code_box->insertItem(q->value(0).toString()); + event_have_code2_box->insertItem(q->value(0).toString()); + } + delete q; + + // + // Group Names + // + event_sched_group_box->clear(); + sql=QString("select ")+ + "`NAME` "+ // 00 + "from `GROUPS` order by `NAME`"; + q=new RDSqlQuery(sql); + while(q->next()) { + event_sched_group_box->insertItem(q->value(0).toString()); + } + delete q; + + // + // Nested Event Names + // + event_nestevent_box->clear(); + event_nestevent_box->insertItem(0,tr("[none]")); + QString str=event_event->nestedEvent(); + sql=QString("select `NAME` from `EVENTS` where ")+ + "`NAME`!='"+RDEscapeString(evt->name())+"'"+ + "order by `NAME`"; + q=new RDSqlQuery(sql); + while(q->next()) { + event_nestevent_box->insertItem(event_nestevent_box->count(), + q->value(0).toString()); + if(q->value(0).toString()==str) { + event_nestevent_box->setCurrentIndex(event_nestevent_box->count()-1); + } + } + delete q; + + // + // Pre-Import Carts + // + if(event_preimport_model!=NULL) { + delete event_preimport_model; + } + event_preimport_model= + new ImportCartsModel(evt->name(),ImportCartsModel::PreImport,true,this); + event_preimport_model->setFont(font()); + event_preimport_model->setPalette(palette()); + event_preimport_view->setModel(event_preimport_model); + connect(event_preimport_model,SIGNAL(modelReset()), + event_preimport_view,SLOT(resizeColumnsToContents())); + connect(event_preimport_view,SIGNAL(cartDropped(int,RDLogLine *)), + event_preimport_model,SLOT(processCartDrop(int,RDLogLine *))); + connect(event_preimport_model,SIGNAL(totalLengthChanged(int)), + this,SLOT(preimportLengthChangedData(int))); + event_preimport_view->resizeColumnsToContents(); + preimportLengthChangedData(event_preimport_model->totalLength()); + + // + // Post-Import Carts + // + if(event_postimport_model!=NULL) { + delete event_postimport_model; + } + event_postimport_model= + new ImportCartsModel(evt->name(),ImportCartsModel::PostImport,false,this); + event_postimport_model->setFont(font()); + event_postimport_model->setPalette(palette()); + event_postimport_view->setModel(event_postimport_model); + connect(event_postimport_model,SIGNAL(modelReset()), + event_postimport_view,SLOT(resizeColumnsToContents())); + connect(event_postimport_view,SIGNAL(cartDropped(int,RDLogLine *)), + event_postimport_model,SLOT(processCartDrop(int,RDLogLine *))); + connect(event_postimport_model,SIGNAL(totalLengthChanged(int)), + this,SLOT(postimportLengthChangedData(int))); + event_postimport_view->resizeColumnsToContents(); + postimportLengthChangedData(event_postimport_model->totalLength()); + + pos=event_event->preposition(); + if(pos<0) { + event_position_box->setChecked(false); + prepositionToggledData(false); + } + else { + event_position_box->setChecked(true); + event_position_edit->setTime(QTime(0,0,0).addMSecs(pos)); + prepositionToggledData(true); + } + + grace=0; + switch(event_event->timeType()) { + case RDLogLine::Relative: + event_timetype_check->setChecked(false); + event_grace_group->button(0)->setChecked(true); + timeToggledData(false); + break; + + case RDLogLine::Hard: + event_timetype_check->setChecked(true); + switch((grace=event_event->graceTime())) { + case 0: + event_grace_group->button(0)->setChecked(true); + event_grace_edit->setTime(QTime()); + break; + + case -1: + event_grace_group->button(1)->setChecked(true); + event_grace_edit->setTime(QTime()); + break; + + default: + event_grace_group->button(2)->setChecked(true); + event_grace_edit->setTime(QTime(0,0,0).addMSecs(grace)); + break; + } + + case RDLogLine::NoTime: + break; + } + + // + // General Controls + // + event_autofill_box->setChecked(event_event->useAutofill()); + int autofill_slop=event_event->autofillSlop(); + if(autofill_slop>=0) { + event_autofill_slop_box->setChecked(true); + event_autofill_slop_edit->setTime(QTime(0,0,0).addMSecs(autofill_slop)); + } + autofillToggledData(event_autofill_box->isChecked()); + event_timescale_box->setChecked(event_event->useTimescale()); + event_source_group->button(event_event->importSource())->setChecked(true); + event_startslop_edit->setTime(QTime(0,0,0).addMSecs(event_event->startSlop())); + event_endslop_edit->setTime(QTime(0,0,0).addMSecs(event_event->endSlop())); + event_firsttrans_box->setCurrentIndex(event_event->firstTransType()); + event_defaulttrans_box->setCurrentIndex(event_event->defaultTransType()); + if(!event_event->schedGroup().isEmpty()) { + event_sched_group_box->setCurrentText(event_event->schedGroup()); + } + event_artist_sep_spinbox->setValue(event_event->artistSep()); + event_title_sep_spinbox->setValue(event_event->titleSep()); + if(event_have_code_box->findText(event_event->HaveCode())!=-1) { + event_have_code_box->setCurrentText(event_event->HaveCode()); + } + if(event_have_code2_box->findText(event_event->HaveCode2())!=-1) { + event_have_code2_box->setCurrentText(event_event->HaveCode2()); + } + + + pos=event_event->preposition(); + if(pos<0) { + event_position_box->setChecked(false); + prepositionToggledData(false); + } + else { + event_position_box->setChecked(true); + event_position_edit->setTime(QTime(0,0,0).addMSecs(pos)); + prepositionToggledData(true); + } + + grace=0; + switch(event_event->timeType()) { + case RDLogLine::Relative: + event_timetype_check->setChecked(false); + event_grace_group->button(0)->setChecked(true); + timeToggledData(false); + break; + + case RDLogLine::Hard: + event_timetype_check->setChecked(true); + switch((grace=event_event->graceTime())) { + case 0: + event_grace_group->button(0)->setChecked(true); + event_grace_edit->setTime(QTime()); + break; + + case -1: + event_grace_group->button(1)->setChecked(true); + event_grace_edit->setTime(QTime()); + break; + + default: + event_grace_group->button(2)->setChecked(true); + event_grace_edit->setTime(QTime(0,0,0).addMSecs(grace)); + break; + } + + case RDLogLine::NoTime: + break; + } + + + prepositionToggledData(event_position_box->isChecked()); + timeToggledData(event_timetype_check->isChecked()); + importClickedData(event_source_group->checkedId()); +} + + +void EventWidget::save(RDEvent *evt) const +{ + if(event_position_box->isChecked()) { + event_event->setPreposition(QTime(0,0,0).msecsTo(event_position_edit->time())); + } + else { + event_event->setPreposition(-1); + } + if(event_timetype_check->isChecked()) { + event_event->setTimeType(RDLogLine::Hard); + event_event->setFirstTransType((RDLogLine::TransType) + event_firsttrans_box->currentIndex()); + switch(event_grace_group->checkedId()) { + case 0: + event_event->setGraceTime(0); + break; + + case 1: + event_event->setGraceTime(-1); + break; + + default: + event_event->setGraceTime(QTime(0,0,0).msecsTo(event_grace_edit->time())); + break; + } + } + else { + event_event->setTimeType(RDLogLine::Relative); + event_event->setGraceTime(0); + event_event->setFirstTransType(RDLogLine::Play); + } + + event_event->setUseAutofill(event_autofill_box->isChecked()); + if(event_autofill_slop_box->isChecked()) { + event_event-> + setAutofillSlop(QTime(0,0,0).msecsTo(event_autofill_slop_edit->time())); + } + else { + event_event->setAutofillSlop(-1); + } + event_event->setUseTimescale(event_timescale_box->isChecked()); + event_event-> + setImportSource((RDEventLine::ImportSource)event_source_group->checkedId()); + event_event->setStartSlop(QTime(0,0,0).msecsTo(event_startslop_edit->time())); + event_event->setEndSlop(QTime(0,0,0).msecsTo(event_endslop_edit->time())); + if(!event_timetype_check->isChecked()) { + event_event-> + setFirstTransType((RDLogLine::TransType)event_firsttrans_box-> + currentIndex()); + } + event_event-> + setDefaultTransType((RDLogLine::TransType)event_defaulttrans_box-> + currentIndex()); + if(event_nestevent_box->currentIndex()==0) { + event_event->setNestedEvent(""); + } + else { + event_event->setNestedEvent(event_nestevent_box->currentText()); + } + event_event->setSchedGroup(event_sched_group_box->currentText()); + event_event->setArtistSep(event_artist_sep_spinbox->value()); + event_event->setTitleSep(event_title_sep_spinbox->value()); + event_event->setHaveCode(""); + event_event->setHaveCode2(""); + if(event_have_code_box->currentIndex()>0) { + event_event->setHaveCode(event_have_code_box->currentText()); + } + if(event_have_code2_box->currentIndex()>0) { + event_event->setHaveCode2(event_have_code2_box->currentText()); + } + + // + // If both codes are the same, remove second code + // + if (event_event->HaveCode()==event_event->HaveCode2()) { + event_event->setHaveCode2(""); + } + + // + // Save second code as first code when first code isn't defined + // + if (event_event->HaveCode().isEmpty()) { + event_event->setHaveCode(event_event->HaveCode2()); + event_event->setHaveCode2(""); + } + + event_preimport_model-> + save((RDLogLine::TransType)event_firsttrans_box->currentIndex()); + event_postimport_model->save(); +} + + +void EventWidget::prepositionToggledData(bool state) +{ + event_position_edit->setEnabled(state); + + // + // TIMED START Section + // + event_timetype_check->setDisabled(state); + event_timetype_group->setDisabled(state); + event_timetype_label->setDisabled(state); + if(event_timetype_check->isChecked()) { + event_grace_groupbox->setDisabled(state); + event_immediate_button->setDisabled(state); + event_next_button->setDisabled(state); + event_wait_button->setDisabled(state); + } + + // + // TRANSITIONS Section + // + if(state) { + event_firsttrans_box->setCurrentIndex(2); + } + event_firsttrans_box->setDisabled(state); + event_firsttrans_label->setDisabled(state); + event_firsttrans_unit->setDisabled(state); +} + + +void EventWidget::timeToggledData(bool state) +{ + event_grace_groupbox->setEnabled(state); + event_immediate_button->setEnabled(state); + event_next_button->setEnabled(state); + event_wait_button->setEnabled(state); + event_grace_edit->setEnabled(state); + if(state) { + graceClickedData(event_grace_group->checkedId()); + timeTransitionData(2); + event_position_box->setDisabled(true); + event_position_edit->setDisabled(true); + event_position_group->setDisabled(true); + event_position_label->setDisabled(true); + event_position_unit->setDisabled(true); + } + else { + event_grace_edit->setDisabled(true); + if(event_position_box->isChecked()) { + event_position_edit->setEnabled(true); + } + event_position_box->setEnabled(true); + event_position_group->setEnabled(true); + event_position_label->setEnabled(true); + event_position_unit->setEnabled(true); + } +} + + +void EventWidget::graceClickedData(int id) +{ + switch(id) { + case 0: + timeTransitionData(RDLogLine::Stop); + event_grace_edit->setDisabled(true); + break; + + case 1: + timeTransitionData(RDLogLine::Segue); + event_grace_edit->setDisabled(true); + break; + + case 2: + timeTransitionData(RDLogLine::Segue); + event_grace_edit->setEnabled(true); + break; + } +} + + +void EventWidget::timeTransitionData(int id) +{ + // Nothing to do?? +} + + +void EventWidget::autofillToggledData(bool state) +{ + event_autofill_slop_box->setEnabled(state); + event_autofill_slop_label1->setEnabled(state); + if(state) { + autofillWarnToggledData(event_autofill_slop_box->isChecked()); + } + else { + autofillWarnToggledData(false); + } +} + + +void EventWidget::autofillWarnToggledData(bool state) +{ + event_autofill_slop_edit->setEnabled(state); + event_autofill_slop_label->setEnabled(state); +} + + +void EventWidget::importClickedData(int id) +{ + bool state=true; + bool statesched=true; + bool stateschedinv=false; + if(id==0) { + state=false; + statesched=false; + } + if(id==3) { + state=false; + statesched=false; + stateschedinv=true; + } + event_startslop_edit->setEnabled(statesched); + event_startslop_label->setEnabled(statesched); + event_startslop_unit->setEnabled(statesched); + event_endslop_edit->setEnabled(statesched); + event_endslop_label->setEnabled(statesched); + event_endslop_unit->setEnabled(statesched); + event_defaulttrans_box->setEnabled(state); + event_defaulttrans_label->setEnabled(state); + event_defaulttrans_unit->setEnabled(state); + state=(id==2)&&state; + event_nestevent_label->setEnabled(state); + event_nestevent_box->setEnabled(state); + event_sched_group_box->setEnabled(stateschedinv); + event_artist_sep_label->setEnabled(stateschedinv); + event_artist_sep_spinbox->setEnabled(stateschedinv); + event_artist_none_button->setEnabled(stateschedinv); + event_title_sep_label->setEnabled(stateschedinv); + event_title_sep_spinbox->setEnabled(stateschedinv); + event_title_none_button->setEnabled(stateschedinv); + event_have_code_box->setEnabled(stateschedinv); + event_have_code_label->setEnabled(stateschedinv); + event_have_code2_box->setEnabled(stateschedinv); + event_have_code2_label->setEnabled(stateschedinv); +} + + +void EventWidget::preimportLengthChangedData(int msecs) +{ + event_preimport_length_edit->setText(RDGetTimeLength(msecs,true,false)); +} + + +void EventWidget::preimportUpData() +{ + QModelIndexList rows=event_preimport_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { + return; + } + if(event_preimport_model->moveUp(rows.first())) { + event_preimport_view->selectRow(rows.first().row()-1); + } +} + + +void EventWidget::preimportDownData() +{ + QModelIndexList rows=event_preimport_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { + return; + } + if(event_preimport_model->moveDown(rows.first())) { + event_preimport_view->selectRow(rows.first().row()+1); + } +} + + +void EventWidget::postimportUpData() +{ + QModelIndexList rows=event_postimport_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { + return; + } + if(event_postimport_model->moveUp(rows.first())) { + event_postimport_view->selectRow(rows.first().row()-1); + } +} + + +void EventWidget::postimportDownData() +{ + QModelIndexList rows=event_postimport_view->selectionModel()->selectedRows(); + + if(rows.size()!=1) { + return; + } + if(event_postimport_model->moveDown(rows.first())) { + event_postimport_view->selectRow(rows.first().row()+1); + } +} + + +void EventWidget::postimportLengthChangedData(int msecs) +{ + event_postimport_length_edit->setText(RDGetTimeLength(msecs,true,false)); +} + + +void EventWidget::artistData() +{ + event_artist_sep_spinbox->setValue(-1); +} + + +void EventWidget::titleData() +{ + event_title_sep_spinbox->setValue(-1); +} + + +void EventWidget::resizeEvent(QResizeEvent *e) +{ + // + // Pre-Position Section + // + event_position_group->setGeometry(0,1,sizeHint().width()-15,43); + event_position_box->setGeometry(5,21,15,22); + event_position_label->setGeometry(25,20,150,22); + event_position_edit->setGeometry(134,20,60,22); + event_position_unit->setGeometry(202,21,sizeHint().width()-227,22); + + // + // Timed Start Section + // + event_timetype_group->setGeometry(0,49,sizeHint().width()-15,66); + + // + // Time Start Section + // + // Time Type + event_timetype_check->setGeometry(5,70,15,15); + event_timetype_label->setGeometry(25,69,120,16); + + // Grace Time + event_grace_groupbox->setGeometry(160,69,sizeHint().width()-200,42); + event_immediate_button->setGeometry(170,92,160,15); + event_next_button->setGeometry(310,92,160,15); + event_wait_button->setGeometry(420,92,160,15); + event_grace_edit->setGeometry(500,89,60,20); + + // + // Transitions Section + // + event_transitions_group-> + setGeometry(0,120,sizeHint().width()-15,63); + + // First Cart Transition Type + event_firsttrans_label-> + setGeometry(5,140, + labelFontMetrics()->width(event_firsttrans_label->text()+" "), + 20); + event_firsttrans_box->setGeometry(event_firsttrans_label->geometry().x()+ + event_firsttrans_label->geometry().width(), + 140,90,20); + event_firsttrans_unit-> + setGeometry(event_firsttrans_box->geometry().x()+ + event_firsttrans_box->geometry().width()+5,140, + labelFontMetrics()->width(tr("transition.")),20); + // Default Transition Type + event_defaulttrans_label-> + setGeometry(5,161, + labelFontMetrics()->width(event_defaulttrans_label->text()+" "), + 20); + event_defaulttrans_box-> + setGeometry(event_defaulttrans_label->geometry().x()+ + event_defaulttrans_label->geometry().width(),161,90,20); + event_defaulttrans_unit-> + setGeometry(event_defaulttrans_box->geometry().x()+ + event_defaulttrans_box->geometry().width()+5,161, + labelFontMetrics()->width(tr("transition.")),20); + + // + // Enforcing Length Section + // + event_autofill_group-> + setGeometry(0,188,sizeHint().width()-15,43); + event_autofill_box->setGeometry(5,210,15,15); + event_autofill_label->setGeometry(25,210,150,15); + event_autofill_slop_box->setGeometry(200,210,15,15); + event_autofill_slop_label1-> + setGeometry(220,210, + labelFontMetrics()->width(event_autofill_slop_label1->text()), + 15); + event_autofill_slop_label-> + setGeometry(event_autofill_slop_label1->geometry().x()+ + event_autofill_slop_label1->geometry().width(),210, + labelFontMetrics()->width(event_autofill_slop_label->text()+" "),15); + event_autofill_slop_edit-> + setGeometry(event_autofill_slop_label->geometry().x()+ + event_autofill_slop_label->geometry().width(),207,60,22); + event_timescale_box->setGeometry(240,210,15,15); + event_timescale_label->setGeometry(260,214,150,15); + + // + // Cart Stack Section + // + event_stack_group-> + setGeometry(0,235,sizeHint().width()-15,408); + + // + // Pre-Import Carts Section + // + event_preimport_carts_label->setGeometry(5,255,200,16); + event_preimport_length_edit->setGeometry(sizeHint().width()-150,253,80,20); + event_preimport_length_label->setGeometry(sizeHint().width()-340,255,185,16); + event_preimport_view->setGeometry(5,272, + sizeHint().width()-75,115); + event_preimport_up_button->setGeometry(sizeHint().width()-60,277,40,40); + event_preimport_down_button->setGeometry(sizeHint().width()-60,342,40,40); + + // + // Imports Section + // + event_imports_label->setGeometry(5,392,200,16); + event_source_none_radio->setGeometry(70,392,15,15); + event_source_traffic_radio->setGeometry(150,392,15,15); + event_source_music_radio->setGeometry(270,392,15,15); + event_source_scheduler_radio->setGeometry(390,392,15,15); + event_source_group_none_label->setGeometry(90,392,150,15); + event_source_group_traffic_label->setGeometry(170,392,150,15); + event_source_group_music_label->setGeometry(290,392,150,15); + event_source_group_scheduler_label->setGeometry(410,392,150,15); + + // + // Scheduler Group + // + event_sched_group_box->setGeometry(500,389,100,20); + + // + // Artist Separation + // + event_artist_sep_label->setGeometry(400,412,100,20); + event_artist_sep_spinbox->setGeometry(505,413,53,20); + event_artist_none_button->setGeometry(565,413,40,20); + + // + // Title Separation + // + event_title_sep_label->setGeometry(400,434,100,20); + event_title_sep_spinbox->setGeometry(505,434,53,20); + event_title_none_button->setGeometry(565,434,40,20); + + // + // Must Have Code + // + event_have_code_label->setGeometry(400,457,100,20); + event_have_code_box->setGeometry(505,457,100,20); + + // + // And Code + // + event_have_code2_label->setGeometry(400,478,100,20); + event_have_code2_box->setGeometry(505,478,100,20); + + // Start Slop + // + event_startslop_label->setGeometry(20,413,140,22); + event_startslop_edit->setGeometry(156,413,60,22); + event_startslop_unit->setGeometry(220,413,sizeHint().width()-450,22); + + // + // End Slop + // + event_endslop_label->setGeometry(20,434,140,22); + event_endslop_edit->setGeometry(156,434,60,22); + event_endslop_unit->setGeometry(220,434,sizeHint().width()-460,22); + + // + // Nested Event + // + event_nestevent_label->setGeometry(25,459,190,20); + event_nestevent_box->setGeometry(20,478,365,20); + + // + // Post-Import Carts Section + // + event_postimport_carts_label->setGeometry(5,510,200,16); + event_postimport_length_edit->setGeometry(sizeHint().width()-150,506,80,20); + event_postimport_length_label->setGeometry(sizeHint().width()-340,508,185,16); + event_postimport_view->setGeometry(5,525,sizeHint().width()-75,125-10); + event_postimport_up_button->setGeometry(sizeHint().width()-60,532,40,40); + event_postimport_down_button->setGeometry(sizeHint().width()-60,592,40,40); +} + + +void EventWidget::paintEvent(QPaintEvent *e) +{ + QPainter *p=new QPainter(this); + p->setPen(Qt::black); + p->drawLine(408,408,408,493); + p->end(); +} diff --git a/rdlogmanager/eventwidget.h b/rdlogmanager/eventwidget.h new file mode 100644 index 00000000..8b2de7e9 --- /dev/null +++ b/rdlogmanager/eventwidget.h @@ -0,0 +1,167 @@ +// eventwidget.h +// +// Widget for editing a LogManager event +// +// (C) Copyright 2002-2023 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 +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#ifndef EVENTWIDGET_H +#define EVENTWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "importcartsmodel.h" +#include "importcartsview.h" +#include "librarytableview.h" + +// +// Layout +// +#define CENTER_LINE 400 + +class EventWidget : public RDWidget +{ + Q_OBJECT + public: + EventWidget(QWidget *parent=0); + ~EventWidget(); + QSize sizeHint() const; + QSizePolicy sizePolicy() const; + QString properties() const; + void rename(const QString &str); + void load(RDEvent *evt); + void save(RDEvent *evt) const; + + private slots: + void prepositionToggledData(bool state); + void timeToggledData(bool); + void graceClickedData(int); + void timeTransitionData(int); + void autofillToggledData(bool); + void autofillWarnToggledData(bool); + void importClickedData(int); + void preimportLengthChangedData(int msecs); + void preimportUpData(); + void preimportDownData(); + void postimportUpData(); + void postimportDownData(); + void postimportLengthChangedData(int msecs); + void artistData(); + void titleData(); + + protected: + void resizeEvent(QResizeEvent *e); + void paintEvent(QPaintEvent *e); + + private: + RDEvent *event_event; + RDComboBox *event_sched_group_box; + QSpinBox* event_artist_sep_spinbox; + QLabel *event_artist_sep_label; + QPushButton *event_artist_none_button; + QSpinBox* event_title_sep_spinbox; + QLabel *event_title_sep_label; + QPushButton *event_title_none_button; + RDComboBox* event_have_code_box; + QLabel *event_have_code_label; + RDComboBox* event_have_code2_box; + QLabel *event_have_code2_label; + LibraryTableView *event_lib_view; + RDLibraryModel *event_lib_model; + QPushButton *event_search_button; + QGroupBox *event_position_group; + QLabel *event_position_label; + QLabel *event_position_unit; + QCheckBox *event_position_box; + QTimeEdit *event_position_edit; + QGroupBox *event_timetype_group; + QCheckBox *event_timetype_check; + QLabel *event_timetype_label; + QButtonGroup *event_grace_group; + QGroupBox *event_grace_groupbox; + QRadioButton *event_immediate_button; + QRadioButton *event_next_button; + QRadioButton *event_wait_button; + QTimeEdit *event_grace_edit; + QGroupBox *event_autofill_group; + QLabel *event_autofill_label; + QCheckBox *event_autofill_box; + QCheckBox *event_autofill_slop_box; + QLabel *event_autofill_slop_label1; + QLabel *event_autofill_slop_label; + QTimeEdit *event_autofill_slop_edit; + QLabel *event_timescale_label; + QCheckBox *event_timescale_box; + QGroupBox *event_stack_group; + QLabel *event_preimport_carts_label; + ImportCartsView *event_preimport_view; + ImportCartsModel *event_preimport_model; + QLabel *event_preimport_length_label; + QLineEdit *event_preimport_length_edit; + RDTransportButton *event_preimport_up_button; + RDTransportButton *event_preimport_down_button; + QRadioButton *event_source_none_radio; + QRadioButton *event_source_traffic_radio; + QRadioButton *event_source_music_radio; + QRadioButton *event_source_scheduler_radio; + QLabel *event_imports_label; + QButtonGroup *event_source_group; + QLabel *event_source_group_none_label; + QLabel *event_source_group_traffic_label; + QLabel *event_source_group_music_label; + QLabel *event_source_group_scheduler_label; + QTimeEdit *event_startslop_edit; + QLabel *event_startslop_label; + QLabel *event_startslop_unit; + QTimeEdit *event_endslop_edit; + QLabel *event_endslop_label; + QLabel *event_endslop_unit; + QGroupBox *event_transitions_group; + QComboBox *event_firsttrans_box; + QLabel *event_firsttrans_label; + QLabel *event_firsttrans_unit; + QComboBox *event_defaulttrans_box; + QLabel *event_defaulttrans_label; + QLabel *event_defaulttrans_unit; + QLabel *event_nestevent_label; + QComboBox *event_nestevent_box; + QLabel *event_postimport_carts_label; + ImportCartsView *event_postimport_view; + ImportCartsModel *event_postimport_model; + QLabel *event_postimport_length_label; + QLineEdit *event_postimport_length_edit; + RDTransportButton *event_postimport_up_button; + RDTransportButton *event_postimport_down_button; +}; + + +#endif // EVENTWIDGET_H