From 44cff9e37ad69a038a3ba1a25bb2f6b1d6dc104d Mon Sep 17 00:00:00 2001 From: Alban Peignier Date: Thu, 4 Sep 2014 19:53:27 +0200 Subject: [PATCH] Add RDEvent HaveCode2 to select Cart with a second scheduler code when defined --- lib/rdevent.cpp | 11 ++++++++++ lib/rdevent.h | 2 ++ lib/rdevent_line.cpp | 40 ++++++++++++++++++++++++++++++++----- lib/rdevent_line.h | 3 +++ rdadmin/createdb.cpp | 8 ++++++-- rdlogmanager/edit_event.cpp | 29 ++++++++++++++++++++++++++- rdlogmanager/edit_event.h | 2 ++ 7 files changed, 87 insertions(+), 8 deletions(-) diff --git a/lib/rdevent.cpp b/lib/rdevent.cpp index 0ba217b1..2933b49e 100644 --- a/lib/rdevent.cpp +++ b/lib/rdevent.cpp @@ -408,6 +408,17 @@ void RDEvent::setHaveCode(QString str) SetRow("HAVE_CODE",str,true); } +QString RDEvent::HaveCode2() +{ + bool ok; + return GetStringValue("HAVE_CODE2",&ok); +} + + +void RDEvent::setHaveCode2(QString str) +{ + SetRow("HAVE_CODE2",str,true); +} unsigned RDEvent::titleSep() { diff --git a/lib/rdevent.h b/lib/rdevent.h index e8251f87..6d4171e6 100644 --- a/lib/rdevent.h +++ b/lib/rdevent.h @@ -73,6 +73,8 @@ class RDEvent void setSchedGroup(QString str); QString HaveCode(); void setHaveCode(QString str); + QString HaveCode2(); + void setHaveCode2(QString str); unsigned titleSep(); void setTitleSep(unsigned titlesep); static QString preimportTableName(const QString event_name); diff --git a/lib/rdevent_line.cpp b/lib/rdevent_line.cpp index 40ddae7c..2842b304 100644 --- a/lib/rdevent_line.cpp +++ b/lib/rdevent_line.cpp @@ -244,6 +244,16 @@ void RDEventLine::setHaveCode(QString str) event_have_code=str; } +QString RDEventLine::HaveCode2() const +{ + return event_have_code2; +} + + +void RDEventLine::setHaveCode2(QString str) +{ + event_have_code2=str; +} unsigned RDEventLine::titleSep() const { @@ -317,6 +327,7 @@ void RDEventLine::clear() event_autofill_slop=-1; event_sched_group=""; event_have_code=""; + event_have_code2=""; event_title_sep=100; event_nested_event=""; } @@ -328,7 +339,7 @@ bool RDEventLine::load() GRACE_TIME,POST_POINT,USE_AUTOFILL,\ USE_TIMESCALE,IMPORT_SOURCE,START_SLOP,\ END_SLOP,FIRST_TRANS_TYPE,DEFAULT_TRANS_TYPE,\ - COLOR,AUTOFILL_SLOP,NESTED_EVENT,SCHED_GROUP,TITLE_SEP,HAVE_CODE \ + COLOR,AUTOFILL_SLOP,NESTED_EVENT,SCHED_GROUP,TITLE_SEP,HAVE_CODE,HAVE_CODE2 \ from EVENTS where NAME=\"%s\"", (const char *)event_name); RDSqlQuery *q=new RDSqlQuery(sql); @@ -361,7 +372,8 @@ bool RDEventLine::load() event_sched_group=q->value(15).toString(); event_title_sep=q->value(16).toUInt(); event_have_code=q->value(17).toString(); - + event_have_code2=q->value(18).toString(); + delete q; event_preimport_log->load(); event_postimport_log->load(); @@ -383,7 +395,7 @@ bool RDEventLine::save() END_SLOP=%d,FIRST_TRANS_TYPE=%d,\ DEFAULT_TRANS_TYPE=%d,COLOR=\"%s\"\ AUTOFILL_SLOP=%d,NESTED_EVENT=\"%s\",\ - SCHED_GROUP=\"%s\",TITLE_SEP=%d,HAVE_CODE=\"%s\" \ + SCHED_GROUP=\"%s\",TITLE_SEP=%d,HAVE_CODE=\"%s\",HAVE_CODE2=\"%s\" \ where NAME=\"%s\"", (const char *)RDEscapeString(event_properties), event_preposition,event_time_type, @@ -400,6 +412,7 @@ bool RDEventLine::save() (const char *)RDEscapeString(event_sched_group), event_title_sep, (const char*)event_have_code, + (const char*)event_have_code2, (const char *)RDEscapeString(event_name)); } else { @@ -696,8 +709,25 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, *errors+=QString().sprintf("%s Rule broken: Must have code %s\n",(const char *)time.toString("hh:mm:ss"),(const char*)event_have_code); schedCL->restore(); } - - // Scheduler Codes + + // Must have second scheduler code + if(event_have_code2!="") + { + schedCL->save(); + for(counter=0;countergetNumberOfItems();counter++) + { + if(!schedCL->itemHasCode(counter,event_have_code2)) + { + schedCL->removeItem(counter); + counter--; + } + } + if(schedCL->getNumberOfItems()==0) + *errors+=QString().sprintf("%s Rule broken: Must have second code %s\n",(const char *)time.toString("hh:mm:ss"),(const char*)event_have_code2); + schedCL->restore(); + } + + // Scheduler Codes sql=QString().sprintf("select CODE,MAX_ROW,MIN_WAIT,NOT_AFTER, OR_AFTER,OR_AFTER_II from %s_RULES",(const char *)clockname); q=new RDSqlQuery(sql); while (q->next()) diff --git a/lib/rdevent_line.h b/lib/rdevent_line.h index b34e783b..d61bce02 100644 --- a/lib/rdevent_line.h +++ b/lib/rdevent_line.h @@ -70,6 +70,8 @@ class RDEventLine void setSchedGroup(QString str); QString HaveCode() const; void setHaveCode(QString str); + QString HaveCode2() const; + void setHaveCode2(QString str); unsigned titleSep() const; void setTitleSep(unsigned titlesep); RDLogEvent *preimportCarts(); @@ -112,6 +114,7 @@ class RDEventLine QString event_nested_event; QString event_sched_group; QString event_have_code; + QString event_have_code2; unsigned event_title_sep; }; diff --git a/rdadmin/createdb.cpp b/rdadmin/createdb.cpp index dfd31f89..3ba50fb0 100644 --- a/rdadmin/createdb.cpp +++ b/rdadmin/createdb.cpp @@ -8034,8 +8034,12 @@ int UpdateDb(int ver) delete q; } - - + if(ver<240) { + sql=QString("alter table EVENTS add column ")+ + "HAVE_CODE2 VARCHAR(10) after HAVE_CODE"; + q=new QSqlQuery(sql); + delete q; + } // **** End of version updates **** // diff --git a/rdlogmanager/edit_event.cpp b/rdlogmanager/edit_event.cpp index 05029d9c..139f933c 100644 --- a/rdlogmanager/edit_event.cpp +++ b/rdlogmanager/edit_event.cpp @@ -529,6 +529,23 @@ EditEvent::EditEvent(QString eventname,bool new_event, } delete q2; + // And code + + event_have_code2_label= + new QLabel(tr("and code"),this,"event_have_code2_label"); + event_have_code2_label->setFont(bold_font); + event_have_code2_label->setGeometry(CENTER_LINE+420,425,100,20); + + event_have_code2_box=new QComboBox(this,"event_have_code2_box"); + event_have_code2_box->setGeometry(CENTER_LINE+510,425,100,20); + event_have_code2_box->insertItem(""); + sql2="select CODE from SCHED_CODES order by CODE"; + q2=new RDSqlQuery(sql2); + while(q2->next()) { + event_have_code2_box->insertItem(q2->value(0).toString()); + } + delete q2; + // // Start Slop Time @@ -798,6 +815,7 @@ EditEvent::EditEvent(QString eventname,bool new_event, } event_title_sep_spinbox->setValue(event_event->titleSep()); event_have_code_box->setCurrentText(event_event->HaveCode()); + event_have_code2_box->setCurrentText(event_event->HaveCode2()); QColor color=event_event->color(); if(color.isValid()) { event_color_button->setPalette(QPalette(color,backgroundColor())); @@ -1070,6 +1088,8 @@ void EditEvent::importClickedData(int id) event_title_sep_spinbox->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); } @@ -1511,7 +1531,14 @@ void EditEvent::Save() event_event->setProperties(GetProperties()); event_event->setSchedGroup(event_sched_group_box->currentText()); event_event->setTitleSep(event_title_sep_spinbox->value()); - event_event->setHaveCode(event_have_code_box->currentText()); + event_event->setHaveCode(event_have_code_box->currentText()); + if (event_have_code_box->currentText() != QString("")) { + event_event->setHaveCode2(event_have_code2_box->currentText()); + } else { + // save second code as first code when first code isn't defined + event_event->setHaveCode(event_have_code2_box->currentText()); + event_event->setHaveCode2(QString("")); + } listname=event_name; listname.replace(" ","_"); event_preimport_list->logEvent()-> diff --git a/rdlogmanager/edit_event.h b/rdlogmanager/edit_event.h index 433f66e1..88adb6d5 100644 --- a/rdlogmanager/edit_event.h +++ b/rdlogmanager/edit_event.h @@ -110,6 +110,8 @@ class EditEvent : public QDialog QLabel *event_title_sep_label; QComboBox* event_have_code_box; QLabel *event_have_code_label; + QComboBox* event_have_code2_box; + QLabel *event_have_code2_label; LibListView *event_lib_list; QPixmap *event_playout_map; QPixmap *event_macro_map;