// 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(); }