diff --git a/src/blackgui/components/autopublishcomponent.cpp b/src/blackgui/components/autopublishcomponent.cpp index a0a7332a1..327e56e11 100644 --- a/src/blackgui/components/autopublishcomponent.cpp +++ b/src/blackgui/components/autopublishcomponent.cpp @@ -15,6 +15,7 @@ #include "blackcore/db/databasewriter.h" #include "blackmisc/simulation/aircraftmodellist.h" +#include #include #include #include @@ -122,6 +123,7 @@ namespace BlackGui myself->closeParentDialog(); }); }); + m_lastAutoPublish.set(QDateTime::currentMSecsSinceEpoch()); } else { diff --git a/src/blackgui/components/autopublishcomponent.h b/src/blackgui/components/autopublishcomponent.h index 4f1c74f4e..f8632ab15 100644 --- a/src/blackgui/components/autopublishcomponent.h +++ b/src/blackgui/components/autopublishcomponent.h @@ -40,6 +40,7 @@ namespace BlackGui private: QScopedPointer ui; BlackMisc::Simulation::CAutoPublishData m_data; + BlackMisc::CData m_lastAutoPublish { this }; //! Analyze against DB data void analyzeAgainstDBData(); diff --git a/src/blackmisc/simulation/autopublishdata.h b/src/blackmisc/simulation/autopublishdata.h index 9ade33c64..eda966553 100644 --- a/src/blackmisc/simulation/autopublishdata.h +++ b/src/blackmisc/simulation/autopublishdata.h @@ -14,6 +14,7 @@ #include "aircraftmodellist.h" #include "simulatorinfo.h" #include "blackmisc/pq/length.h" +#include "blackmisc/datacache.h" #include "blackmisc/statusmessagelist.h" #include "blackmisc/directoryutils.h" #include "blackmisc/blackmiscexport.h" @@ -25,6 +26,22 @@ namespace BlackMisc { namespace Simulation { + namespace Data + { + //! Last selection + struct TLastAutoPublish : public TDataTrait + { + //! First load is synchronous + static constexpr bool isPinned() { return true; } + + //! Default simulator + static const qint64 &defaultValue() { static constexpr qint64 d = -1; return d; } + + //! Key + static const char *key() { return "autopublishlast"; } + }; + } + //! Objects that can be use for auto-publishing. //! Auto publishing means we sent those data to the DB. class BLACKMISC_EXPORT CAutoPublishData diff --git a/src/swiftguistandard/swiftguistd.h b/src/swiftguistandard/swiftguistd.h index f488da8fa..8859b87d2 100644 --- a/src/swiftguistandard/swiftguistd.h +++ b/src/swiftguistandard/swiftguistd.h @@ -26,6 +26,7 @@ #include "blackcore/actionbind.h" #include "blackcore/network.h" #include "blackmisc/simulation/simulatedaircraft.h" +#include "blackmisc/simulation/autopublishdata.h" #include "blackmisc/audio/notificationsounds.h" #include "blackmisc/input/actionhotkeydefs.h" #include "blackmisc/identifiable.h" @@ -113,12 +114,14 @@ private: QScopedPointer m_dbLoadDialog; //!< load DB data, lazy init UI component QScopedPointer m_autoPublishDialog; //!< auto publish dialog QScopedPointer m_validationDialog; //!< aircraft model validation dialog + BlackMisc::CData m_lastAutoPublish { this }; BlackCore::CActionBind m_actionPtt { BlackMisc::Input::pttHotkeyAction(), BlackMisc::CIcons::radio16(), this, &SwiftGuiStd::onPttChanged }; BlackCore::CActionBindings m_menuHotkeyHandlers; BlackGui::CManagedStatusBar m_statusBar; BlackMisc::CLogSubscriber m_logSubscriber { this, &SwiftGuiStd::displayStatusMessageInGui }; bool m_init = false; + // contexts static constexpr int MaxCoreFailures = 5; //!< Failures counted before reconnecting int m_coreFailures = 0; //!< failed access to core @@ -294,6 +297,9 @@ private: //! Auto publish diloag void autoPublishDialog(); + //! Show auto publish dialog if appropriate + bool triggerAutoPublishDialog(); + //! Request overlay inline text message @{ void onShowOverlayVariant(const BlackMisc::CVariant &variant, int durationMs); void onShowOverlayInlineTextMessageTab(BlackGui::Components::TextMessageTab tab); diff --git a/src/swiftguistandard/swiftguistdmenus.cpp b/src/swiftguistandard/swiftguistdmenus.cpp index d083fe67d..1ffe7e82f 100644 --- a/src/swiftguistandard/swiftguistdmenus.cpp +++ b/src/swiftguistandard/swiftguistdmenus.cpp @@ -195,5 +195,6 @@ void SwiftGuiStd::autoPublishDialog() { m_autoPublishDialog.reset(new CAutoPublishDialog(this)); } + m_lastAutoPublish.set(QDateTime::currentMSecsSinceEpoch()); m_autoPublishDialog->show(); }