diff --git a/ChangeLog b/ChangeLog index 3f4d2bc3..33ce1eb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23801,3 +23801,6 @@ * Fixed a regression in rdlogedit(1) that caused a newly inserted log event to be assigned the start time parameters of the previously edited event. +2022-12-13 Fred Gleason + * Added logic to the 'Edit Log Entry' dialog in rdlogedit(1) to + prevent entry of an invalid cart number. diff --git a/rdlogedit/edit_event.cpp b/rdlogedit/edit_event.cpp index d6aa2c38..ef04acdd 100644 --- a/rdlogedit/edit_event.cpp +++ b/rdlogedit/edit_event.cpp @@ -132,6 +132,12 @@ int EditEvent::exec() } +void EditEvent::setOkEnabled(bool state) +{ + edit_ok_button->setEnabled(state); +} + + void EditEvent::timeChangedData(const QTime &time) { if(edit_timetype_box->isChecked()) { diff --git a/rdlogedit/edit_event.h b/rdlogedit/edit_event.h index 6b6f7509..7a838b56 100644 --- a/rdlogedit/edit_event.h +++ b/rdlogedit/edit_event.h @@ -47,6 +47,7 @@ class EditEvent : public RDDialog protected: int exec(); + void setOkEnabled(bool state); RDLogLine *logLine(); void setLogLine(RDLogLine *ll); virtual bool saveData()=0; diff --git a/rdlogedit/edit_logline.cpp b/rdlogedit/edit_logline.cpp index 17d12ad8..67c87d4a 100644 --- a/rdlogedit/edit_logline.cpp +++ b/rdlogedit/edit_logline.cpp @@ -58,10 +58,13 @@ EditLogLine::EditLogLine(QString *filter,QString *group,QString *schedcode, // Cart Number // edit_cart_edit=new QLineEdit(this); + edit_cart_edit->setMaxLength(6); edit_cart_edit->setGeometry(10,138,60,18); QLabel *label=new QLabel(tr("Cart"),this); label->setFont(labelFont()); label->setGeometry(12,122,60,14); + connect(edit_cart_edit,SIGNAL(textChanged(const QString &)), + this,SLOT(cartNumberChangedData(const QString &))); // // Title @@ -138,6 +141,7 @@ int EditLogLine::exec(const QString &svcname,LogModel *model, edit_overlap_label->setEnabled(false); } FillCart(logLine()->cartNumber()); + cartNumberChangedData(edit_cart_edit->text()); return EditEvent::exec(); } @@ -156,6 +160,15 @@ void EditLogLine::selectCartData() } +void EditLogLine::cartNumberChangedData(const QString &str) +{ + bool ok=false; + unsigned cartnum=str.toUInt(&ok); + + setOkEnabled(ok&&(cartnum>0)&&(cartnum<=RD_MAX_CART_NUMBER)); +} + + bool EditLogLine::saveData() { if(edit_cart_edit->text().isEmpty()) { diff --git a/rdlogedit/edit_logline.h b/rdlogedit/edit_logline.h index 09ce1fe6..a4626fc6 100644 --- a/rdlogedit/edit_logline.h +++ b/rdlogedit/edit_logline.h @@ -41,6 +41,7 @@ class EditLogLine : public EditEvent private slots: void selectCartData(); + void cartNumberChangedData(const QString &str); protected: bool saveData();