| 731 | } |
| 732 | |
| 733 | void OnQueryTextFinished(std::optional<std::string> str) override |
| 734 | { |
| 735 | if (!str.has_value()) return; |
| 736 | |
| 737 | const Vehicle *v = this->vehicle; |
| 738 | uint64_t val = ParseInteger<uint64_t>(*str, 10, true).value_or(0); |
| 739 | auto [order_id, mtf] = PackTimetableArgs(v, this->sel_index, query_widget == WID_VT_CHANGE_SPEED); |
| 740 | |
| 741 | switch (query_widget) { |
| 742 | case WID_VT_CHANGE_SPEED: { |
| 743 | val = ConvertDisplaySpeedToKmhishSpeed(val, v->type); |
| 744 | |
| 745 | if (this->change_timetable_all) { |
| 746 | Command<CMD_BULK_CHANGE_TIMETABLE>::Post(STR_ERROR_CAN_T_TIMETABLE_VEHICLE, v->index, mtf, ClampTo<uint16_t>(val)); |
| 747 | } else { |
| 748 | Command<CMD_CHANGE_TIMETABLE>::Post(STR_ERROR_CAN_T_TIMETABLE_VEHICLE, v->index, order_id, mtf, ClampTo<uint16_t>(val)); |
| 749 | } |
| 750 | break; |
| 751 | } |
| 752 | |
| 753 | case WID_VT_CHANGE_TIME: |
| 754 | val *= TicksPerTimetableUnit(); |
| 755 | |
| 756 | if (this->change_timetable_all) { |
| 757 | Command<CMD_BULK_CHANGE_TIMETABLE>::Post(STR_ERROR_CAN_T_TIMETABLE_VEHICLE, v->index, mtf, ClampTo<uint16_t>(val)); |
| 758 | } else { |
| 759 | Command<CMD_CHANGE_TIMETABLE>::Post(STR_ERROR_CAN_T_TIMETABLE_VEHICLE, v->index, order_id, mtf, ClampTo<uint16_t>(val)); |
| 760 | } |
| 761 | break; |
| 762 | |
| 763 | case WID_VT_START_DATE: { |
| 764 | TimerGameTick::TickCounter start_tick = TimerGameTick::counter + (val * Ticks::TICKS_PER_SECOND); |
| 765 | Command<CMD_SET_TIMETABLE_START>::Post(STR_ERROR_CAN_T_TIMETABLE_VEHICLE, v->index, this->change_timetable_all, start_tick); |
| 766 | break; |
| 767 | } |
| 768 | |
| 769 | default: |
| 770 | NOT_REACHED(); |
| 771 | } |
| 772 | } |
| 773 | |
| 774 | void OnResize() override |
| 775 | { |
nothing calls this directly
no test coverage detected