From f7fec834e62d987ce666e31d0eaad085821d58d4 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 15 Oct 2020 20:23:57 -0700 Subject: [PATCH] Add a button to automatically set the package TOT. --- qt_ui/windows/mission/QPackageDialog.py | 32 +++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/qt_ui/windows/mission/QPackageDialog.py b/qt_ui/windows/mission/QPackageDialog.py index 696a8ce3..8882e0bf 100644 --- a/qt_ui/windows/mission/QPackageDialog.py +++ b/qt_ui/windows/mission/QPackageDialog.py @@ -16,6 +16,7 @@ from game.game import Game from gen.ato import Package from gen.flights.flight import Flight from gen.flights.flightplan import FlightPlanBuilder +from gen.flights.traveltime import TotEstimator from qt_ui.models import AtoModel, PackageModel from qt_ui.uiconstants import EVENT_ICONS from qt_ui.widgets.ato import QFlightList @@ -77,21 +78,20 @@ class QPackageDialog(QDialog): self.tot_label = QLabel("Time Over Target:") self.tot_column.addWidget(self.tot_label) - if self.package_model.package.time_over_target is None: - time = None - else: - delay = self.package_model.package.time_over_target - hours = delay // 3600 - minutes = delay // 60 % 60 - seconds = delay % 60 - time = QTime(hours, minutes, seconds) - - self.tot_spinner = QTimeEdit(time) + self.tot_spinner = QTimeEdit(self.tot_qtime()) self.tot_spinner.setMinimumTime(QTime(0, 0)) self.tot_spinner.setDisplayFormat("T+hh:mm:ss") self.tot_spinner.timeChanged.connect(self.save_tot) self.tot_column.addWidget(self.tot_spinner) + self.reset_tot_button = QPushButton("Reset TOT") + self.reset_tot_button.setToolTip( + "Sets the package TOT to the earliest time that all flights can " + "arrive at the target." + ) + self.reset_tot_button.clicked.connect(self.reset_tot) + self.tot_column.addWidget(self.reset_tot_button) + self.package_view = QFlightList(self.package_model) self.package_view.selectionModel().selectionChanged.connect( self.on_selection_changed @@ -117,6 +117,13 @@ class QPackageDialog(QDialog): self.finished.connect(self.on_close) + def tot_qtime(self) -> QTime: + delay = self.package_model.package.time_over_target + hours = delay // 3600 + minutes = delay // 60 % 60 + seconds = delay % 60 + return QTime(hours, minutes, seconds) + @staticmethod def on_close(_result) -> None: GameUpdateSignal.get_instance().redraw_flight_paths() @@ -126,6 +133,11 @@ class QPackageDialog(QDialog): seconds = time.hour() * 3600 + time.minute() * 60 + time.second() self.package_model.update_tot(seconds) + def reset_tot(self) -> None: + self.package_model.update_tot( + TotEstimator(self.package_model.package).earliest_tot()) + self.tot_spinner.setTime(self.tot_qtime()) + def on_selection_changed(self, selected: QItemSelection, _deselected: QItemSelection) -> None: """Updates the state of the delete button."""