From 74415e756a8f707e74980ee1273c877caaa49835 Mon Sep 17 00:00:00 2001 From: Lars Toenning Date: Sat, 30 Nov 2024 12:18:32 +0100 Subject: [PATCH] refactor: Use chrono instead of plain ints --- src/core/airspaceanalyzer.cpp | 8 +- src/core/airspaceanalyzer.h | 10 +-- src/core/airspacemonitor.cpp | 3 +- src/core/context/contextaudio.cpp | 6 +- src/core/context/contextnetworkimpl.h | 12 +-- src/core/fsd/fsdclient.h | 3 +- .../aircraftmodelvalidationcomponent.cpp | 21 +++-- src/gui/components/atcstationcomponent.cpp | 11 ++- .../audiodevicevolumesetupcomponent.h | 4 +- src/gui/components/autopublishcomponent.cpp | 14 +-- src/gui/components/callsigncompleter.h | 7 +- src/gui/components/commandinput.h | 3 +- ...ymodelsfromotherswiftversionscomponent.cpp | 4 +- .../dbaircraftcategorycomponent.cpp | 10 ++- .../components/dbaircrafticaocomponent.cpp | 11 ++- src/gui/components/dbairlineicaocomponent.cpp | 9 +- src/gui/components/dbliverycomponent.cpp | 11 ++- src/gui/components/dbloadoverviewcomponent.h | 3 +- src/gui/components/dblogincomponent.cpp | 3 +- src/gui/components/dbmappingcomponent.h | 2 +- .../components/dbmappingcomponentaware.cpp | 10 ++- src/gui/components/dbmappingcomponentaware.h | 6 +- src/gui/components/dbmodelcomponent.cpp | 9 +- src/gui/components/dbownmodelscomponent.cpp | 18 ++-- src/gui/components/dbownmodelsetcomponent.cpp | 14 ++- .../components/dbreducemodelduplicates.cpp | 11 +-- src/gui/components/dbstashcomponent.cpp | 12 +-- src/gui/components/dbstashcomponent.h | 8 +- .../distributorpreferencescomponent.cpp | 3 +- src/gui/components/downloadcomponent.cpp | 10 +-- src/gui/components/downloadcomponent.h | 2 +- src/gui/components/firstmodelsetcomponent.cpp | 9 +- src/gui/components/flightplancomponent.cpp | 10 +-- src/gui/components/flightplancomponent.h | 2 +- src/gui/components/infobarstatuscomponent.h | 3 +- .../installfsxterrainprobecomponent.cpp | 3 +- .../components/installxswiftbuscomponent.cpp | 25 +++--- .../components/installxswiftbuscomponent.h | 2 +- .../components/interpolationlogdisplay.cpp | 3 +- src/gui/components/logincomponent.cpp | 26 +++--- src/gui/components/logincomponent.h | 10 +-- src/gui/components/mappingcomponent.cpp | 8 +- src/gui/components/mappingcomponent.h | 2 +- src/gui/components/remoteaircraftselector.h | 3 +- .../settingssimulatorbasicscomponent.cpp | 3 +- src/gui/components/simulatorselector.h | 3 +- src/gui/components/statusmessagesdetail.h | 3 +- src/gui/components/textmessagecomponent.cpp | 10 ++- src/gui/components/textmessagecomponent.h | 4 +- src/gui/components/updateinfocomponent.h | 4 +- src/gui/editors/airlineicaoform.h | 3 +- src/gui/editors/form.cpp | 5 +- src/gui/editors/form.h | 5 +- src/gui/enableforviewbasedindicator.cpp | 4 +- src/gui/enableforviewbasedindicator.h | 2 +- src/gui/guiapplication.cpp | 18 ++-- src/gui/guiapplication.h | 9 +- src/gui/loadindicator.cpp | 11 +-- src/gui/loadindicator.h | 5 +- src/gui/mainwindowaccess.cpp | 13 +-- src/gui/mainwindowaccess.h | 9 +- src/gui/menus/aircraftmodelmenus.cpp | 16 +++- src/gui/models/listmodelbasenontemplate.h | 3 +- src/gui/overlaymessages.cpp | 89 +++++++++---------- src/gui/overlaymessages.h | 39 +++++--- src/gui/overlaymessagesframe.h | 53 ++++++----- src/gui/views/aircraftcategorytreeview.h | 4 +- src/gui/views/atcstationtreeview.h | 4 +- src/gui/views/viewbase.h | 12 +-- src/gui/views/viewbasenontemplate.cpp | 15 ++-- src/misc/aviation/aircraftsituation.cpp | 18 +--- src/misc/aviation/aircraftsituation.h | 7 +- src/misc/crashhandler.h | 3 +- src/misc/digestsignal.cpp | 4 +- src/misc/digestsignal.h | 12 +-- src/sound/selcalplayer.cpp | 10 +-- src/sound/selcalplayer.h | 4 +- src/sound/threadedtonepairplayer.cpp | 3 +- src/sound/tonepair.cpp | 4 +- src/sound/tonepair.h | 7 +- src/swiftguistandard/swiftguistd.cpp | 7 +- src/swiftguistandard/swiftguistd.h | 2 +- src/swiftguistandard/swiftguistdmenus.cpp | 3 +- src/swiftlauncher/swiftlauncher.cpp | 6 +- 84 files changed, 450 insertions(+), 350 deletions(-) diff --git a/src/core/airspaceanalyzer.cpp b/src/core/airspaceanalyzer.cpp index 593eadc9f..242677917 100644 --- a/src/core/airspaceanalyzer.cpp +++ b/src/core/airspaceanalyzer.cpp @@ -182,10 +182,10 @@ namespace swift::core m_doNotRunAgainBefore = -1; // checks - const qint64 aircraftTimeoutMs = m_timeoutAircraft.valueInteger(CTimeUnit::ms()); - const qint64 atcTimeoutMs = m_timeoutAtc.valueInteger(CTimeUnit::ms()); - const qint64 timeoutAircraftEpochMs = currentTimeMsEpoch - aircraftTimeoutMs; - const qint64 timeoutAtcEpochMs = currentTimeMsEpoch - atcTimeoutMs; + const std::chrono::milliseconds aircraftTimeoutMs = m_timeoutAircraft; + const std::chrono::milliseconds atcTimeoutMs = m_timeoutAtc; + const qint64 timeoutAircraftEpochMs = currentTimeMsEpoch - aircraftTimeoutMs.count(); + const qint64 timeoutAtcEpochMs = currentTimeMsEpoch - atcTimeoutMs.count(); const bool enabled = m_enabledWatchdog; const QList callsignsAircraft = m_aircraftCallsignTimestamps.keys(); diff --git a/src/core/airspaceanalyzer.h b/src/core/airspaceanalyzer.h index 050f78654..8675d5300 100644 --- a/src/core/airspaceanalyzer.h +++ b/src/core/airspaceanalyzer.h @@ -7,6 +7,7 @@ #define SWIFT_CORE_AIRSPACE_ANALYZER_H #include +#include #include #include @@ -21,7 +22,6 @@ #include "misc/network/connectionstatus.h" #include "misc/pq/frequency.h" #include "misc/pq/length.h" -#include "misc/pq/time.h" #include "misc/pq/units.h" #include "misc/simulation/airspaceaircraftsnapshot.h" #include "misc/simulation/ownaircraftprovider.h" @@ -131,12 +131,8 @@ namespace swift::core // watchdog CCallsignTimestampSet m_aircraftCallsignTimestamps; //!< for watchdog (pilots) CCallsignTimestampSet m_atcCallsignTimestamps; //!< for watchdog (ATC) - swift::misc::physical_quantities::CTime m_timeoutAircraft = { - 15, swift::misc::physical_quantities::CTimeUnit::s() - }; //!< Timeout value for watchdog functionality - swift::misc::physical_quantities::CTime m_timeoutAtc = { - 50, swift::misc::physical_quantities::CTimeUnit::s() - }; //!< Timeout value for watchdog functionality + std::chrono::seconds m_timeoutAircraft { 15 }; //!< Timeout value for watchdog functionality + std::chrono::seconds m_timeoutAtc { 50 }; //!< Timeout value for watchdog functionality qint64 m_lastWatchdogCallMsSinceEpoch; //!< when last called qint64 m_doNotRunAgainBefore = -1; //!< do not run again before, also used to detect debugging std::atomic_bool m_enabledWatchdog { true }; //!< watchdog enabled diff --git a/src/core/airspacemonitor.cpp b/src/core/airspacemonitor.cpp index 3b5e3c7a3..93051e58a 100644 --- a/src/core/airspacemonitor.cpp +++ b/src/core/airspacemonitor.cpp @@ -1598,7 +1598,8 @@ namespace swift::core // we NEED elevation // actually distance of 200k/h 100ms is just 6.1 meters - const CLength dpt = correctedSituation.getDistancePerTime(100, CElevationPlane::singlePointRadius()); + using namespace std::chrono_literals; + const CLength dpt = correctedSituation.getDistancePerTime(100ms, CElevationPlane::singlePointRadius()); const CAircraftSituationList situationsBeforeStoring = this->remoteAircraftSituations(callsign); const CAircraftSituation situationWithElvBeforeStoring = situationsBeforeStoring.findClosestElevationWithinRange(correctedSituation, dpt); diff --git a/src/core/context/contextaudio.cpp b/src/core/context/contextaudio.cpp index 4fbb068f6..32393ab75 100644 --- a/src/core/context/contextaudio.cpp +++ b/src/core/context/contextaudio.cpp @@ -449,9 +449,9 @@ namespace swift::core::context void CContextAudioBase::playSelcalTone(const CSelcal &selcal) { - const CTime t = m_selcalPlayer->play(90, selcal); - const int ms = t.toMs(); - if (ms > 10) + using namespace std::chrono_literals; + const std::chrono::milliseconds ms = m_selcalPlayer->play(90, selcal); + if (ms > 10ms) { // Play additional notification const QPointer myself(this); diff --git a/src/core/context/contextnetworkimpl.h b/src/core/context/contextnetworkimpl.h index 23efedff5..a96cd0ca0 100644 --- a/src/core/context/contextnetworkimpl.h +++ b/src/core/context/contextnetworkimpl.h @@ -482,12 +482,12 @@ namespace swift::core swift::misc::simulation::CSimulatorInfo m_lastConnectedSim; //!< last connected sim. // Digest signals, only sending after some time - swift::misc::CDigestSignal m_dsAtcStationsOnlineChanged { this, &IContextNetwork::changedAtcStationsOnline, - &IContextNetwork::changedAtcStationsOnlineDigest, - 1000, 4 }; - swift::misc::CDigestSignal m_dsAircraftsInRangeChanged { this, &IContextNetwork::changedAircraftInRange, - &IContextNetwork::changedAircraftInRangeDigest, - 1000, 4 }; + misc::CDigestSignal m_dsAtcStationsOnlineChanged { this, &IContextNetwork::changedAtcStationsOnline, + &IContextNetwork::changedAtcStationsOnlineDigest, + std::chrono::milliseconds(1000), 4 }; + misc::CDigestSignal m_dsAircraftsInRangeChanged { this, &IContextNetwork::changedAircraftInRange, + &IContextNetwork::changedAircraftInRangeDigest, + std::chrono::milliseconds(1000), 4 }; QQueue m_readyForModelMatching; //!< ready for matching diff --git a/src/core/fsd/fsdclient.h b/src/core/fsd/fsdclient.h index f00484e78..6d01f480c 100644 --- a/src/core/fsd/fsdclient.h +++ b/src/core/fsd/fsdclient.h @@ -600,7 +600,8 @@ namespace swift::core::fsd swift::misc::CTokenBucket m_tokenBucket; //!< used with aircraft parts messages swift::misc::aviation::CCallsignSet m_interimPositionReceivers; //!< all aircraft receiving interim positions swift::misc::network::CTextMessageList m_textMessagesToConsolidate; //!< waiting for new messages - swift::misc::CDigestSignal m_dsSendTextMessage { this, &CFSDClient::emitConsolidatedTextMessages, 250, 10 }; + misc::CDigestSignal m_dsSendTextMessage { this, &CFSDClient::emitConsolidatedTextMessages, + std::chrono::milliseconds(250), 10 }; //! ATIS message struct AtisMessage diff --git a/src/gui/components/aircraftmodelvalidationcomponent.cpp b/src/gui/components/aircraftmodelvalidationcomponent.cpp index cd356bd83..4cec1915d 100644 --- a/src/gui/components/aircraftmodelvalidationcomponent.cpp +++ b/src/gui/components/aircraftmodelvalidationcomponent.cpp @@ -69,7 +69,7 @@ namespace swift::gui::components Q_UNUSED(simulator) Q_UNUSED(valid) - constexpr int MsgTimeout = 15000; + constexpr std::chrono::seconds MsgTimeout { 15000 }; m_lastResults = QDateTime::currentMSecsSinceEpoch(); ui->tvp_InvalidModels->updateContainerMaybeAsync(invalid); ui->comp_Simulator->setValue(simulator); @@ -138,11 +138,12 @@ namespace swift::gui::components void CAircraftModelValidationComponent::triggerValidation() { + using namespace std::chrono_literals; if (!sGui || sGui->isShuttingDown() || !sGui->supportsContexts()) { return; } if (!sGui->getIContextSimulator()) { return; } if (sGui->getIContextSimulator()->isValidationInProgress()) { - this->showOverlayHTMLMessage("Validation in progress", 5000); + this->showOverlayHTMLMessage("Validation in progress", 5s); return; } @@ -150,22 +151,24 @@ namespace swift::gui::components if (sGui->getIContextSimulator()->triggerModelSetValidation(simulator)) { this->showOverlayHTMLMessage(QStringLiteral("Triggered validation for '%1'").arg(simulator.toQString(true)), - 5000); + 5s); } else { this->showOverlayHTMLMessage( - QStringLiteral("Cannot trigger validation for '%1'").arg(simulator.toQString(true)), 5000); + QStringLiteral("Cannot trigger validation for '%1'").arg(simulator.toQString(true)), 5s); } } void CAircraftModelValidationComponent::requestLastResults() { + using namespace std::chrono_literals; + if (!sGui || sGui->isShuttingDown() || !sGui->supportsContexts()) { return; } if (!sGui->getIContextSimulator()) { return; } if (sGui->getIContextSimulator()->isValidationInProgress()) { - this->showOverlayHTMLMessage("Validation in progress", 5000); + this->showOverlayHTMLMessage("Validation in progress", 5s); return; } sGui->getIContextSimulator()->triggerModelSetValidation(CSimulatorInfo()); @@ -173,6 +176,8 @@ namespace swift::gui::components void CAircraftModelValidationComponent::onTempDisabledButtonClicked() { + using namespace std::chrono_literals; + if (!sGui || sGui->isShuttingDown()) { return; } CAircraftModelList disableModels; @@ -180,7 +185,7 @@ namespace swift::gui::components if (sender == ui->pb_TempDisableInvalid) { disableModels = ui->tvp_InvalidModels->container(); } else if (sender == ui->pb_TempDisableSelected) { disableModels = ui->tvp_InvalidModels->selectedObjects(); } - if (disableModels.isEmpty()) { this->showOverlayHTMLMessage("No models disabled", 4000); } + if (disableModels.isEmpty()) { this->showOverlayHTMLMessage("No models disabled", 4s); } else { this->tempDisableModels(disableModels); @@ -190,6 +195,8 @@ namespace swift::gui::components void CAircraftModelValidationComponent::onRemoveButtonClicked() { + using namespace std::chrono_literals; + if (!sGui || sGui->isShuttingDown()) { return; } if (!sGui->getIContextSimulator()) { return; } @@ -198,7 +205,7 @@ namespace swift::gui::components if (sender == ui->pb_RemoveInvalid) { removeModels = ui->tvp_InvalidModels->container(); } else if (sender == ui->pb_RemoveSelected) { removeModels = ui->tvp_InvalidModels->selectedObjects(); } - if (removeModels.isEmpty()) { this->showOverlayHTMLMessage("No models removed", 4000); } + if (removeModels.isEmpty()) { this->showOverlayHTMLMessage("No models removed", 4s); } else { const QMessageBox::StandardButton ret = QMessageBox::question( diff --git a/src/gui/components/atcstationcomponent.cpp b/src/gui/components/atcstationcomponent.cpp index 231cc72ca..d31954302 100644 --- a/src/gui/components/atcstationcomponent.cpp +++ b/src/gui/components/atcstationcomponent.cpp @@ -180,6 +180,7 @@ namespace swift::gui::components void CAtcStationComponent::update() { + using namespace std::chrono_literals; if (!this->canAccessContext()) { return; } Q_ASSERT(ui->tvp_AtcStationsOnline); @@ -210,8 +211,8 @@ namespace swift::gui::components if (stationsCount < 1 && allStationsCount > 0) { const QString msg = QStringLiteral("All %1 ATC stations are filtered").arg(allStationsCount); - ui->tvp_AtcStationsOnline->showOverlayHTMLMessage(msg, 5000); - ui->tvp_AtcStationsOnlineTree->showOverlayHTMLMessage(msg, 5000); + ui->tvp_AtcStationsOnline->showOverlayHTMLMessage(msg, 5s); + ui->tvp_AtcStationsOnlineTree->showOverlayHTMLMessage(msg, 5s); } if (stationsCount < 1) { m_selectedCallsign.clear(); } @@ -405,13 +406,15 @@ namespace swift::gui::components void CAtcStationComponent::requestAtisUpdates() { + using namespace std::chrono_literals; + if (!this->canAccessContext()) { return; } sGui->getIContextNetwork()->requestAtisUpdates(); if (ui->tw_Atc->currentIndex() == TabAtcOnline) { - ui->tvp_AtcStationsOnline->showOverlayHTMLMessage("Requested ATIS update", 5000); + ui->tvp_AtcStationsOnline->showOverlayHTMLMessage("Requested ATIS update", 5s); } - else { ui->tvp_AtcStationsOnlineTree->showOverlayHTMLMessage("Requested ATIS update", 5000); } + else { ui->tvp_AtcStationsOnlineTree->showOverlayHTMLMessage("Requested ATIS update", 5s); } } bool CAtcStationComponent::canAccessContext() const diff --git a/src/gui/components/audiodevicevolumesetupcomponent.h b/src/gui/components/audiodevicevolumesetupcomponent.h index e15a94f58..bc02c3301 100644 --- a/src/gui/components/audiodevicevolumesetupcomponent.h +++ b/src/gui/components/audiodevicevolumesetupcomponent.h @@ -162,8 +162,8 @@ namespace swift::gui::components swift::misc::CConnectionGuard m_afvConnections; QScopedPointer ui; swift::misc::audio::CAudioDeviceInfoList m_cbDevices; //!< devices to be displayed in the checkbox - swift::misc::CDigestSignal m_volumeSliderChanged { this, &CAudioDeviceVolumeSetupComponent::saveVolumes, 1000, - 10 }; + swift::misc::CDigestSignal m_volumeSliderChanged { this, &CAudioDeviceVolumeSetupComponent::saveVolumes, + std::chrono::milliseconds(1000), 10 }; swift::misc::CSetting m_audioSettings { this, &CAudioDeviceVolumeSetupComponent::reloadSettings }; diff --git a/src/gui/components/autopublishcomponent.cpp b/src/gui/components/autopublishcomponent.cpp index 0f9068ce4..e4e9abaf2 100644 --- a/src/gui/components/autopublishcomponent.cpp +++ b/src/gui/components/autopublishcomponent.cpp @@ -62,16 +62,18 @@ namespace swift::gui::components void CAutoPublishComponent::sendToDb() { + using namespace std::chrono_literals; + if (!sGui || sGui->isShuttingDown()) { return; } if (m_data.isEmpty()) { - this->showOverlayHTMLMessage("No data!", 5000); + this->showOverlayHTMLMessage("No data!", 5s); return; } if (!sGui->hasWebDataServices()) { - this->showOverlayHTMLMessage("No publishing web service!", 5000); + this->showOverlayHTMLMessage("No publishing web service!", 5s); return; } @@ -100,6 +102,8 @@ namespace swift::gui::components void CAutoPublishComponent::onAutoPublished(bool success, const QString &url, const CStatusMessageList &msgs) { + using namespace std::chrono_literals; + Q_UNUSED(url) Q_UNUSED(success) @@ -108,11 +112,11 @@ namespace swift::gui::components QPointer myself(this); this->showOverlayMessagesWithConfirmation(msgs, true, "Clean up auto publish files?", [=] { if (!myself) { return; } - const int timeoutMs = 5000; + const auto timeout = 5000ms; myself->deleteAllFiles(); - myself->showOverlayHTMLMessage("Cleaned auto publish files after uploading them to DB", timeoutMs); + myself->showOverlayHTMLMessage("Cleaned auto publish files after uploading them to DB", timeout); - QTimer::singleShot(timeoutMs * 1.2, this, [=] { + QTimer::singleShot(timeout * 2, this, [=] { if (!myself) { return; } myself->closeParentDialog(); }); diff --git a/src/gui/components/callsigncompleter.h b/src/gui/components/callsigncompleter.h index eeac3ff6e..c56b08f01 100644 --- a/src/gui/components/callsigncompleter.h +++ b/src/gui/components/callsigncompleter.h @@ -81,10 +81,11 @@ namespace swift::gui::components QScopedPointer ui; swift::misc::CDigestSignal m_dsAircraftsInRangeChanged { this, &CCallsignCompleter::onChangedAircraftInRange, - 5000, 5 }; - swift::misc::CDigestSignal m_dsEditingFinished { this, &CCallsignCompleter::editingFinishedDigest, 500, 3 }; + std::chrono::milliseconds(5000), 5 }; + swift::misc::CDigestSignal m_dsEditingFinished { this, &CCallsignCompleter::editingFinishedDigest, + std::chrono::milliseconds(500), 3 }; swift::misc::CDigestSignal m_dsValidCallsignEntered { this, &CCallsignCompleter::validCallsignEnteredDigest, - 500, 3 }; + std::chrono::milliseconds(500), 3 }; QString m_lastValue; bool m_addOwnCallsign = false; diff --git a/src/gui/components/commandinput.h b/src/gui/components/commandinput.h index cbf4fcd51..ff7f42608 100644 --- a/src/gui/components/commandinput.h +++ b/src/gui/components/commandinput.h @@ -62,7 +62,8 @@ namespace swift::gui::components void onConnectedServerChanged(const swift::misc::network::CServer &server); bool m_showToolTip = true; - swift::misc::CDigestSignal m_dsCommandTooltip { this, &CCommandInput::setCommandToolTip, 5000, 2 }; + swift::misc::CDigestSignal m_dsCommandTooltip { this, &CCommandInput::setCommandToolTip, + std::chrono::seconds(5), 2 }; }; } // namespace swift::gui::components #endif // guard diff --git a/src/gui/components/copymodelsfromotherswiftversionscomponent.cpp b/src/gui/components/copymodelsfromotherswiftversionscomponent.cpp index 193b3db4f..6d68dc748 100644 --- a/src/gui/components/copymodelsfromotherswiftversionscomponent.cpp +++ b/src/gui/components/copymodelsfromotherswiftversionscomponent.cpp @@ -40,6 +40,8 @@ namespace swift::gui::components void CCopyModelsFromOtherSwiftVersionsComponent::copy() { + using namespace std::chrono_literals; + const CSimulatorInfo selectedSimulators = ui->comp_SimulatorSelector->getValue(); const QSet simulators = selectedSimulators.asSingleSimulatorSet(); if (simulators.isEmpty()) @@ -117,7 +119,7 @@ namespace swift::gui::components { const CStatusMessage m = CStatusMessage(this).validationInfo(u"Copied %1 sets and %2 caches for '%3'") << sets << caches << selectedSimulators.toQString(true); - this->showOverlayHTMLMessage(m, 7500); + this->showOverlayHTMLMessage(m, 7500ms); } } diff --git a/src/gui/components/dbaircraftcategorycomponent.cpp b/src/gui/components/dbaircraftcategorycomponent.cpp index 60ded80d4..940bed500 100644 --- a/src/gui/components/dbaircraftcategorycomponent.cpp +++ b/src/gui/components/dbaircraftcategorycomponent.cpp @@ -43,14 +43,14 @@ namespace swift::gui::components void CDbAircraftCategoryComponent::onCategoryRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { + using namespace std::chrono_literals; Q_UNUSED(count); if (!sGui || sGui->isShuttingDown() || !sGui->getWebDataServices()) { return; } if (!entity.testFlag(CEntityFlags::AircraftCategoryEntity)) { return; } if (CEntityFlags::isFinishedReadState(readState)) { - this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), - 2000); + this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), 2s); const CAircraftCategoryList categories = sGui->getWebDataServices()->getAircraftCategories(); ui->tvp_AircraftCategoryView->updateContainerMaybeAsync(categories); ui->tvp_AircraftCategoryTree->updateContainer(categories); @@ -59,15 +59,17 @@ namespace swift::gui::components { this->showOverlayHTMLMessage(u"Current state: " % CEntityFlags::entitiesToString(entity) % u" " % CEntityFlags::stateToString(readState), - 10000); + 10s); } } void CDbAircraftCategoryComponent::onEntityDownloadProgress(CEntityFlags::Entity entity, int logId, int progress, qint64 current, qint64 max, const QUrl &url) { + using namespace std::chrono_literals; + if (!entity.testFlag(CEntityFlags::AircraftCategoryEntity)) { return; } - this->showDownloadProgress(progress, current, max, url, 5000); + this->showDownloadProgress(progress, current, max, url, 5s); Q_UNUSED(logId); } diff --git a/src/gui/components/dbaircrafticaocomponent.cpp b/src/gui/components/dbaircrafticaocomponent.cpp index 4718835b2..12cc51e2b 100644 --- a/src/gui/components/dbaircrafticaocomponent.cpp +++ b/src/gui/components/dbaircrafticaocomponent.cpp @@ -58,29 +58,32 @@ namespace swift::gui::components void CDbAircraftIcaoComponent::onIcaoRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { + using namespace std::chrono_literals; + Q_UNUSED(count); if (!sGui || sGui->isShuttingDown() || !sGui->getWebDataServices()) { return; } if (!entity.testFlag(CEntityFlags::AircraftIcaoEntity)) { return; } if (CEntityFlags::isFinishedReadState(readState)) { - this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), - 2000); + this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), 2s); ui->tvp_AircraftIcao->updateContainerMaybeAsync(sGui->getWebDataServices()->getAircraftIcaoCodes()); } else { this->showOverlayHTMLMessage(u"Current state: " % CEntityFlags::entitiesToString(entity) % u" " % CEntityFlags::stateToString(readState), - 10000); + 10s); } } void CDbAircraftIcaoComponent::onEntityDownloadProgress(CEntityFlags::Entity entity, int logId, int progress, qint64 current, qint64 max, const QUrl &url) { + using namespace std::chrono_literals; + if (CEntityFlags::AircraftIcaoEntity != entity) { return; } - this->showDownloadProgress(progress, current, max, url, 5000); + this->showDownloadProgress(progress, current, max, url, 5s); Q_UNUSED(logId); } diff --git a/src/gui/components/dbairlineicaocomponent.cpp b/src/gui/components/dbairlineicaocomponent.cpp index e19ae13aa..0c88554db 100644 --- a/src/gui/components/dbairlineicaocomponent.cpp +++ b/src/gui/components/dbairlineicaocomponent.cpp @@ -52,6 +52,7 @@ namespace swift::gui::components void CDbAirlineIcaoComponent::onIcaoRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count, const QUrl &url) { + using namespace std::chrono_literals; Q_UNUSED(count) Q_UNUSED(url) @@ -60,23 +61,23 @@ namespace swift::gui::components if (CEntityFlags::isFinishedReadState(readState)) { - this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), - 2000); + this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), 2s); ui->tvp_AirlineIcao->updateContainerMaybeAsync(sGui->getWebDataServices()->getAirlineIcaoCodes()); } else { this->showOverlayHTMLMessage(u"Current state: " % CEntityFlags::entitiesToString(entity) % u" " % CEntityFlags::stateToString(readState), - 10000); + 10s); } } void CDbAirlineIcaoComponent::onEntityDownloadProgress(CEntityFlags::Entity entity, int logId, int progress, qint64 current, qint64 max, const QUrl &url) { + using namespace std::chrono_literals; if (!entity.testFlag(CEntityFlags::AirlineIcaoEntity)) { return; } - this->showDownloadProgress(progress, current, max, url, 5000); + this->showDownloadProgress(progress, current, max, url, 5s); Q_UNUSED(logId); } diff --git a/src/gui/components/dbliverycomponent.cpp b/src/gui/components/dbliverycomponent.cpp index 0af7f82a8..17f26e8ea 100644 --- a/src/gui/components/dbliverycomponent.cpp +++ b/src/gui/components/dbliverycomponent.cpp @@ -50,29 +50,32 @@ namespace swift::gui::components void CDbLiveryComponent::onLiveriesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) { + using namespace std::chrono_literals; + Q_UNUSED(count); if (!sGui || sGui->isShuttingDown() || !sGui->getWebDataServices()) { return; } if (!entity.testFlag(CEntityFlags::LiveryEntity)) { return; } if (CEntityFlags::isFinishedReadState(readState)) { - this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), - 2000); + this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), 2s); ui->tvp_Liveries->updateContainerMaybeAsync(sGui->getWebDataServices()->getLiveries()); } else { this->showOverlayHTMLMessage(u"Current state: " % CEntityFlags::entitiesToString(entity) % u" " % CEntityFlags::stateToString(readState), - 10000); + 10s); } } void CDbLiveryComponent::onEntityDownloadProgress(CEntityFlags::Entity entity, int logId, int progress, qint64 current, qint64 max, const QUrl &url) { + using namespace std::chrono_literals; + if (!entity.testFlag(CEntityFlags::LiveryEntity)) { return; } - this->showDownloadProgress(progress, current, max, url, 5000); + this->showDownloadProgress(progress, current, max, url, 5s); Q_UNUSED(logId); } diff --git a/src/gui/components/dbloadoverviewcomponent.h b/src/gui/components/dbloadoverviewcomponent.h index 7dafd6cb5..750bf6f49 100644 --- a/src/gui/components/dbloadoverviewcomponent.h +++ b/src/gui/components/dbloadoverviewcomponent.h @@ -64,7 +64,8 @@ namespace swift::gui::components private: QScopedPointer ui; - swift::misc::CDigestSignal m_dsTriggerGuiUpdate { this, &CDbLoadOverviewComponent::setGuiValues, 2500, 5 }; + swift::misc::CDigestSignal m_dsTriggerGuiUpdate { this, &CDbLoadOverviewComponent::setGuiValues, + std::chrono::milliseconds(2500), 5 }; qint64 m_sharedLastCheck = -1; //!< when shared URLs were last checked bool m_sharedValueCheckInProgress = false; //!< setting values in progress, needed because of //!< CNetworkUtils::canConnect check (processing events) diff --git a/src/gui/components/dblogincomponent.cpp b/src/gui/components/dblogincomponent.cpp index 8b5b05b8d..d640d3aa2 100644 --- a/src/gui/components/dblogincomponent.cpp +++ b/src/gui/components/dblogincomponent.cpp @@ -89,6 +89,7 @@ namespace swift::gui::components void CDbLoginComponent::onLoginClicked() { + using namespace std::chrono_literals; const QString un(ui->le_Username->text().trimmed()); const QString pw(ui->le_Password->text().trimmed()); const CStatusMessageList msgs = m_loginService.login(un, pw); @@ -100,7 +101,7 @@ namespace swift::gui::components return; } else if (!msgs.isEmpty()) { CLogMessage::preformatted(msgs); } - this->showLoading(5000); + this->showLoading(5s); } void CDbLoginComponent::onLogoffClicked() diff --git a/src/gui/components/dbmappingcomponent.h b/src/gui/components/dbmappingcomponent.h index 3365971ab..1b5ab4913 100644 --- a/src/gui/components/dbmappingcomponent.h +++ b/src/gui/components/dbmappingcomponent.h @@ -335,7 +335,7 @@ namespace swift::gui swift::misc::simulation::fscommon::CVPilotRulesReader m_vPilotReader; //!< read vPilot rules swift::misc::CDigestSignal m_dsStashedModelsChanged { this, &CDbMappingComponent::onStashedModelsChangedDigest, - 750, 25 }; + std::chrono::milliseconds(750), 25 }; swift::misc::CDataReadOnly m_swiftDbUser { this, &CDbMappingComponent::onUserChanged }; diff --git a/src/gui/components/dbmappingcomponentaware.cpp b/src/gui/components/dbmappingcomponentaware.cpp index b86227252..2c3720dbb 100644 --- a/src/gui/components/dbmappingcomponentaware.cpp +++ b/src/gui/components/dbmappingcomponentaware.cpp @@ -26,15 +26,17 @@ namespace swift::gui::components m_mappingComponent = m; } - bool CDbMappingComponentAware::showMappingComponentOverlayMessage(const CStatusMessage &message, int timeoutMs) + bool CDbMappingComponentAware::showMappingComponentOverlayMessage(const CStatusMessage &message, + std::chrono::milliseconds timeout) { if (!m_mappingComponent) { return false; } - return m_mappingComponent->showOverlayMessage(message, timeoutMs); + return m_mappingComponent->showOverlayMessage(message, timeout); } - bool CDbMappingComponentAware::showMappingComponentOverlayHtmlMessage(const CStatusMessage &message, int timeoutMs) + bool CDbMappingComponentAware::showMappingComponentOverlayHtmlMessage(const CStatusMessage &message, + std::chrono::milliseconds timeout) { if (!m_mappingComponent) { return false; } - return m_mappingComponent->showOverlayHTMLMessage(message, timeoutMs); + return m_mappingComponent->showOverlayHTMLMessage(message, timeout); } } // namespace swift::gui::components diff --git a/src/gui/components/dbmappingcomponentaware.h b/src/gui/components/dbmappingcomponentaware.h index 5a14249e9..def1552b5 100644 --- a/src/gui/components/dbmappingcomponentaware.h +++ b/src/gui/components/dbmappingcomponentaware.h @@ -40,8 +40,10 @@ namespace swift::gui::components //! @{ //! Overlay messages - bool showMappingComponentOverlayMessage(const swift::misc::CStatusMessage &message, int timeoutMs = -1); - bool showMappingComponentOverlayHtmlMessage(const swift::misc::CStatusMessage &message, int timeoutMs = -1); + bool showMappingComponentOverlayMessage(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); + bool showMappingComponentOverlayHtmlMessage(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! @} private: diff --git a/src/gui/components/dbmodelcomponent.cpp b/src/gui/components/dbmodelcomponent.cpp index 29948a3c5..fb28874d5 100644 --- a/src/gui/components/dbmodelcomponent.cpp +++ b/src/gui/components/dbmodelcomponent.cpp @@ -79,6 +79,7 @@ namespace swift::gui::components void CDbModelComponent::onModelsRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count, const QUrl &url) { + using namespace std::chrono_literals; Q_UNUSED(count) Q_UNUSED(url) @@ -87,15 +88,14 @@ namespace swift::gui::components if (CEntityFlags::isFinishedReadState(readState)) { - this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), - 2000); + this->showOverlayHTMLMessage(QStringLiteral("Updating %1").arg(CEntityFlags::entitiesToString(entity)), 2s); ui->tvp_AircraftModel->updateContainerMaybeAsync(sGui->getWebDataServices()->getModels()); } else { this->showOverlayHTMLMessage(u"Current state: " % CEntityFlags::entitiesToString(entity) % u" " % CEntityFlags::stateToString(readState), - 10000); + 2s); } } @@ -113,8 +113,9 @@ namespace swift::gui::components void CDbModelComponent::onEntityDownloadProgress(CEntityFlags::Entity entity, int logId, int progress, qint64 current, qint64 max, const QUrl &url) { + using namespace std::chrono_literals; if (!entity.testFlag(CEntityFlags::ModelEntity)) { return; } - this->showDownloadProgress(progress, current, max, url, 5000); + this->showDownloadProgress(progress, current, max, url, 5s); Q_UNUSED(logId) } } // namespace swift::gui::components diff --git a/src/gui/components/dbownmodelscomponent.cpp b/src/gui/components/dbownmodelscomponent.cpp index ae283d89e..0aa5bdc36 100644 --- a/src/gui/components/dbownmodelscomponent.cpp +++ b/src/gui/components/dbownmodelscomponent.cpp @@ -736,18 +736,21 @@ namespace swift::gui::components void CDbOwnModelsComponent::onModelLoaderDiskLoadingStarted(const CSimulatorInfo &simulator, IAircraftModelLoader::LoadMode mode) { + using namespace std::chrono_literals; const CStatusMessage msg = CLogMessage(this).info(u"Started disk loading for '%1' in mode '%2'") << simulator.toQString(true) << IAircraftModelLoader::enumToString(mode); - this->showOverlayHTMLMessage(msg, 5000); + this->showOverlayHTMLMessage(msg, 5s); } void CDbOwnModelsComponent::onModelLoadingProgress(const CSimulatorInfo &simulator, const QString &message, int progress) { + using namespace std::chrono_literals; + const CStatusMessage loadingMsg = CStatusMessage(this).info(u"%1 loading: %2") << simulator.toQString(true) << message; - this->showOverlayHTMLMessage(loadingMsg, 5000); - ui->tvp_OwnAircraftModels->showLoadIndicatorWithTimeout(5000); // trigger new load indicator + this->showOverlayHTMLMessage(loadingMsg, 5s); + ui->tvp_OwnAircraftModels->showLoadIndicatorWithTimeout(5s); // trigger new load indicator Q_UNUSED(progress) } @@ -755,6 +758,7 @@ namespace swift::gui::components const CSimulatorInfo &simulator, IAircraftModelLoader::LoadFinishedInfo info) { + using namespace std::chrono_literals; Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Expect single simulator"); bool hideIndicator = false; // hide in case loading failed @@ -782,7 +786,7 @@ namespace swift::gui::components // overlay if (!summaryMsg.isEmpty() && info == IAircraftModelLoader::ParsedData) { - this->showOverlayHTMLMessage(summaryMsg, 5000); + this->showOverlayHTMLMessage(summaryMsg, 5s); } // signal @@ -804,16 +808,16 @@ namespace swift::gui::components if (statusMessages.hasErrorMessages()) { this->setOverlayMessagesSorting(CStatusMessage::IndexSeverityAsIcon, Qt::DescendingOrder); - this->showOverlayMessagesOrHTMLMessage(statusMessages, false, -1); + this->showOverlayMessagesOrHTMLMessage(statusMessages, false, 0s); } else { // no issues, directly hide - const int timeoutMs = statusMessages.hasWarningOrErrorMessages() ? -1 : 7500; + const std::chrono::milliseconds timeout { statusMessages.hasWarningOrErrorMessages() ? 0 : 7500 }; if (statusMessages.size() < 50) { // small number of messages - this->showOverlayMessagesOrHTMLMessage(statusMessages, false, timeoutMs); + this->showOverlayMessagesOrHTMLMessage(statusMessages, false, timeout); } else { diff --git a/src/gui/components/dbownmodelsetcomponent.cpp b/src/gui/components/dbownmodelsetcomponent.cpp index 8a7b849dc..d34ef4509 100644 --- a/src/gui/components/dbownmodelsetcomponent.cpp +++ b/src/gui/components/dbownmodelsetcomponent.cpp @@ -116,6 +116,8 @@ namespace swift::gui::components void CDbOwnModelSetComponent::setModelSet(const CAircraftModelList &models, const CSimulatorInfo &simulator) { + using namespace std::chrono_literals; + Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); this->setSimulator(simulator); if (models.isEmpty()) @@ -132,7 +134,7 @@ namespace swift::gui::components const CStatusMessage m = CStatusMessage(this).warning(u"Removed %1 models from set, because not matching %2") << diff << simulator.toQString(true); - this->showMappingComponentOverlayHtmlMessage(m, 5000); + this->showMappingComponentOverlayHtmlMessage(m, 5s); } cleanModelList.resetOrder(); ui->tvp_OwnModelSet->updateContainerMaybeAsync(cleanModelList); @@ -140,6 +142,8 @@ namespace swift::gui::components int CDbOwnModelSetComponent::replaceOrAddModelSet(const CAircraftModelList &models, const CSimulatorInfo &simulator) { + using namespace std::chrono_literals; + Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Need single simulator"); if (models.isEmpty()) { return 0; } CAircraftModelList cleanModelList( @@ -150,7 +154,7 @@ namespace swift::gui::components const CStatusMessage m = CStatusMessage(this).warning(u"Removed %1 models from set, because not matching %2") << diff << simulator.toQString(true); - this->showMappingComponentOverlayHtmlMessage(m, 5000); + this->showMappingComponentOverlayHtmlMessage(m, 5s); } if (cleanModelList.isEmpty()) { return 0; } CAircraftModelList updatedModels(ui->tvp_OwnModelSet->container()); @@ -227,6 +231,8 @@ namespace swift::gui::components void CDbOwnModelSetComponent::buttonClicked() { + using namespace std::chrono_literals; + const QObject *sender = QObject::sender(); if (!sender) { return; } @@ -255,9 +261,9 @@ namespace swift::gui::components const QString msg = QStringLiteral("Saved model set for '%1'").arg(sim.toQString(true)); // display either as overlay of componet or view - if (!this->showMappingComponentOverlayHtmlMessage(msg, 5000)) + if (!this->showMappingComponentOverlayHtmlMessage(msg, 5s)) { - ui->tvp_OwnModelSet->showOverlayHTMLMessage(msg, 5000); + ui->tvp_OwnModelSet->showOverlayHTMLMessage(msg, 5s); } } else diff --git a/src/gui/components/dbreducemodelduplicates.cpp b/src/gui/components/dbreducemodelduplicates.cpp index f73382179..93790acfc 100644 --- a/src/gui/components/dbreducemodelduplicates.cpp +++ b/src/gui/components/dbreducemodelduplicates.cpp @@ -72,6 +72,7 @@ namespace swift::gui::components void CDbReduceModelDuplicates::process() { + using namespace std::chrono_literals; if (!sGui || sGui->isShuttingDown()) { return; } this->clearProgressBar(); @@ -80,14 +81,14 @@ namespace swift::gui::components if (m_models.isEmpty()) { const CStatusMessage m = CStatusMessage(this).validationError(u"No models"); - ui->fr_Overlay->showOverlayHTMLMessage(m, 5000); + ui->fr_Overlay->showOverlayHTMLMessage(m, 5s); return; } if (ui->le_Distributor->text().isEmpty()) { const CStatusMessage m = CStatusMessage(this).validationError(u"No distributor"); - ui->fr_Overlay->showOverlayHTMLMessage(m, 5000); + ui->fr_Overlay->showOverlayHTMLMessage(m, 5s); return; } @@ -96,7 +97,7 @@ namespace swift::gui::components { const CStatusMessage m = CStatusMessage(this).validationError(u"Found %1 key duplicates") << keyDuplicates.size(); - ui->fr_Overlay->showOverlayHTMLMessage(m, 5000); + ui->fr_Overlay->showOverlayHTMLMessage(m, 5s); return; } @@ -105,7 +106,7 @@ namespace swift::gui::components if (!distributor.hasValidDbKey()) { const CStatusMessage m = CStatusMessage(this).validationError(u"Invalid distributor"); - ui->fr_Overlay->showOverlayHTMLMessage(m, 5000); + ui->fr_Overlay->showOverlayHTMLMessage(m, 5s); return; } @@ -154,7 +155,7 @@ namespace swift::gui::components CStatusMessage(this).info(u"No duplicates to be removed!") : CStatusMessage(this).info(u"You can remove %1 models of the following distributors: '%2'.") << removeModels.size() << distKeys; - ui->fr_Overlay->showOverlayHTMLMessage(msg, 5000); + ui->fr_Overlay->showOverlayHTMLMessage(msg, 5s); ui->bb_ReduceModelDuplicates->button(QDialogButtonBox::Ok)->setEnabled(true); } diff --git a/src/gui/components/dbstashcomponent.cpp b/src/gui/components/dbstashcomponent.cpp index df37351be..c1996bf6a 100644 --- a/src/gui/components/dbstashcomponent.cpp +++ b/src/gui/components/dbstashcomponent.cpp @@ -482,14 +482,14 @@ namespace swift::gui::components } bool CDbStashComponent::showOverlayMessages(const CStatusMessageList &msgs, bool onlyErrors, bool appendOldMessages, - int timeoutMs) + std::chrono::milliseconds timeout) { if (msgs.isEmpty()) { return false; } if (!msgs.hasErrorMessages() && onlyErrors) { return false; } SWIFT_VERIFY_X(this->getMappingComponent(), Q_FUNC_INFO, "missing mapping component"); if (!this->getMappingComponent()) { return false; } - this->getMappingComponent()->showOverlayMessages(msgs, appendOldMessages, timeoutMs); + this->getMappingComponent()->showOverlayMessages(msgs, appendOldMessages, timeout); return true; } @@ -497,23 +497,23 @@ namespace swift::gui::components const QString &confirmation, std::function okLambda, QMessageBox::StandardButton defaultButton, - bool onlyErrors, int timeoutMs) + bool onlyErrors, std::chrono::milliseconds timeout) { if (msgs.isEmpty()) { return false; } if (!msgs.hasErrorMessages() && onlyErrors) { return false; } SWIFT_VERIFY_X(this->getMappingComponent(), Q_FUNC_INFO, "missing mapping component"); if (!this->getMappingComponent()) { return false; } this->getMappingComponent()->showOverlayMessagesWithConfirmation(msgs, appendOldMessages, confirmation, - okLambda, defaultButton, timeoutMs); + okLambda, defaultButton, timeout); return true; } - bool CDbStashComponent::showOverlayMessage(const CStatusMessage &msg, int timeoutMs) + bool CDbStashComponent::showOverlayMessage(const CStatusMessage &msg, std::chrono::milliseconds timeout) { if (msg.isEmpty()) { return false; } SWIFT_VERIFY_X(this->getMappingComponent(), Q_FUNC_INFO, "missing mapping component"); if (!this->getMappingComponent()) { return false; } - this->getMappingComponent()->showOverlayMessage(msg, timeoutMs); + this->getMappingComponent()->showOverlayMessage(msg, timeout); return true; } diff --git a/src/gui/components/dbstashcomponent.h b/src/gui/components/dbstashcomponent.h index 7445ab904..b439cdb93 100644 --- a/src/gui/components/dbstashcomponent.h +++ b/src/gui/components/dbstashcomponent.h @@ -187,17 +187,19 @@ namespace swift::gui //! Display messages bool showOverlayMessages(const swift::misc::CStatusMessageList &msgs, bool onlyErrors = false, - bool appendOldMessages = false, int timeoutMs = -1); + bool appendOldMessages = false, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Display messages with confirmation bool showOverlayMessagesWithConfirmation(const swift::misc::CStatusMessageList &msgs, bool appendOldMessages, const QString &confirmation, std::function okLambda, QMessageBox::StandardButton defaultButton, bool onlyErrors = false, - int timeoutMs = -1); + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Display message - bool showOverlayMessage(const swift::misc::CStatusMessage &msg, int timeoutMs = -1); + bool showOverlayMessage(const swift::misc::CStatusMessage &msg, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Clear messages void clearOverlayMessages(); diff --git a/src/gui/components/distributorpreferencescomponent.cpp b/src/gui/components/distributorpreferencescomponent.cpp index bf0d6d38e..f9973f4ef 100644 --- a/src/gui/components/distributorpreferencescomponent.cpp +++ b/src/gui/components/distributorpreferencescomponent.cpp @@ -124,13 +124,14 @@ namespace swift::gui::components void CDistributorPreferencesComponent::save() { + using namespace std::chrono_literals; const CDistributorList distributors(ui->tvp_Distributors->container()); const CSimulatorInfo simulator = ui->comp_SimulatorSelector->getValue(); CDistributorListPreferences preferences = m_distributorPreferences.getThreadLocal(); preferences.setDistributors(distributors, simulator); const CStatusMessage m = m_distributorPreferences.setAndSave(preferences); CLogMessage::preformatted(m); - if (m.isSuccess()) { this->showOverlayHTMLMessage("Saved settings", 5000); } + if (m.isSuccess()) { this->showOverlayHTMLMessage("Saved settings", 5s); } else { this->showOverlayMessage(m); } } diff --git a/src/gui/components/downloadcomponent.cpp b/src/gui/components/downloadcomponent.cpp index 777dfc4df..23fdc7f76 100644 --- a/src/gui/components/downloadcomponent.cpp +++ b/src/gui/components/downloadcomponent.cpp @@ -87,7 +87,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).warning(u"'%1' is not a valid download directory") << downloadDir; - this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeout); return; } ui->le_DownloadDir->setText(downloadDir); @@ -174,7 +174,7 @@ namespace swift::gui::components { const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Invalid download directory"); - this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeout); return false; } @@ -184,7 +184,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"No download URL for file name '%1'") << remoteFile.getBaseNameAndSize(); - this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeout); return false; } @@ -226,7 +226,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Starting download for '%1' failed") << download.getFullUrl(); - this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CDownloadComponent::OverlayMsgTimeout); } return success; } @@ -243,7 +243,7 @@ namespace swift::gui::components if (sGui && sGui->isShuttingDown()) { return; } if (status.isWarningOrAbove()) { - this->showOverlayMessage(status, CDownloadComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(status, CDownloadComponent::OverlayMsgTimeout); this->clear(); return; } diff --git a/src/gui/components/downloadcomponent.h b/src/gui/components/downloadcomponent.h index fa576e795..ed423c5d1 100644 --- a/src/gui/components/downloadcomponent.h +++ b/src/gui/components/downloadcomponent.h @@ -82,7 +82,7 @@ namespace swift::gui::components void allDownloadsCompleted(); private: - static constexpr int OverlayMsgTimeoutMs = 5000; //!< how long overlay is displayed + static constexpr std::chrono::milliseconds OverlayMsgTimeout { 5000 }; //!< how long overlay is displayed QScopedPointer ui; const QFileDialog::Options m_fileDialogOptions { QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly | QFileDialog::DontResolveSymlinks }; diff --git a/src/gui/components/firstmodelsetcomponent.cpp b/src/gui/components/firstmodelsetcomponent.cpp index 6b00422cf..3deafc38e 100644 --- a/src/gui/components/firstmodelsetcomponent.cpp +++ b/src/gui/components/firstmodelsetcomponent.cpp @@ -213,6 +213,8 @@ namespace swift::gui::components void CFirstModelSetComponent::changeModelDirectory() { + using namespace std::chrono_literals; + if (!sGui || sGui->isShuttingDown()) { return; } const CSimulatorInfo simulator = ui->comp_SimulatorSelector->getValue(); CSpecializedSimulatorSettings settings = m_simulatorSettings.getSpecializedSettings(simulator); @@ -231,18 +233,19 @@ namespace swift::gui::components const CStatusMessage msg = m_simulatorSettings.setAndSaveSettings(settings, simulator); if (msg.isSuccess()) { this->triggerSettingsChanged(simulator); } - else { this->showOverlayMessage(msg, 4000); } + else { this->showOverlayMessage(msg, 4s); } } void CFirstModelSetComponent::createModelSet() { + using namespace std::chrono_literals; const CSimulatorInfo simulator = ui->comp_SimulatorSelector->getValue(); const int modelsCount = this->modelLoader()->getCachedModelsCount(simulator); if (modelsCount < 1) { static const CStatusMessage msg = CStatusMessage(this).validationError(u"No models indexed so far. Try 'reload'!"); - this->showOverlayMessage(msg, 4000); + this->showOverlayMessage(msg, 4s); return; } @@ -256,7 +259,7 @@ namespace swift::gui::components else { static const CStatusMessage msg = CStatusMessage(this).validationError(u"No distributors selected"); - this->showOverlayMessage(msg, 4000); + this->showOverlayMessage(msg, 4s); return; } } diff --git a/src/gui/components/flightplancomponent.cpp b/src/gui/components/flightplancomponent.cpp index 813e7404b..4791ec9fe 100644 --- a/src/gui/components/flightplancomponent.cpp +++ b/src/gui/components/flightplancomponent.cpp @@ -533,10 +533,10 @@ namespace swift::gui::components ui->le_LastSent->setText(lastSent); if (m.isSeverityInfoOrLess()) { - this->showOverlayHTMLMessage(m, OverlayTimeoutMs); + this->showOverlayHTMLMessage(m, OverlayTimeout); this->updateRemarksHistories(); // all OK, we keep that in history } - else { this->showOverlayMessage(m, OverlayTimeoutMs); } + else { this->showOverlayMessage(m, OverlayTimeout); } m_sentFlightPlan = flightPlan; // last valid FP } else { this->showOverlayMessages(messages); } @@ -575,7 +575,7 @@ namespace swift::gui::components this->fillWithFlightPlanData(fp); this->updateDirectorySettings(fileName); } - else { this->showOverlayMessages(msgs, OverlayTimeoutMs); } + else { this->showOverlayMessages(msgs, true, OverlayTimeout); } } void CFlightPlanComponent::loadTemplateFromDisk() @@ -678,7 +678,7 @@ namespace swift::gui::components { const CStatusMessage m = CLogMessage(this).validationWarning(u"Cannot load network flight plan, network not connected"); - this->showOverlayHTMLMessage(m, OverlayTimeoutMs); + this->showOverlayHTMLMessage(m, OverlayTimeout); return; } @@ -695,7 +695,7 @@ namespace swift::gui::components else { const CStatusMessage m = CLogMessage(this).warning(u"No flight plan data in loaded plan"); - this->showOverlayHTMLMessage(m, OverlayTimeoutMs); + this->showOverlayHTMLMessage(m, OverlayTimeout); } } diff --git a/src/gui/components/flightplancomponent.h b/src/gui/components/flightplancomponent.h index 7d8f9263e..dbee38dd5 100644 --- a/src/gui/components/flightplancomponent.h +++ b/src/gui/components/flightplancomponent.h @@ -97,7 +97,7 @@ namespace swift::gui::components static const QStringList &getLogCategories(); private: - static constexpr int OverlayTimeoutMs = 5000; + static constexpr std::chrono::milliseconds OverlayTimeout { 5000 }; QScopedPointer ui; CAltitudeDialog *m_altitudeDialog = nullptr; CStringListDialog *m_fpRemarksDialog = nullptr; diff --git a/src/gui/components/infobarstatuscomponent.h b/src/gui/components/infobarstatuscomponent.h index 4e7116770..f88ce5145 100644 --- a/src/gui/components/infobarstatuscomponent.h +++ b/src/gui/components/infobarstatuscomponent.h @@ -60,7 +60,8 @@ namespace swift::gui::components swift::misc::input::pttHotkeyIcon(), this, &CInfoBarStatusComponent::onPttChanged }; - swift::misc::CDigestSignal m_dsResize { this, &CInfoBarStatusComponent::adjustTextSize, 1000, 50 }; + swift::misc::CDigestSignal m_dsResize { this, &CInfoBarStatusComponent::adjustTextSize, + std::chrono::seconds { 1 }, 50 }; //! Audio available and NOT muted static bool isAudioAvailableAndNotMuted(); diff --git a/src/gui/components/installfsxterrainprobecomponent.cpp b/src/gui/components/installfsxterrainprobecomponent.cpp index 9c55b6527..5de2af1ea 100644 --- a/src/gui/components/installfsxterrainprobecomponent.cpp +++ b/src/gui/components/installfsxterrainprobecomponent.cpp @@ -51,11 +51,12 @@ namespace swift::gui::components void CInstallFsxTerrainProbeComponent::copyProbe() { + using namespace std::chrono_literals; if (ui->le_Target->text().isEmpty()) { return; } CStatusMessageList msgs; const int copied = CFsCommonUtil::copyFsxTerrainProbeFiles(ui->le_Target->text(), msgs); COverlayMessagesWizardPage *mf = CGuiUtility::nextOverlayMessageWizardPage(this); - if (mf) { mf->showOverlayMessages(msgs, false, 5000); } + if (mf) { mf->showOverlayMessages(msgs, false, 5s); } Q_UNUSED(copied); } diff --git a/src/gui/components/installxswiftbuscomponent.cpp b/src/gui/components/installxswiftbuscomponent.cpp index f9e6feb46..6a4e23abd 100644 --- a/src/gui/components/installxswiftbuscomponent.cpp +++ b/src/gui/components/installxswiftbuscomponent.cpp @@ -75,7 +75,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()) .warning(u"'%1' is not a valid X-Plane plugin directory") << xPlanePluginDir; - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } ui->le_XSwiftBusPluginDir->setText(xPlanePluginDir); @@ -93,7 +93,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).warning(u"'%1' is not a valid download directory") << downloadDir; - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } ui->le_DownloadDir->setText(downloadDir); @@ -111,7 +111,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Cannot read downloaded file '%1'") << downloadFileName; - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } @@ -120,7 +120,7 @@ namespace swift::gui::components { const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"No directory to install to'"); - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } @@ -130,7 +130,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Directory '%1' does not exist") << xSwiftBusDirectory; - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } @@ -144,7 +144,7 @@ namespace swift::gui::components { const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Cannot remove '%1'") << destFileName; - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } } @@ -156,7 +156,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Cannot copy '%1' to '%2'") << downloadFileName << destFileName; - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } @@ -167,7 +167,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"xswiftbus file '%1' does not exist") << destFileName; - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } @@ -208,6 +208,7 @@ namespace swift::gui::components void CInstallXSwiftBusComponent::triggerDownloadingOfXSwiftBusFile() { + using namespace std::chrono_literals; if (!sGui || !sGui->hasWebDataServices() || sGui->isShuttingDown()) { return; } const CRemoteFile rf = this->getRemoteFileSelected(); if (!rf.getBaseName().contains(CBuildConfig::getVersionString())) @@ -227,7 +228,7 @@ namespace swift::gui::components { const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Invalid download directory"); - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } @@ -237,7 +238,7 @@ namespace swift::gui::components const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"No download URL for file name '%1'") << rf.getBaseNameAndSize(); - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); return; } @@ -266,14 +267,14 @@ namespace swift::gui::components if (r) { CLogMessage(this).info(u"Triggered downloading of xswiftbus file from '%1'") << download.getHost(); - this->showLoading(120 * 1000); // timeout in any case + this->showLoading(120s); // timeout in any case } else { const CStatusMessage msg = CStatusMessage(this, CLogCategories::validation()).error(u"Starting download for '%1' failed") << download.getFullUrl(); - this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeoutMs); + this->showOverlayMessage(msg, CInstallXSwiftBusComponent::OverlayMsgTimeout); } } diff --git a/src/gui/components/installxswiftbuscomponent.h b/src/gui/components/installxswiftbuscomponent.h index 7a4b874be..2295d647d 100644 --- a/src/gui/components/installxswiftbuscomponent.h +++ b/src/gui/components/installxswiftbuscomponent.h @@ -43,7 +43,7 @@ namespace swift::gui::components void setDefaultDownloadName(const QString &defaultDownload); private: - static constexpr int OverlayMsgTimeoutMs = 5000; //!< how long overlay is displayed + static constexpr std::chrono::milliseconds OverlayMsgTimeout { 5000 }; //!< how long overlay is displayed QScopedPointer ui; swift::misc::simulation::settings::CMultiSimulatorSettings m_simulatorSettings { diff --git a/src/gui/components/interpolationlogdisplay.cpp b/src/gui/components/interpolationlogdisplay.cpp index d2fcd2b4a..6d7bc1a2e 100644 --- a/src/gui/components/interpolationlogdisplay.cpp +++ b/src/gui/components/interpolationlogdisplay.cpp @@ -504,6 +504,7 @@ namespace swift::gui::components bool CInterpolationLogDisplay::checkLogPrerequisites() { + using namespace std::chrono_literals; CStatusMessage m; do { if (!this->isVisible()) { return false; } // silently return @@ -535,7 +536,7 @@ namespace swift::gui::components while (false); this->stop(); - if (!m.isEmpty()) { this->showOverlayMessage(m, 5000); } + if (!m.isEmpty()) { this->showOverlayMessage(m, 5s); } return false; } diff --git a/src/gui/components/logincomponent.cpp b/src/gui/components/logincomponent.cpp index 3928a486c..210b73132 100644 --- a/src/gui/components/logincomponent.cpp +++ b/src/gui/components/logincomponent.cpp @@ -151,13 +151,11 @@ namespace swift::gui::components } } - void CLoginComponent::setLogoffCountdown(int timeoutSeconds) + void CLoginComponent::setLogoffCountdown(std::chrono::seconds timeout) { - if (timeoutSeconds < 0) { timeoutSeconds = LogoffIntervalSeconds; } - - ui->pb_LogoffTimeout->setMaximum(timeoutSeconds); - ui->pb_LogoffTimeout->setValue(timeoutSeconds); - m_logoffIntervalSeconds = timeoutSeconds; + ui->pb_LogoffTimeout->setMaximum(timeout.count()); + ui->pb_LogoffTimeout->setValue(timeout.count()); + m_logoffIntervalSeconds = timeout; } void CLoginComponent::loginCancelled() @@ -377,7 +375,7 @@ namespace swift::gui::components void CLoginComponent::startLogoffTimerCountdown() { - ui->pb_LogoffTimeout->setValue(m_logoffIntervalSeconds); + ui->pb_LogoffTimeout->setValue(m_logoffIntervalSeconds.count()); m_logoffCountdownTimer.setInterval(1000); m_logoffCountdownTimer.start(); ui->fr_TimeoutConnected->show(); @@ -411,15 +409,16 @@ namespace swift::gui::components void CLoginComponent::autoLogoffDetection() { + using namespace std::chrono_literals; if (!this->hasValidContexts()) { return; } if (!sGui->getIContextNetwork()->isConnected()) { return; } // nothing to logoff const CStatusMessage m = CStatusMessage(this, CStatusMessage::SeverityInfo, u"Auto logoff in progress (could be simulator shutdown, crash, closing simulator)"); - const int delaySecs = 20; - this->showOverlayHTMLMessage(m, qRound(1000 * delaySecs * 0.8)); - this->setLogoffCountdown(delaySecs); + const auto delay = 20s; + this->showOverlayHTMLMessage(m, 800 * delay); + this->setLogoffCountdown(delay); this->startLogoffTimerCountdown(); emit this->requestLoginPage(); @@ -427,6 +426,7 @@ namespace swift::gui::components void CLoginComponent::autoLogoffFrameRate(bool fatal) { + using namespace std::chrono_literals; //! \fixme code duplication with function above if (!this->hasValidContexts()) { return; } if (!sGui->getIContextNetwork()->isConnected()) { return; } @@ -437,11 +437,11 @@ namespace swift::gui::components CStatusMessage(this, CStatusMessage::SeverityWarning, u"Sim frame rate too low to maintain constant simulation rate. Reduce " u"graphics quality to avoid disconnection."); - const int delaySecs = 20; - this->showOverlayHTMLMessage(msg, qRound(1000 * delaySecs * 0.8)); + const auto delay = 20s; + this->showOverlayHTMLMessage(msg, 800 * delay); if (fatal) { - this->setLogoffCountdown(delaySecs); + this->setLogoffCountdown(delay); this->startLogoffTimerCountdown(); } diff --git a/src/gui/components/logincomponent.h b/src/gui/components/logincomponent.h index a2e5c1933..0144c87cb 100644 --- a/src/gui/components/logincomponent.h +++ b/src/gui/components/logincomponent.h @@ -72,7 +72,7 @@ namespace swift::gui::components void mainInfoAreaChanged(const QWidget *currentWidget); //! Set a logoff time - void setLogoffCountdown(int timeoutSeconds = -1); + void setLogoffCountdown(std::chrono::seconds timeout = LogoffIntervalSeconds); //! Login requested void toggleNetworkConnection(); @@ -177,18 +177,18 @@ namespace swift::gui::components //! Has contexts? bool hasValidContexts() const; - static constexpr int OverlayMessageMs = 5000; - static constexpr int LogoffIntervalSeconds = 20; //!< time before logoff + static constexpr std::chrono::milliseconds OverlayMessageMs { 5000 }; + static constexpr std::chrono::seconds LogoffIntervalSeconds { 20 }; //!< time before logoff QScopedPointer ui; swift::misc::CDigestSignal m_changedLoginDataDigestSignal { this, &CLoginComponent::loginDataChangedDigest, - 1500, 10 }; + std::chrono::milliseconds { 1500 }, 10 }; bool m_updatePilotOnServerChanges = true; bool m_networkConnected = false; bool m_simulatorConnected = false; const QIcon m_iconPlay { ":/famfamfam/icons/famfamfam/icons/silk/control_play_blue.png" }; const QIcon m_iconPause { ":/famfamfam/icons/famfamfam/icons/silk/control_pause_blue.png" }; - int m_logoffIntervalSeconds = LogoffIntervalSeconds; + std::chrono::seconds m_logoffIntervalSeconds = LogoffIntervalSeconds; QTimer m_logoffCountdownTimer; //!< timer for logoff countdown swift::misc::CData m_lastAircraftModel { diff --git a/src/gui/components/mappingcomponent.cpp b/src/gui/components/mappingcomponent.cpp index 8c552f31b..4f03f0b69 100644 --- a/src/gui/components/mappingcomponent.cpp +++ b/src/gui/components/mappingcomponent.cpp @@ -324,12 +324,14 @@ namespace swift::gui::components void CMappingComponent::doMatchingsAgain() { + using namespace std::chrono_literals; + if (!sGui || sGui->isShuttingDown() || !sGui->getIContextSimulator()) { return; } if (!sGui->getIContextSimulator()->isSimulatorAvailable()) { return; } const int rematchedNumber = sGui->getIContextSimulator()->doMatchingsAgain(); const QString info = QStringLiteral("Triggered re-matching of %1 aircraft").arg(rematchedNumber); - this->showOverlayHTMLMessage(info, 5000); + this->showOverlayHTMLMessage(info, 5s); CLogMessage(this).info(info); } @@ -417,6 +419,8 @@ namespace swift::gui::components void CMappingComponent::onResetAircraft() { + using namespace std::chrono_literals; + if (!sGui || !sGui->getIContextSimulator() || !sGui->getIContextSimulator()->isSimulatorSimulating()) { return; @@ -426,7 +430,7 @@ namespace swift::gui::components const bool reset = sGui->getIContextSimulator()->resetToModelMatchingAircraft(callsign); const CStatusMessage msg = reset ? CStatusMessage(this).info(u"Model reset for '%1'") << callsign.toQString() : CStatusMessage(this).info(u"Reset failed for '%1'") << callsign.toQString(); - this->showOverlayHTMLMessage(msg, 3000); + this->showOverlayHTMLMessage(msg, 3s); } void CMappingComponent::onModelPreviewChanged(int state) diff --git a/src/gui/components/mappingcomponent.h b/src/gui/components/mappingcomponent.h index 90342cafc..5145cb8ce 100644 --- a/src/gui/components/mappingcomponent.h +++ b/src/gui/components/mappingcomponent.h @@ -189,7 +189,7 @@ namespace swift::gui //! Do re-matching void doMatchingsAgain(); - static constexpr int OverlayMessageMs = 5000; + static constexpr std::chrono::milliseconds OverlayMessageMs { 5000 }; QScopedPointer ui; QTimer m_updateTimer; bool m_missedRenderedAircraftUpdate = true; //! Rendered aircraft need update diff --git a/src/gui/components/remoteaircraftselector.h b/src/gui/components/remoteaircraftselector.h index 65af42950..79d4e50bb 100644 --- a/src/gui/components/remoteaircraftselector.h +++ b/src/gui/components/remoteaircraftselector.h @@ -73,7 +73,8 @@ namespace swift::gui::components QString m_currentText; bool m_showPartsEnabled = false; swift::misc::simulation::CSimulatedAircraftList m_aircraft; - swift::misc::CDigestSignal m_dsFillComboBox { this, &CRemoteAircraftSelector::fillComboBox, 3000, 5 }; + swift::misc::CDigestSignal m_dsFillComboBox { this, &CRemoteAircraftSelector::fillComboBox, + std::chrono::seconds(3), 5 }; }; } // namespace swift::gui::components diff --git a/src/gui/components/settingssimulatorbasicscomponent.cpp b/src/gui/components/settingssimulatorbasicscomponent.cpp index e44039b10..44577e175 100644 --- a/src/gui/components/settingssimulatorbasicscomponent.cpp +++ b/src/gui/components/settingssimulatorbasicscomponent.cpp @@ -126,6 +126,7 @@ namespace swift::gui::components void CSettingsSimulatorBasicsComponent::save() { + using namespace std::chrono_literals; const CSimulatorInfo simulator(ui->comp_SimulatorSelector->getValue()); CSimulatorSettings s = this->getSettings(simulator).getGenericSettings(); const QString simulatorDir(ui->le_SimulatorDirectory->text().trimmed()); @@ -142,7 +143,7 @@ namespace swift::gui::components { const CStatusMessage m = m_settings.setAndSaveSettings(s, simulator); if (!m.isEmpty()) { CLogMessage::preformatted(m); } - if (m.isSuccess()) { this->showOverlayHTMLMessage("Saved settings", 5000); } + if (m.isSuccess()) { this->showOverlayHTMLMessage("Saved settings", 5s); } else { this->showOverlayMessage(m); } m_unsavedChanges = m_unsavedChanges && !m.isSuccess(); // reset if success, but only if there were changes diff --git a/src/gui/components/simulatorselector.h b/src/gui/components/simulatorselector.h index ae401d236..219492885 100644 --- a/src/gui/components/simulatorselector.h +++ b/src/gui/components/simulatorselector.h @@ -145,7 +145,8 @@ namespace swift::gui::components Mode m_mode = CheckBoxes; bool m_noSelectionMeansAll = false; //!< for filters, no selection means all bool m_rememberSelection = false; //!< remember last selection - swift::misc::CDigestSignal m_digestButtonsChanged { this, &CSimulatorSelector::emitChangedSignal, 250, 3 }; + misc::CDigestSignal m_digestButtonsChanged { this, &CSimulatorSelector::emitChangedSignal, + std::chrono::milliseconds(250), 3 }; swift::misc::CData m_currentSimulator { this, &CSimulatorSelector::changedLastSelectionRb }; //!< current simulator (used with radio buttons) diff --git a/src/gui/components/statusmessagesdetail.h b/src/gui/components/statusmessagesdetail.h index 4d163e37f..30f872113 100644 --- a/src/gui/components/statusmessagesdetail.h +++ b/src/gui/components/statusmessagesdetail.h @@ -82,7 +82,8 @@ namespace swift::gui::components int m_maxLogMessages = -1; swift::misc::CStatusMessageList m_pending; //!< pending messages which will be added with next CStatusMessagesDetail::deferredUpdate - swift::misc::CDigestSignal m_dsDeferredUpdate { this, &CStatusMessagesDetail::deferredUpdate, 2000, 25 }; + swift::misc::CDigestSignal m_dsDeferredUpdate { this, &CStatusMessagesDetail::deferredUpdate, + std::chrono::milliseconds(2000), 25 }; //! Do not update each message, but deferred void deferredUpdate(); diff --git a/src/gui/components/textmessagecomponent.cpp b/src/gui/components/textmessagecomponent.cpp index 49262f447..b9914cbd5 100644 --- a/src/gui/components/textmessagecomponent.cpp +++ b/src/gui/components/textmessagecomponent.cpp @@ -179,6 +179,7 @@ namespace swift::gui::components void CTextMessageComponent::displayTextMessage(const CTextMessageList &messages) { + using namespace std::chrono_literals; if (messages.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } const CSimulatedAircraft ownAircraft(this->getOwnAircraft()); @@ -202,7 +203,7 @@ namespace swift::gui::components if (msgSettings.popupSelcalMessages()) { CStatusMessage msg = CLogMessage(this).info(u"SELCAL received"); - this->emitDisplayInInfoWindow(CVariant::from(msg), 3 * 1000); + this->emitDisplayInInfoWindow(CVariant::from(msg), 3s); } continue; } @@ -299,7 +300,7 @@ namespace swift::gui::components { if (msgSettings.popup(message, ownAircraft)) { - this->emitDisplayInInfoWindow(CVariant::from(message), 15 * 1000); + this->emitDisplayInInfoWindow(CVariant::from(message), 15s); } } } // message @@ -708,10 +709,11 @@ namespace swift::gui::components return {}; } - void CTextMessageComponent::emitDisplayInInfoWindow(const CVariant &message, int displayDurationMs) + void CTextMessageComponent::emitDisplayInInfoWindow(const CVariant &message, + std::chrono::milliseconds displayDuration) { if (m_usedAsOverlayWidget) { return; } - emit this->displayInInfoWindow(message, displayDurationMs); + emit this->displayInInfoWindow(message, displayDuration); } void CTextMessageComponent::handleEnteredTextMessage(const QString &textMessage) diff --git a/src/gui/components/textmessagecomponent.h b/src/gui/components/textmessagecomponent.h index 9b10f69df..ba8964597 100644 --- a/src/gui/components/textmessagecomponent.h +++ b/src/gui/components/textmessagecomponent.h @@ -111,7 +111,7 @@ namespace swift::gui signals: //! Message to be displayed in central info window //! \remark do not emit in overlay messages - void displayInInfoWindow(const swift::misc::CVariant &message, int displayDurationMs); + void displayInInfoWindow(const swift::misc::CVariant &message, std::chrono::milliseconds displayDuration); //! Command line was entered void commandEntered(const QString &commandLine, const swift::misc::CIdentifier &originator); @@ -248,7 +248,7 @@ namespace swift::gui swift::misc::aviation::CCallsign getCallsignPropertyForTab(int tabIndex, bool validated) const; //! Emit the display in info window signal - void emitDisplayInInfoWindow(const swift::misc::CVariant &message, int displayDurationMs); + void emitDisplayInInfoWindow(const misc::CVariant &message, std::chrono::milliseconds displayDuration); //! Get the 1st part of the tab text, "DAMBZ: Joe Doe" -> "DAMBZ", "123.45 Foo" -> "123.45" static QString firstPartOfTabText(const QString &tabText); diff --git a/src/gui/components/updateinfocomponent.h b/src/gui/components/updateinfocomponent.h index 2602909a2..2c3437a42 100644 --- a/src/gui/components/updateinfocomponent.h +++ b/src/gui/components/updateinfocomponent.h @@ -73,8 +73,8 @@ namespace swift::gui::components swift::misc::CSetting m_updateSettings { this }; //!< channel/platform selected - swift::misc::CDigestSignal m_dsDistributionAvailable { this, &CUpdateInfoComponent::updateInfoAvailable, 15000, - 2 }; + swift::misc::CDigestSignal m_dsDistributionAvailable { this, &CUpdateInfoComponent::updateInfoAvailable, + std::chrono::milliseconds(15000), 2 }; //! Load latest version void requestLoadOfSetup(); diff --git a/src/gui/editors/airlineicaoform.h b/src/gui/editors/airlineicaoform.h index 33defda20..6b01bd82d 100644 --- a/src/gui/editors/airlineicaoform.h +++ b/src/gui/editors/airlineicaoform.h @@ -84,7 +84,8 @@ namespace swift::gui::editors private: QScopedPointer ui; swift::misc::CDigestSignal m_digestChanges { this, &CAirlineIcaoForm::airlineChanged, - &CAirlineIcaoForm::emitAirlineChangedDigest, 500, 3 }; + &CAirlineIcaoForm::emitAirlineChangedDigest, + std::chrono::milliseconds(500), 3 }; swift::misc::aviation::CAirlineIcaoCode m_currentCode; //!< object allowing to override values }; } // namespace swift::gui::editors diff --git a/src/gui/editors/form.cpp b/src/gui/editors/form.cpp index eee43c91c..9d0ea1fdd 100644 --- a/src/gui/editors/form.cpp +++ b/src/gui/editors/form.cpp @@ -26,10 +26,11 @@ namespace swift::gui::editors return CStatusMessageList(); } - CStatusMessageList CForm::validateAsOverlayMessage(bool withNestedObjects, bool appendOldMessages, int timeOutMs) + CStatusMessageList CForm::validateAsOverlayMessage(bool withNestedObjects, bool appendOldMessages, + std::chrono::milliseconds timeout) { const CStatusMessageList msgs = this->validate(withNestedObjects); - this->showOverlayMessages(msgs, appendOldMessages, timeOutMs); + this->showOverlayMessages(msgs, appendOldMessages, timeout); return msgs; } diff --git a/src/gui/editors/form.h b/src/gui/editors/form.h index 3b2674abc..ed0798c08 100644 --- a/src/gui/editors/form.h +++ b/src/gui/editors/form.h @@ -46,8 +46,9 @@ namespace swift::gui::editors //! Validate as overlay message //! \note uses CForm::validate and displays the messages as overlay messages - swift::misc::CStatusMessageList validateAsOverlayMessage(bool withNestedObjects = true, - bool appendOldMessages = false, int timeOutMs = -1); + swift::misc::CStatusMessageList + validateAsOverlayMessage(bool withNestedObjects = true, bool appendOldMessages = false, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Is read only? bool isReadOnly() const { return m_readOnly; } diff --git a/src/gui/enableforviewbasedindicator.cpp b/src/gui/enableforviewbasedindicator.cpp index 4858f680d..8993841de 100644 --- a/src/gui/enableforviewbasedindicator.cpp +++ b/src/gui/enableforviewbasedindicator.cpp @@ -26,10 +26,10 @@ namespace swift::gui return false; } - int CEnableForViewBasedIndicator::showLoadIndicator(int timeoutMs) + int CEnableForViewBasedIndicator::showLoadIndicator(std::chrono::milliseconds timeout) { Q_ASSERT_X(m_viewWithIndicator, Q_FUNC_INFO, "Missing view to display indicator"); - if (m_viewWithIndicator) { return m_viewWithIndicator->showLoadIndicatorWithTimeout(timeoutMs); } + if (m_viewWithIndicator) { return m_viewWithIndicator->showLoadIndicatorWithTimeout(timeout); } return -1; } diff --git a/src/gui/enableforviewbasedindicator.h b/src/gui/enableforviewbasedindicator.h index 237304275..8ee339c4a 100644 --- a/src/gui/enableforviewbasedindicator.h +++ b/src/gui/enableforviewbasedindicator.h @@ -25,7 +25,7 @@ namespace swift::gui bool isShowingLoadIndicator() const; //! Show loading indicator - int showLoadIndicator(int timeoutMs = -1); + int showLoadIndicator(std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Hide loading indicator void hideLoadIndicator(); diff --git a/src/gui/guiapplication.cpp b/src/gui/guiapplication.cpp index 5295ee677..ede40c4c3 100644 --- a/src/gui/guiapplication.cpp +++ b/src/gui/guiapplication.cpp @@ -539,31 +539,31 @@ namespace swift::gui return m->displayInStatusBar(message); } - bool CGuiApplication::displayInOverlayWindow(const CStatusMessage &message, int timeOutMs) + bool CGuiApplication::displayInOverlayWindow(const CStatusMessage &message, std::chrono::milliseconds timeout) { if (message.isEmpty()) { return false; } IMainWindowAccess *m = mainWindowAccess(); SWIFT_VERIFY_X(m, Q_FUNC_INFO, "No access interface"); - if (!m) { return IMainWindowAccess::displayInOverlayWindow(message, timeOutMs); } - return m->displayInOverlayWindow(message, timeOutMs); + if (!m) { return IMainWindowAccess::displayInOverlayWindow(message, timeout); } + return m->displayInOverlayWindow(message, timeout); } - bool CGuiApplication::displayInOverlayWindow(const CStatusMessageList &messages, int timeOutMs) + bool CGuiApplication::displayInOverlayWindow(const CStatusMessageList &messages, std::chrono::milliseconds timeout) { if (messages.isEmpty()) { return false; } IMainWindowAccess *m = mainWindowAccess(); SWIFT_VERIFY_X(m, Q_FUNC_INFO, "No access interface"); - if (!m) { return IMainWindowAccess::displayInOverlayWindow(messages, timeOutMs); } - return m->displayInOverlayWindow(messages, timeOutMs); + if (!m) { return IMainWindowAccess::displayInOverlayWindow(messages, timeout); } + return m->displayInOverlayWindow(messages, timeout); } - bool CGuiApplication::displayInOverlayWindow(const QString &html, int timeOutMs) + bool CGuiApplication::displayInOverlayWindow(const QString &html, std::chrono::milliseconds timeout) { if (html.isEmpty()) { return false; } IMainWindowAccess *m = mainWindowAccess(); SWIFT_VERIFY_X(m, Q_FUNC_INFO, "No access interface"); - if (!m) { return IMainWindowAccess::displayInOverlayWindow(html, timeOutMs); } - return m->displayInOverlayWindow(html, timeOutMs); + if (!m) { return IMainWindowAccess::displayInOverlayWindow(html, timeout); } + return m->displayInOverlayWindow(html, timeout); } void CGuiApplication::addMenuForSettingsAndCache(QMenu &menu) diff --git a/src/gui/guiapplication.h b/src/gui/guiapplication.h index 758476bd3..8ebf5e426 100644 --- a/src/gui/guiapplication.h +++ b/src/gui/guiapplication.h @@ -126,9 +126,12 @@ namespace swift::gui //! @{ //! direct access to main application window bool displayInStatusBar(const swift::misc::CStatusMessage &message) override; - bool displayInOverlayWindow(const swift::misc::CStatusMessage &message, int timeOutMs = -1) override; - bool displayInOverlayWindow(const swift::misc::CStatusMessageList &messages, int timeOutMs = -1) override; - bool displayInOverlayWindow(const QString &html, int timeOutMs = -1) override; + bool displayInOverlayWindow(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) override; + bool displayInOverlayWindow(const swift::misc::CStatusMessageList &messages, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) override; + bool displayInOverlayWindow(const QString &html, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) override; //! @} // -------- Splash screen related --------- diff --git a/src/gui/loadindicator.cpp b/src/gui/loadindicator.cpp index c6781887d..88c544bc0 100644 --- a/src/gui/loadindicator.cpp +++ b/src/gui/loadindicator.cpp @@ -39,8 +39,9 @@ namespace swift::gui bool CLoadIndicator::isDisplayedWhenStopped() const { return m_displayedWhenStopped; } - int CLoadIndicator::startAnimation(int timeoutMs, bool processEvents) + int CLoadIndicator::startAnimation(std::chrono::milliseconds timeout, bool processEvents) { + using namespace std::chrono_literals; m_angle = 0; this->show(); this->setEnabled(true); @@ -57,9 +58,9 @@ namespace swift::gui } const int stopId = m_currentId++; // copy - if (timeoutMs > 0) + if (timeout > 0ms) { - QTimer::singleShot(timeoutMs, this, [=] { + QTimer::singleShot(timeout, this, [=] { if (!myself) { return; } // only timeout myself id @@ -187,7 +188,7 @@ namespace swift::gui bool CLoadIndicatorEnabled::isLoadInProgress() const { return m_loadInProgress; } - void CLoadIndicatorEnabled::showLoading(int timeoutMs, bool processEvents) + void CLoadIndicatorEnabled::showLoading(std::chrono::milliseconds timeout, bool processEvents) { if (!m_loadIndicator) { @@ -196,7 +197,7 @@ namespace swift::gui } this->centerLoadIndicator(); - m_indicatorId = m_loadIndicator->startAnimation(timeoutMs, processEvents); + m_indicatorId = m_loadIndicator->startAnimation(timeout, processEvents); } void CLoadIndicatorEnabled::hideLoading() diff --git a/src/gui/loadindicator.h b/src/gui/loadindicator.h index 9b67a72f6..6a784f2a7 100644 --- a/src/gui/loadindicator.h +++ b/src/gui/loadindicator.h @@ -73,7 +73,8 @@ namespace swift::gui public slots: //! Starts the spin animation. //! \sa stopAnimation isAnimated - int startAnimation(int timeoutMs = -1, bool processEvents = false); + int startAnimation(std::chrono::milliseconds timeout = std::chrono::milliseconds(0), + bool processEvents = false); //! Stops the spin animation. //! \sa startAnimation isAnimated @@ -135,7 +136,7 @@ namespace swift::gui bool isShowingLoadIndicator() const; //! Show load indicator - void showLoading(int timeoutMs = -1, bool processEvents = true); + void showLoading(std::chrono::milliseconds timeout = std::chrono::milliseconds(0), bool processEvents = true); //! Hide load indicator void hideLoading(); diff --git a/src/gui/mainwindowaccess.cpp b/src/gui/mainwindowaccess.cpp index d7f9a1100..89d9310d5 100644 --- a/src/gui/mainwindowaccess.cpp +++ b/src/gui/mainwindowaccess.cpp @@ -24,27 +24,28 @@ namespace swift::gui return true; } - bool IMainWindowAccess::displayInOverlayWindow(const CStatusMessage &message, int timeOutMs) + bool IMainWindowAccess::displayInOverlayWindow(const CStatusMessage &message, std::chrono::milliseconds timeout) { if (message.isEmpty()) { return false; } if (!m_mwaOverlayFrame) { return false; } - m_mwaOverlayFrame->showOverlayMessage(message, timeOutMs); + m_mwaOverlayFrame->showOverlayMessage(message, timeout); return true; } - bool IMainWindowAccess::displayInOverlayWindow(const CStatusMessageList &messages, int timeOutMs) + bool IMainWindowAccess::displayInOverlayWindow(const CStatusMessageList &messages, + std::chrono::milliseconds timeout) { if (messages.isEmpty()) { return false; } if (!m_mwaOverlayFrame) { return false; } - m_mwaOverlayFrame->showOverlayMessages(messages, false, timeOutMs); + m_mwaOverlayFrame->showOverlayMessages(messages, false, timeout); return true; } - bool IMainWindowAccess::displayInOverlayWindow(const QString &html, int timeOutMs) + bool IMainWindowAccess::displayInOverlayWindow(const QString &html, std::chrono::milliseconds timeout) { if (html.isEmpty()) { return false; } if (!m_mwaOverlayFrame) { return false; } - m_mwaOverlayFrame->showOverlayHTMLMessage(html, timeOutMs); + m_mwaOverlayFrame->showOverlayHTMLMessage(html, timeout); return true; } } // namespace swift::gui diff --git a/src/gui/mainwindowaccess.h b/src/gui/mainwindowaccess.h index d90786c20..65ceef9f6 100644 --- a/src/gui/mainwindowaccess.h +++ b/src/gui/mainwindowaccess.h @@ -41,13 +41,16 @@ namespace swift::gui virtual bool displayInStatusBar(const swift::misc::CStatusMessage &message); //! Display in overlay window - virtual bool displayInOverlayWindow(const swift::misc::CStatusMessage &message, int timeOutMs = -1); + virtual bool displayInOverlayWindow(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Display in overlay window - virtual bool displayInOverlayWindow(const swift::misc::CStatusMessageList &messages, int timeOutMs = -1); + virtual bool displayInOverlayWindow(const swift::misc::CStatusMessageList &messages, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Display in overlay window - virtual bool displayInOverlayWindow(const QString &html, int timeOutMs = -1); + virtual bool displayInOverlayWindow(const QString &html, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); protected: components::CLogComponent *m_mwaLogComponent = nullptr; //!< the log component if any diff --git a/src/gui/menus/aircraftmodelmenus.cpp b/src/gui/menus/aircraftmodelmenus.cpp index e84f84629..19ccfcea5 100644 --- a/src/gui/menus/aircraftmodelmenus.cpp +++ b/src/gui/menus/aircraftmodelmenus.cpp @@ -334,6 +334,8 @@ namespace swift::gui::menus void CConsolidateWithSimulatorModels::consolidateData() { + using namespace std::chrono_literals; + bool filtered = false; const CAircraftModelList models(this->getAllOrAllFilteredAircraftModels(&filtered)); if (models.isEmpty()) { return; } @@ -353,12 +355,14 @@ namespace swift::gui::menus if (!removedModelStrings.isEmpty() && this->getMappingComponent()) { const CStatusMessage m = CStatusMessage(this).info(u"Removed %1 model(s)") << removedModelStrings.size(); - this->getMappingComponent()->showOverlayMessage(m, 5000); + this->getMappingComponent()->showOverlayMessage(m, 5s); } } void CConsolidateWithSimulatorModels::consolidateSelectedData() { + using namespace std::chrono_literals; + Q_ASSERT_X(sGui, Q_FUNC_INFO, "Missing sGui"); const CAircraftModelList models(this->getSelectedAircraftModels()); if (models.isEmpty()) { return; } @@ -379,12 +383,14 @@ namespace swift::gui::menus if (!removedModelStrings.isEmpty() && this->getMappingComponent()) { const CStatusMessage m = CStatusMessage(this).info(u"Removed %1 model(s)") << removedModelStrings.size(); - this->getMappingComponent()->showOverlayMessage(m, 5000); + this->getMappingComponent()->showOverlayMessage(m, 5s); } } void CConsolidateWithSimulatorModels::updateDirectoryData() { + using namespace std::chrono_literals; + bool filtered = false; const CAircraftModelList models(this->getAllOrAllFilteredAircraftModels(&filtered)); if (models.isEmpty()) { return; } @@ -404,12 +410,14 @@ namespace swift::gui::menus if (!removedModelStrings.isEmpty() && this->getMappingComponent()) { const CStatusMessage m = CStatusMessage(this).info(u"Removed %1 model(s)") << removedModelStrings.size(); - this->getMappingComponent()->showOverlayMessage(m, 5000); + this->getMappingComponent()->showOverlayMessage(m, 5s); } } void CConsolidateWithSimulatorModels::updateDirectorySelectedData() { + using namespace std::chrono_literals; + Q_ASSERT_X(sGui, Q_FUNC_INFO, "Missing sGui"); const CAircraftModelList models(this->getSelectedAircraftModels()); if (models.isEmpty()) { return; } @@ -430,7 +438,7 @@ namespace swift::gui::menus if (!removedModelStrings.isEmpty() && this->getMappingComponent()) { const CStatusMessage m = CStatusMessage(this).info(u"Removed %1 model(s)") << removedModelStrings.size(); - this->getMappingComponent()->showOverlayMessage(m, 5000); + this->getMappingComponent()->showOverlayMessage(m, 5s); } } diff --git a/src/gui/models/listmodelbasenontemplate.h b/src/gui/models/listmodelbasenontemplate.h index 9f924d2ee..10d759193 100644 --- a/src/gui/models/listmodelbasenontemplate.h +++ b/src/gui/models/listmodelbasenontemplate.h @@ -190,7 +190,8 @@ namespace swift::gui::models private: swift::misc::CDigestSignal m_dsModelsChanged { this, &CListModelBaseNonTemplate::changed, - &CListModelBaseNonTemplate::onChangedDigest, 500, 10 }; + &CListModelBaseNonTemplate::onChangedDigest, + std::chrono::milliseconds(500), 10 }; }; } // namespace swift::gui::models diff --git a/src/gui/overlaymessages.cpp b/src/gui/overlaymessages.cpp index 11a20c64f..00d0e33a5 100644 --- a/src/gui/overlaymessages.cpp +++ b/src/gui/overlaymessages.cpp @@ -151,7 +151,7 @@ namespace swift::gui } void COverlayMessages::showOverlayMessages(const CStatusMessageList &messages, bool appendOldMessages, - int timeOutMs) + std::chrono::milliseconds timeout) { if (messages.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } @@ -161,7 +161,7 @@ namespace swift::gui QPointer myself(this); m_pendingMessageCalls.push_back([=]() { if (!myself) { return; } - myself->showOverlayMessages(messages, timeOutMs); + myself->showOverlayMessages(messages, true, timeout); }); return; } @@ -178,25 +178,25 @@ namespace swift::gui ui->tvp_StatusMessages->updateContainerMaybeAsync(newMsgs); this->setModeToMessages(false); - this->display(timeOutMs); + this->display(timeout); } void COverlayMessages::showOverlayMessagesOrSingleMessage(const CStatusMessageList &messages, - bool appendOldMessages, int timeOutMs) + bool appendOldMessages, std::chrono::milliseconds timeout) { if (messages.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } - if (messages.size() > 1) { this->showOverlayMessages(messages, appendOldMessages, timeOutMs); } - else { this->showOverlayMessage(messages.front(), timeOutMs); } + if (messages.size() > 1) { this->showOverlayMessages(messages, appendOldMessages, timeout); } + else { this->showOverlayMessage(messages.front(), timeout); } } void COverlayMessages::showOverlayMessagesOrHTMLMessage(const CStatusMessageList &messages, bool appendOldMessages, - int timeOutMs) + std::chrono::milliseconds timeout) { if (messages.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } - if (messages.size() > 1) { this->showOverlayMessages(messages, appendOldMessages, timeOutMs); } - else { this->showHTMLMessage(messages.front(), timeOutMs); } + if (messages.size() > 1) { this->showOverlayMessages(messages, appendOldMessages, timeout); } + else { this->showHTMLMessage(messages.front(), timeout); } } void COverlayMessages::sortOverlayMessages(const CPropertyIndex &propertyIndex, Qt::SortOrder order) @@ -209,7 +209,7 @@ namespace swift::gui ui->tvp_StatusMessages->setSorting(propertyIndex, order); } - void COverlayMessages::showOverlayMessage(const CStatusMessage &message, int timeOutMs) + void COverlayMessages::showOverlayMessage(const CStatusMessage &message, std::chrono::milliseconds timeout) { if (message.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } @@ -219,7 +219,7 @@ namespace swift::gui QPointer myself(this); m_pendingMessageCalls.push_back([=]() { if (!myself) { return; } - myself->showOverlayMessage(message, timeOutMs); + myself->showOverlayMessage(message, timeout); }); return; } @@ -234,10 +234,10 @@ namespace swift::gui this->setModeToMessage(message.isFailure()); ui->form_StatusMessage->setValue(message); } - this->display(timeOutMs); + this->display(timeout); } - void COverlayMessages::showOverlayTextMessage(const CTextMessage &textMessage, int timeOutMs) + void COverlayMessages::showOverlayTextMessage(const CTextMessage &textMessage, std::chrono::milliseconds timeout) { if (textMessage.isEmpty()) { return; } if (!this->displayTextMessage(textMessage)) { return; } @@ -249,7 +249,7 @@ namespace swift::gui QPointer myself(this); m_pendingMessageCalls.push_back([=]() { if (!myself) { return; } - myself->showOverlayTextMessage(textMessage, timeOutMs); + myself->showOverlayTextMessage(textMessage, timeout); }); return; } @@ -277,7 +277,7 @@ namespace swift::gui ui->wi_TmSupervisor->setStyleSheet("background-color: red;"); this->setModeToTextMessage(); - this->display(timeOutMs); + this->display(timeout); } } @@ -297,12 +297,12 @@ namespace swift::gui ui->comp_OverlayTextMessage->showCorrespondingTab(callsign); } - void COverlayMessages::showOverlayImage(const CPixmap &image, int timeOutMs) + void COverlayMessages::showOverlayImage(const CPixmap &image, std::chrono::milliseconds timeout) { - this->showOverlayImage(image.toPixmap(), timeOutMs); + this->showOverlayImage(image.toPixmap(), timeout); } - void COverlayMessages::showOverlayImage(const QPixmap &image, int timeOutMs) + void COverlayMessages::showOverlayImage(const QPixmap &image, std::chrono::milliseconds timeout) { if (this->hasPendingConfirmation()) { @@ -310,7 +310,7 @@ namespace swift::gui QPointer myself(this); m_pendingMessageCalls.push_back([=]() { if (!myself) { return; } - myself->showOverlayImage(image, timeOutMs); + myself->showOverlayImage(image, timeout); }); return; } @@ -330,36 +330,36 @@ namespace swift::gui ui->lbl_Image->setPixmap(e); } else { ui->lbl_Image->setPixmap(image.scaled(sizeAvailable, Qt::KeepAspectRatio, Qt::FastTransformation)); } - this->display(timeOutMs); + this->display(timeout); } - void COverlayMessages::showOverlayVariant(const CVariant &variant, int timeOutMs) + void COverlayMessages::showOverlayVariant(const CVariant &variant, std::chrono::milliseconds timeout) { if (variant.canConvert()) { - this->showOverlayMessages(variant.value(), timeOutMs); + this->showOverlayMessages(variant.value(), true, timeout); } else if (variant.canConvert()) { - this->showOverlayMessage(variant.value(), timeOutMs); + this->showOverlayMessage(variant.value(), timeout); } else if (variant.canConvert()) { - this->showOverlayTextMessage(variant.value(), timeOutMs); + this->showOverlayTextMessage(variant.value(), timeout); } - else if (variant.canConvert()) { this->showOverlayImage(variant.value(), timeOutMs); } - else if (variant.canConvert()) { this->showOverlayImage(variant.value(), timeOutMs); } + else if (variant.canConvert()) { this->showOverlayImage(variant.value(), timeout); } + else if (variant.canConvert()) { this->showOverlayImage(variant.value(), timeout); } else { Q_ASSERT_X(false, Q_FUNC_INFO, "Unsupported type"); } } - void COverlayMessages::showHTMLMessage(const CStatusMessage &message, int timeOutMs) + void COverlayMessages::showHTMLMessage(const CStatusMessage &message, std::chrono::milliseconds timeout) { if (message.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } - this->showHTMLMessage(message.toHtml(true, true), timeOutMs); + this->showHTMLMessage(message.toHtml(true, true), timeout); } - void COverlayMessages::showHTMLMessage(const QString &htmlMessage, int timeOutMs) + void COverlayMessages::showHTMLMessage(const QString &htmlMessage, std::chrono::milliseconds timeout) { if (htmlMessage.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } @@ -370,7 +370,7 @@ namespace swift::gui QPointer myself(this); m_pendingMessageCalls.push_back([=]() { if (!myself) { return; } - myself->showHTMLMessage(htmlMessage, timeOutMs); + myself->showHTMLMessage(htmlMessage, timeout); }); return; } @@ -379,25 +379,25 @@ namespace swift::gui ui->te_HTMLMessage->setTextColor(QColor(Qt::white)); // hardcoded color ui->te_HTMLMessage->setReadOnly(true); ui->te_HTMLMessage->setText(htmlMessage); - this->display(timeOutMs); + this->display(timeout); } void COverlayMessages::showDownloadProgress(int progress, qint64 current, qint64 max, const QUrl &url, - int timeOutMs) + std::chrono::milliseconds timeout) { if (progress >= 0 && max >= 0) { static const QString m("%1 of %2 from '%3'"); - this->showProgressBar(progress, m.arg(current).arg(max).arg(url.toString()), timeOutMs); + this->showProgressBar(progress, m.arg(current).arg(max).arg(url.toString()), timeout); } else { static const QString m("%1 from '%2'"); - this->showHTMLMessage(m.arg(current).arg(url.toString()), timeOutMs); + this->showHTMLMessage(m.arg(current).arg(url.toString()), timeout); } } - void COverlayMessages::showProgressBar(int percentage, const QString &message, int timeOutMs) + void COverlayMessages::showProgressBar(int percentage, const QString &message, std::chrono::milliseconds timeout) { if (message.isEmpty()) { return; } if (!sGui || sGui->isShuttingDown()) { return; } @@ -410,7 +410,7 @@ namespace swift::gui this->setModeToProgressBar(); if (p >= 100) { this->close(); } - else { this->display(timeOutMs); } + else { this->display(timeout); } } void COverlayMessages::showKillButton(bool killButton) @@ -492,11 +492,9 @@ namespace swift::gui } } - void COverlayMessages::showOverlayMessagesWithConfirmation(const CStatusMessageList &messages, - bool appendOldMessages, - const QString &confirmationMessage, - std::function okLambda, - QMessageBox::StandardButton defaultButton, int timeOutMs) + void COverlayMessages::showOverlayMessagesWithConfirmation( + const CStatusMessageList &messages, bool appendOldMessages, const QString &confirmationMessage, + std::function okLambda, QMessageBox::StandardButton defaultButton, std::chrono::milliseconds timeout) { if (this->hasPendingConfirmation()) { @@ -505,13 +503,13 @@ namespace swift::gui m_pendingMessageCalls.push_back([=]() { if (!myself) { return; } this->showOverlayMessagesWithConfirmation(messages, appendOldMessages, confirmationMessage, okLambda, - defaultButton, timeOutMs); + defaultButton, timeout); }); return; } this->setConfirmationMessage(confirmationMessage); this->setDefaultConfirmationButton(defaultButton); - this->showOverlayMessages(messages, appendOldMessages, timeOutMs); + this->showOverlayMessages(messages, appendOldMessages, timeout); m_awaitingConfirmation = true; // needs to be after showOverlayMessages m_okLambda = okLambda; } @@ -592,12 +590,13 @@ namespace swift::gui } } - void COverlayMessages::display(int timeOutMs) + void COverlayMessages::display(std::chrono::milliseconds timeout) { + using namespace std::chrono_literals; this->show(); this->raise(); this->setEnabled(true); - if (timeOutMs > 250) { m_autoCloseTimer.start(timeOutMs); } + if (timeout > 250ms) { m_autoCloseTimer.start(timeout); } else { m_autoCloseTimer.stop(); } } } // namespace swift::gui diff --git a/src/gui/overlaymessages.h b/src/gui/overlaymessages.h index 254aa985d..dd9804515 100644 --- a/src/gui/overlaymessages.h +++ b/src/gui/overlaymessages.h @@ -6,6 +6,7 @@ #ifndef SWIFT_GUI_OVERLAYMESSAGES_H #define SWIFT_GUI_OVERLAYMESSAGES_H +#include #include #include @@ -96,22 +97,24 @@ namespace swift::gui bool appendOldMessages, const QString &confirmationMessage, std::function okLambda, QMessageBox::StandardButton defaultButton = QMessageBox::Cancel, - int timeOutMs = -1); + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Clear the overlay messages void clearOverlayMessages(); //! Show multiple messages void showOverlayMessages(const swift::misc::CStatusMessageList &messages, bool appendOldMessages = false, - int timeOutMs = -1); + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Show multiple messages or a single message void showOverlayMessagesOrSingleMessage(const swift::misc::CStatusMessageList &messages, - bool appendOldMessages = false, int timeOutMs = -1); + bool appendOldMessages = false, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Show multiple messages or a single message (HTML) void showOverlayMessagesOrHTMLMessage(const swift::misc::CStatusMessageList &messages, - bool appendOldMessages = false, int timeOutMs = -1); + bool appendOldMessages = false, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Sort of overlay messages void sortOverlayMessages(const swift::misc::CPropertyIndex &propertyIndex, @@ -122,10 +125,12 @@ namespace swift::gui Qt::SortOrder order = Qt::AscendingOrder); //! Show single message - void showOverlayMessage(const swift::misc::CStatusMessage &message, int timeOutMs = -1); + void showOverlayMessage(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Info message, based on text message - void showOverlayTextMessage(const swift::misc::network::CTextMessage &textMessage, int timeOutMs = -1); + void showOverlayTextMessage(const swift::misc::network::CTextMessage &textMessage, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Inline text message void showOverlayInlineTextMessage(components::TextMessageTab tab); @@ -134,25 +139,31 @@ namespace swift::gui void showOverlayInlineTextMessage(const swift::misc::aviation::CCallsign &callsign); //! Image - void showOverlayImage(const swift::misc::CPixmap &image, int timeOutMs = -1); + void showOverlayImage(const swift::misc::CPixmap &image, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Image - void showOverlayImage(const QPixmap &image, int timeOutMs = -1); + void showOverlayImage(const QPixmap &image, std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Display one of the supported types - void showOverlayVariant(const swift::misc::CVariant &variant, int timeOutMs = -1); + void showOverlayVariant(const swift::misc::CVariant &variant, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! HTML message - void showHTMLMessage(const swift::misc::CStatusMessage &message, int timeOutMs = -1); + void showHTMLMessage(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! HTML message - void showHTMLMessage(const QString &htmlMessage, int timeOutMs = -1); + void showHTMLMessage(const QString &htmlMessage, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Download progress - void showDownloadProgress(int progress, qint64 current, qint64 max, const QUrl &url, int timeOutMs = -1); + void showDownloadProgress(int progress, qint64 current, qint64 max, const QUrl &url, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Progress bar - void showProgressBar(int percentage, const QString &message, int timeOutMs = -1); + void showProgressBar(int percentage, const QString &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! Allows to globally enable/disable kill button void showKillButton(bool killButton); @@ -178,7 +189,7 @@ namespace swift::gui protected: //! Show message - void display(int timeOutMs = -1); + void display(std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); //! \copydoc QFrame::keyPressEvent virtual void keyPressEvent(QKeyEvent *event) override; diff --git a/src/gui/overlaymessagesframe.h b/src/gui/overlaymessagesframe.h index a6eae7f47..980ef0785 100644 --- a/src/gui/overlaymessagesframe.h +++ b/src/gui/overlaymessagesframe.h @@ -108,13 +108,13 @@ namespace swift::gui bool appendOldMessages, const QString &confirmationMessage, std::function okLambda, QMessageBox::StandardButton defaultButton = QMessageBox::Cancel, - int timeOutMs = -1) + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { if (messages.isEmpty()) { return; } this->initInnerFrame(); if (!this->hasMinimumSize(150, 150)) { return; } m_overlayMessages->showOverlayMessagesWithConfirmation(messages, appendOldMessages, confirmationMessage, - okLambda, defaultButton, timeOutMs); + okLambda, defaultButton, timeout); WIDGET::repaint(); } @@ -134,31 +134,33 @@ namespace swift::gui //! \copydoc swift::gui::COverlayMessages::showOverlayMessages void showOverlayMessages(const swift::misc::CStatusMessageList &messages, bool appendOldMessages = false, - int timeOutMs = -1) + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { if (messages.isEmpty()) { return; } this->initInnerFrame(); - m_overlayMessages->showOverlayMessages(messages, appendOldMessages, timeOutMs); + m_overlayMessages->showOverlayMessages(messages, appendOldMessages, timeout); WIDGET::repaint(); } //! \copydoc swift::gui::COverlayMessages::showOverlayMessagesOrSingleMessage void showOverlayMessagesOrSingleMessage(const swift::misc::CStatusMessageList &messages, - bool appendOldMessages = false, int timeOutMs = -1) + bool appendOldMessages = false, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { if (messages.isEmpty()) { return; } this->initInnerFrame(); - m_overlayMessages->showOverlayMessagesOrSingleMessage(messages, appendOldMessages, timeOutMs); + m_overlayMessages->showOverlayMessagesOrSingleMessage(messages, appendOldMessages, timeout); WIDGET::repaint(); } //! \copydoc swift::gui::COverlayMessages::showOverlayMessagesOrHTMLMessage void showOverlayMessagesOrHTMLMessage(const swift::misc::CStatusMessageList &messages, - bool appendOldMessages = false, int timeOutMs = -1) + bool appendOldMessages = false, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { if (messages.isEmpty()) { return; } this->initInnerFrame(); - m_overlayMessages->showOverlayMessagesOrHTMLMessage(messages, appendOldMessages, timeOutMs); + m_overlayMessages->showOverlayMessagesOrHTMLMessage(messages, appendOldMessages, timeout); WIDGET::repaint(); } @@ -175,27 +177,30 @@ namespace swift::gui } //! \copydoc swift::gui::COverlayMessages::showOverlayMessage - bool showOverlayMessage(const swift::misc::CStatusMessage &message, int timeOutMs = -1) + bool showOverlayMessage(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { if (message.isEmpty()) { return false; } this->initInnerFrame(); - m_overlayMessages->showOverlayMessage(message, timeOutMs); + m_overlayMessages->showOverlayMessage(message, timeout); WIDGET::repaint(); return true; } //! \copydoc swift::gui::COverlayMessages::showOverlayTextMessage - bool showOverlayTextMessage(const swift::misc::network::CTextMessage &textMessage, int timeOutMs = -1) + bool showOverlayTextMessage(const swift::misc::network::CTextMessage &textMessage, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { if (textMessage.isEmpty()) { return false; } this->initInnerFrame(); - m_overlayMessages->showOverlayTextMessage(textMessage, timeOutMs); + m_overlayMessages->showOverlayTextMessage(textMessage, timeout); WIDGET::repaint(); return true; } //! \copydoc swift::gui::COverlayMessages::showOverlayVariant - void showOverlayVariant(const swift::misc::CVariant &variant, int timeOutMs = -1) + void showOverlayVariant(const swift::misc::CVariant &variant, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { if (m_overlayMessages->isTextMessagesActivated() && variant.canConvert()) @@ -205,41 +210,45 @@ namespace swift::gui } else { this->initInnerFrame(); } - m_overlayMessages->showOverlayVariant(variant, timeOutMs); + m_overlayMessages->showOverlayVariant(variant, timeout); WIDGET::repaint(); } //! \copydoc swift::gui::COverlayMessages::showOverlayImage - void showOverlayImage(const swift::misc::CPixmap &pixmap, int timeOutMs = -1) + void showOverlayImage(const swift::misc::CPixmap &pixmap, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { this->initInnerFrame(); - m_overlayMessages->showOverlayImage(pixmap, timeOutMs); + m_overlayMessages->showOverlayImage(pixmap, timeout); WIDGET::repaint(); } //! \copydoc swift::gui::COverlayMessages::showHTMLMessage - bool showOverlayHTMLMessage(const QString &htmlMessage, int timeOutMs = -1) + bool showOverlayHTMLMessage(const QString &htmlMessage, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { this->initMinimalFrame(); - m_overlayMessages->showHTMLMessage(htmlMessage, timeOutMs); + m_overlayMessages->showHTMLMessage(htmlMessage, timeout); WIDGET::repaint(); return true; } //! \copydoc swift::gui::COverlayMessages::showHTMLMessage - bool showOverlayHTMLMessage(const swift::misc::CStatusMessage &message, int timeOutMs = -1) + bool showOverlayHTMLMessage(const swift::misc::CStatusMessage &message, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { this->initMinimalFrame(); - m_overlayMessages->showHTMLMessage(message, timeOutMs); + m_overlayMessages->showHTMLMessage(message, timeout); WIDGET::repaint(); return true; } //! \copydoc swift::gui::COverlayMessages::showDownloadProgress - void showDownloadProgress(int progress, qint64 current, qint64 max, const QUrl &url, int timeOutMs = -1) + void showDownloadProgress(int progress, qint64 current, qint64 max, const QUrl &url, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) { this->initMinimalFrame(); - m_overlayMessages->showDownloadProgress(progress, current, max, url, timeOutMs); + m_overlayMessages->showDownloadProgress(progress, current, max, url, timeout); WIDGET::repaint(); } diff --git a/src/gui/views/aircraftcategorytreeview.h b/src/gui/views/aircraftcategorytreeview.h index b3901d987..0d69c3daf 100644 --- a/src/gui/views/aircraftcategorytreeview.h +++ b/src/gui/views/aircraftcategorytreeview.h @@ -69,8 +69,8 @@ namespace swift::gui //! Custom menu void customMenu(const QPoint &point); - swift::misc::CDigestSignal m_dsFullResize { this, &CAircraftCategoryTreeView::fullResizeToContentsImpl, - 1000, 25 }; + misc::CDigestSignal m_dsFullResize { this, &CAircraftCategoryTreeView::fullResizeToContentsImpl, + std::chrono::milliseconds(1000), 25 }; }; } // namespace views } // namespace swift::gui diff --git a/src/gui/views/atcstationtreeview.h b/src/gui/views/atcstationtreeview.h index 77aea2596..951b8c97d 100644 --- a/src/gui/views/atcstationtreeview.h +++ b/src/gui/views/atcstationtreeview.h @@ -112,8 +112,8 @@ namespace swift::gui void requestTextMessage(); //! @} - swift::misc::CDigestSignal m_dsFullResize { this, &CAtcStationTreeView::fullResizeToContentsImpl, 1000, - 25 }; + swift::misc::CDigestSignal m_dsFullResize { this, &CAtcStationTreeView::fullResizeToContentsImpl, + std::chrono::milliseconds(1000), 25 }; QMap m_expanded; //!< suffix/expanded }; } // namespace views diff --git a/src/gui/views/viewbase.h b/src/gui/views/viewbase.h index c90ec094a..1103abe69 100644 --- a/src/gui/views/viewbase.h +++ b/src/gui/views/viewbase.h @@ -399,13 +399,13 @@ namespace swift::gui //! \param containerSizeDependent check against resize threshold if indicator makes sense //! \param timeoutMs timeout the loading indicator //! \param processEvents force event processing to display indicator by updating GUI - int showLoadIndicator(int containerSizeDependent = -1, int timeoutMs = -1, bool processEvents = true); + int showLoadIndicator(int containerSizeDependent = -1, + std::chrono::milliseconds timeout = std::chrono::milliseconds { 0 }, + bool processEvents = true); //! Show loading indicator which can time out - int showLoadIndicatorWithTimeout(int timeoutMs = -1, bool processEvents = true); - - //! Load indicator's default time (ms) - void setLoadIndicatorTimeoutDefaultTime(int timeoutMs) { m_loadIndicatorTimeoutMsDefault = timeoutMs; } + int showLoadIndicatorWithTimeout(std::chrono::milliseconds timeout = std::chrono::milliseconds { 0 }, + bool processEvents = true); //! Underlying model changed void onModelChanged(); @@ -586,7 +586,7 @@ namespace swift::gui int m_resizeCount = 0; //!< flag / counter, how many resize activities int m_skipResizeThreshold = 40; //!< when to skip resize (rows count) int m_resizeAutoNthTime = 1; //!< with ResizeAuto, resize every n-th time - int m_loadIndicatorTimeoutMsDefault = 30 * 1000; //!< default time for timeout + std::chrono::milliseconds m_loadIndicatorTimeoutDefault { 30 * 1000 }; //!< default time for timeout bool m_forceStretchLastColumnWhenResized = true; //!< a small table might (few columns) fail stretching, force again bool m_showingLoadIndicator = false; //!< showing loading indicator diff --git a/src/gui/views/viewbasenontemplate.cpp b/src/gui/views/viewbasenontemplate.cpp index 24de5e6d5..48203cce9 100644 --- a/src/gui/views/viewbasenontemplate.cpp +++ b/src/gui/views/viewbasenontemplate.cpp @@ -660,13 +660,13 @@ namespace swift::gui::views void CViewBaseNonTemplate::triggerReload() { - this->showLoadIndicatorWithTimeout(m_loadIndicatorTimeoutMsDefault); + this->showLoadIndicatorWithTimeout(m_loadIndicatorTimeoutDefault); emit this->requestUpdate(); } void CViewBaseNonTemplate::triggerReloadFromBackend() { - this->showLoadIndicatorWithTimeout(m_loadIndicatorTimeoutMsDefault); + this->showLoadIndicatorWithTimeout(m_loadIndicatorTimeoutDefault); emit this->requestNewBackendData(); } @@ -705,8 +705,10 @@ namespace swift::gui::views else { this->rowsResizeModeToContent(); } } - int CViewBaseNonTemplate::showLoadIndicator(int containerSizeDependent, int timeoutMs, bool processEvents) + int CViewBaseNonTemplate::showLoadIndicator(int containerSizeDependent, std::chrono::milliseconds timeout, + bool processEvents) { + using namespace std::chrono_literals; if (!m_enabledLoadIndicator) { return -1; } if (m_showingLoadIndicator) { return -1; } @@ -729,13 +731,12 @@ namespace swift::gui::views connect(m_loadIndicator, &CLoadIndicator::timedOut, this, &CViewBaseNonTemplate::onLoadIndicatorTimedOut); } this->centerLoadIndicator(); - return m_loadIndicator->startAnimation(timeoutMs > 0 ? timeoutMs : m_loadIndicatorTimeoutMsDefault, - processEvents); + return m_loadIndicator->startAnimation(timeout > 0ms ? timeout : m_loadIndicatorTimeoutDefault, processEvents); } - int CViewBaseNonTemplate::showLoadIndicatorWithTimeout(int timeoutMs, bool processEvents) + int CViewBaseNonTemplate::showLoadIndicatorWithTimeout(std::chrono::milliseconds timeout, bool processEvents) { - return this->showLoadIndicator(-1, timeoutMs, processEvents); + return this->showLoadIndicator(-1, timeout, processEvents); } void CViewBaseNonTemplate::centerLoadIndicator() diff --git a/src/misc/aviation/aircraftsituation.cpp b/src/misc/aviation/aircraftsituation.cpp index c01d403d7..8d8127248 100644 --- a/src/misc/aviation/aircraftsituation.cpp +++ b/src/misc/aviation/aircraftsituation.cpp @@ -831,25 +831,14 @@ namespace swift::misc::aviation return false; } - CLength CAircraftSituation::getDistancePerTime(const CTime &time, const CLength &min) const + CLength CAircraftSituation::getDistancePerTime(std::chrono::milliseconds ms, const CLength &min) const { if (this->getGroundSpeed().isNull()) { if (!min.isNull()) { return min; } return CLength(0, CLengthUnit::nullUnit()); } - const int ms = time.valueInteger(CTimeUnit::ms()); - return this->getDistancePerTime(ms, min); - } - - CLength CAircraftSituation::getDistancePerTime(int milliseconds, const CLength &min) const - { - if (this->getGroundSpeed().isNull()) - { - if (!min.isNull()) { return min; } - return CLength(0, CLengthUnit::nullUnit()); - } - const double seconds = milliseconds / 1000.0; + const double seconds = ms.count() / 1000.0; const double gsMeterSecond = this->getGroundSpeed().value(CSpeedUnit::m_s()); const CLength d(seconds * gsMeterSecond, CLengthUnit::m()); if (!min.isNull() && d < min) { return min; } @@ -858,7 +847,8 @@ namespace swift::misc::aviation CLength CAircraftSituation::getDistancePerTime250ms(const CLength &min) const { - return this->getDistancePerTime(250, min); + using namespace std::chrono_literals; + return this->getDistancePerTime(250ms, min); } void CAircraftSituation::setCallsign(const CCallsign &callsign) diff --git a/src/misc/aviation/aircraftsituation.h b/src/misc/aviation/aircraftsituation.h index 7d91955b0..6906a69a9 100644 --- a/src/misc/aviation/aircraftsituation.h +++ b/src/misc/aviation/aircraftsituation.h @@ -385,14 +385,9 @@ namespace swift::misc //! Situation looks like an aircraft not near ground bool canLikelySkipNearGroundInterpolation() const; - //! Distance per time - physical_quantities::CLength - getDistancePerTime(const physical_quantities::CTime &time, - const physical_quantities::CLength &min = physical_quantities::CLength::null()) const; - //! Distance per milliseconds physical_quantities::CLength - getDistancePerTime(int milliseconds, + getDistancePerTime(std::chrono::milliseconds, const physical_quantities::CLength &min = physical_quantities::CLength::null()) const; //! Distance per milliseconds (250ms) diff --git a/src/misc/crashhandler.h b/src/misc/crashhandler.h index a3f75e30a..e3041ecc1 100644 --- a/src/misc/crashhandler.h +++ b/src/misc/crashhandler.h @@ -74,7 +74,8 @@ namespace swift::misc void triggerCrashInfoWrite(); swift::misc::CCrashInfo m_crashAndLogInfo; //!< info representing details - swift::misc::CDigestSignal m_dsCrashAndLogInfo { this, &CCrashHandler::triggerCrashInfoWrite, 10000, 5 }; + CDigestSignal m_dsCrashAndLogInfo { this, &CCrashHandler::triggerCrashInfoWrite, + std::chrono::milliseconds(10000), 5 }; #ifdef SWIFT_USE_CRASHPAD std::unique_ptr m_crashpadClient; diff --git a/src/misc/digestsignal.cpp b/src/misc/digestsignal.cpp index 091802e28..e00121b94 100644 --- a/src/misc/digestsignal.cpp +++ b/src/misc/digestsignal.cpp @@ -34,10 +34,10 @@ namespace swift::misc emit this->digestSignal(); } - void CDigestSignal::init(int maxDelayMs) + void CDigestSignal::init(std::chrono::milliseconds maxDelay) { QObject::connect(&m_timer, &QTimer::timeout, this, &CDigestSignal::timerTimeout); m_timer.setSingleShot(true); - m_timer.setInterval(maxDelayMs); + m_timer.setInterval(maxDelay); } } // namespace swift::misc diff --git a/src/misc/digestsignal.h b/src/misc/digestsignal.h index 4005611cd..f5d781d87 100644 --- a/src/misc/digestsignal.h +++ b/src/misc/digestsignal.h @@ -21,21 +21,23 @@ namespace swift::misc public: //! Constructor template - CDigestSignal(T *sender, F1 inputSignal, F2 digestSignal, int maxDelayMs = 500, int maxInputsPerDigest = 3) + CDigestSignal(T *sender, F1 inputSignal, F2 digestSignal, + std::chrono::milliseconds maxDelay = std::chrono::milliseconds(500), int maxInputsPerDigest = 3) : m_maxInputsPerDigest(maxInputsPerDigest) { QObject::connect(sender, inputSignal, this, &CDigestSignal::inputSignal); QObject::connect(this, &CDigestSignal::digestSignal, sender, digestSignal); - init(maxDelayMs); + init(maxDelay); } //! Constructor without input signal, can be manually triggered template - CDigestSignal(T *sender, F2 digestSignal, int maxDelayMs = 500, int maxInputsPerDigest = 3) + CDigestSignal(T *sender, F2 digestSignal, std::chrono::milliseconds maxDelay = std::chrono::milliseconds(500), + int maxInputsPerDigest = 3) : m_maxInputsPerDigest(maxInputsPerDigest) { QObject::connect(this, &CDigestSignal::digestSignal, sender, digestSignal); - init(maxDelayMs); + init(maxDelay); } //! Destructor @@ -54,7 +56,7 @@ namespace swift::misc void timerTimeout(); //! Init in ctor - void init(int maxDelayMs); + void init(std::chrono::milliseconds maxDelay); QTimer m_timer; const int m_maxInputsPerDigest = 3; diff --git a/src/sound/selcalplayer.cpp b/src/sound/selcalplayer.cpp index 0679423bd..23cc12b95 100644 --- a/src/sound/selcalplayer.cpp +++ b/src/sound/selcalplayer.cpp @@ -22,21 +22,21 @@ namespace swift::sound void CSelcalPlayer::gracefulShutdown() { m_threadedPlayer->quitAndWait(); } - CTime CSelcalPlayer::play(int volume, const CSelcal &selcal) + std::chrono::milliseconds CSelcalPlayer::play(int volume, const CSelcal &selcal) { - CTime duration = CTime::null(); + std::chrono::milliseconds duration {}; if (selcal.isValid()) { const QList frequencies = selcal.getFrequencies(); Q_ASSERT(frequencies.size() == 4); - const CTime oneSec(1000.0, CTimeUnit::ms()); + const std::chrono::milliseconds oneSec(1000); const CTonePair t1(frequencies.at(0), frequencies.at(1), oneSec); - const CTonePair t2({}, {}, oneSec / 5.0); + const CTonePair t2({}, {}, oneSec / 5); const CTonePair t3(frequencies.at(2), frequencies.at(3), oneSec); QList tonePairs; tonePairs << t1 << t2 << t3; m_threadedPlayer->play(volume, tonePairs); - duration = oneSec * 2.5; + duration = std::chrono::milliseconds(2500); } return duration; } diff --git a/src/sound/selcalplayer.h b/src/sound/selcalplayer.h index 02e59be77..480028a60 100644 --- a/src/sound/selcalplayer.h +++ b/src/sound/selcalplayer.h @@ -6,6 +6,8 @@ #ifndef SWIFT_SOUND_SELCALPLAYER_H #define SWIFT_SOUND_SELCALPLAYER_H +#include + #include "misc/audio/audiodeviceinfo.h" #include "misc/aviation/selcal.h" #include "misc/worker.h" @@ -32,7 +34,7 @@ namespace swift::sound //! Play SELCAL //! \return Time of the played tone - swift::misc::physical_quantities::CTime play(int volume, const swift::misc::aviation::CSelcal &selcal); + std::chrono::milliseconds play(int volume, const swift::misc::aviation::CSelcal &selcal); private: CThreadedTonePairPlayer *m_threadedPlayer = nullptr; diff --git a/src/sound/threadedtonepairplayer.cpp b/src/sound/threadedtonepairplayer.cpp index f2528c03a..f61d31ac2 100644 --- a/src/sound/threadedtonepairplayer.cpp +++ b/src/sound/threadedtonepairplayer.cpp @@ -131,7 +131,8 @@ namespace swift::sound const int bytesForAllChannels = m_audioFormat.bytesPerFrame(); QByteArray bufferData; - qint64 bytesPerTonePair = m_audioFormat.sampleRate() * bytesForAllChannels * tonePair.getDurationMs() / 1000; + qint64 bytesPerTonePair = + m_audioFormat.sampleRate() * bytesForAllChannels * tonePair.getDurationMs().count() / 1000; bufferData.resize(static_cast(bytesPerTonePair)); unsigned char *bufferPointer = reinterpret_cast(bufferData.data()); diff --git a/src/sound/tonepair.cpp b/src/sound/tonepair.cpp index 18e243394..a200c308d 100644 --- a/src/sound/tonepair.cpp +++ b/src/sound/tonepair.cpp @@ -7,12 +7,12 @@ namespace swift::sound { CTonePair::CTonePair(const swift::misc::physical_quantities::CFrequency &frequency, const swift::misc::physical_quantities::CFrequency &secondaryFrequency, - const swift::misc::physical_quantities::CTime &duration) + std::chrono::milliseconds duration) : m_firstFrequencyHz( static_cast(frequency.valueRounded(swift::misc::physical_quantities::CFrequencyUnit::Hz()))), m_secondFrequencyHz(static_cast( secondaryFrequency.valueRounded(swift::misc::physical_quantities::CFrequencyUnit::Hz()))), - m_durationMs(static_cast(duration.valueRounded(swift::misc::physical_quantities::CTimeUnit::ms()))) + m_durationMs(duration) {} } // namespace swift::sound diff --git a/src/sound/tonepair.h b/src/sound/tonepair.h index d01f8f60e..44de9934f 100644 --- a/src/sound/tonepair.h +++ b/src/sound/tonepair.h @@ -6,6 +6,7 @@ #ifndef SWIFT_SOUND_TONEPAIR_H #define SWIFT_SOUND_TONEPAIR_H +#include #include #include "misc/pq/frequency.h" @@ -21,7 +22,7 @@ namespace swift::sound //! Play two tones with frequencies f for t milliseconds CTonePair(const swift::misc::physical_quantities::CFrequency &frequency, const swift::misc::physical_quantities::CFrequency &secondaryFrequency, - const swift::misc::physical_quantities::CTime &duration); + std::chrono::milliseconds duration); //! Get frequency of the first tone int getFirstFrequencyHz() const { return m_firstFrequencyHz; } @@ -30,7 +31,7 @@ namespace swift::sound int getSecondFrequencyHz() const { return m_secondFrequencyHz; } //! Get play duration - qint64 getDurationMs() const { return m_durationMs; } + std::chrono::milliseconds getDurationMs() const { return m_durationMs; } //! Comparison operator friend bool operator<(const CTonePair &lhs, const CTonePair &rhs) @@ -42,7 +43,7 @@ namespace swift::sound private: int m_firstFrequencyHz; //!< first tone's frequency, use 0 for silence int m_secondFrequencyHz; //!< second tone's frequency, or 0 - qint64 m_durationMs; //!< How long to play (duration) + std::chrono::milliseconds m_durationMs; //!< How long to play (duration) }; } // namespace swift::sound diff --git a/src/swiftguistandard/swiftguistd.cpp b/src/swiftguistandard/swiftguistd.cpp index f49cd975e..7a3c26968 100644 --- a/src/swiftguistandard/swiftguistd.cpp +++ b/src/swiftguistandard/swiftguistd.cpp @@ -445,6 +445,7 @@ void SwiftGuiStd::verifyPrerequisites() void SwiftGuiStd::onValidatedModelSet(const CSimulatorInfo &simulator, const CAircraftModelList &valid, const CAircraftModelList &invalid, bool stopped, const CStatusMessageList &msgs) { + using namespace std::chrono_literals; // will NOT be called if no errors and setting is "only on errors" if (!sGui || sGui->isShuttingDown()) { return; } if (QApplication::activeModalWidget()) @@ -455,7 +456,7 @@ void SwiftGuiStd::onValidatedModelSet(const CSimulatorInfo &simulator, const CAi CLogMessage(this).validationWarning( u"Model set validation has found %1 invalid models for '%2', check the model validation") << invalid.size() << simulator.toQString(true); - this->displayInOverlayWindow(m, 5000); + this->displayInOverlayWindow(m, 5s); return; } @@ -545,10 +546,10 @@ void SwiftGuiStd::displayDBusReconnectDialog() CLogMessage::preformatted(msg); } -void SwiftGuiStd::onShowOverlayVariant(const CVariant &variant, int durationMs) +void SwiftGuiStd::onShowOverlayVariant(const CVariant &variant, std::chrono::milliseconds duration) { if (!sGui || sGui->isShuttingDown()) { return; } - ui->fr_CentralFrameInside->showOverlayVariant(variant, durationMs); + ui->fr_CentralFrameInside->showOverlayVariant(variant, duration); } void SwiftGuiStd::onShowOverlayInlineTextMessageTab(components::TextMessageTab tab) diff --git a/src/swiftguistandard/swiftguistd.h b/src/swiftguistandard/swiftguistd.h index ae2b5b471..13e4903c7 100644 --- a/src/swiftguistandard/swiftguistd.h +++ b/src/swiftguistandard/swiftguistd.h @@ -331,7 +331,7 @@ private: //! @{ //! Request overlay inline text message - void onShowOverlayVariant(const swift::misc::CVariant &variant, int durationMs); + void onShowOverlayVariant(const swift::misc::CVariant &variant, std::chrono::milliseconds duration); void onShowOverlayInlineTextMessageTab(swift::gui::components::TextMessageTab tab); void onShowOverlayInlineTextMessageCallsign(const swift::misc::aviation::CCallsign &callsign); //! @} diff --git a/src/swiftguistandard/swiftguistdmenus.cpp b/src/swiftguistandard/swiftguistdmenus.cpp index 26f0d481d..ea6cdccca 100644 --- a/src/swiftguistandard/swiftguistdmenus.cpp +++ b/src/swiftguistandard/swiftguistdmenus.cpp @@ -37,6 +37,7 @@ using namespace swift::misc::simulation; void SwiftGuiStd::onMenuClicked() { + using namespace std::chrono_literals; QObject *sender = QObject::sender(); if (sender == ui->menu_TestLocationsEDRY) { @@ -80,7 +81,7 @@ void SwiftGuiStd::onMenuClicked() { sGui->toggleIncognito(); this->displayInOverlayWindow(QStringLiteral("Incognito mode is %1").arg(boolToOnOff(sGui->isIncognito())), - 5000); + 5s); } } } diff --git a/src/swiftlauncher/swiftlauncher.cpp b/src/swiftlauncher/swiftlauncher.cpp index df7516d77..582562d22 100644 --- a/src/swiftlauncher/swiftlauncher.cpp +++ b/src/swiftlauncher/swiftlauncher.cpp @@ -477,12 +477,14 @@ void CSwiftLauncher::dbusServerModeSelected(bool selected) void CSwiftLauncher::showStatusMessage(const CStatusMessage &msg) { - ui->fr_SwiftLauncherMain->showOverlayMessage(msg, 5000); + using namespace std::chrono_literals; + ui->fr_SwiftLauncherMain->showOverlayMessage(msg, 5s); } void CSwiftLauncher::showStatusMessage(const QString &htmlMsg) { - ui->fr_SwiftLauncherMain->showOverlayMessage(htmlMsg, 5000); + using namespace std::chrono_literals; + ui->fr_SwiftLauncherMain->showOverlayMessage(htmlMsg, 5s); } void CSwiftLauncher::showMainPage() { ui->sw_SwiftLauncher->setCurrentWidget(ui->pg_SwiftLauncherMain); }