mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 11:55:35 +08:00
refs #521, reading of setup and version
* fixed in launcher so reloading works (this also uses fixed URL list) * signal for version synchronized * removed setupreader.h where possible -> less compile dependencies * removed redundant logging * removed unused cleanup override * connect &QCoreApplication::aboutToQuit in threaded reader
This commit is contained in:
@@ -90,6 +90,7 @@ namespace BlackCore
|
||||
if (url.isEmpty())
|
||||
{
|
||||
CLogMessage(this).warning("Cannot read update info, failed URLs: %1") << this->m_updateInfoUrls.read()->getFailedUrls();
|
||||
emit versionSynchronized(false);
|
||||
return;
|
||||
}
|
||||
QNetworkRequest request(url);
|
||||
@@ -144,7 +145,6 @@ namespace BlackCore
|
||||
|
||||
if (this->isFinishedOrShutdown())
|
||||
{
|
||||
CLogMessage(this).debug() << Q_FUNC_INFO;
|
||||
CLogMessage(this).info("Terminated loading bootstrap files");
|
||||
nwReply->abort();
|
||||
emit setupSynchronized(false);
|
||||
@@ -234,9 +234,9 @@ namespace BlackCore
|
||||
|
||||
if (this->isFinishedOrShutdown())
|
||||
{
|
||||
CLogMessage(this).debug() << Q_FUNC_INFO;
|
||||
CLogMessage(this).info("Terminated loading of update info");
|
||||
nwReply->abort();
|
||||
emit versionSynchronized(false);
|
||||
return; // stop, terminate straight away, ending thread
|
||||
}
|
||||
|
||||
@@ -263,6 +263,7 @@ namespace BlackCore
|
||||
if (sameVersionLoaded)
|
||||
{
|
||||
CLogMessage(this).info("Same update info loaded from %1 as already in data cache %2") << urlString << m_updateInfo.getFilename();
|
||||
emit versionSynchronized(true);
|
||||
return; // success
|
||||
}
|
||||
|
||||
@@ -279,11 +280,13 @@ namespace BlackCore
|
||||
if (!m.isEmpty())
|
||||
{
|
||||
CLogMessage(this).preformatted(m);
|
||||
emit versionSynchronized(false);
|
||||
return; // issue with cache
|
||||
}
|
||||
else
|
||||
{
|
||||
CLogMessage(this).info("Update info: Updated data cache in %1") << m_updateInfo.getFilename();
|
||||
emit versionSynchronized(true);
|
||||
return; // success
|
||||
} // cache
|
||||
} // outdated?
|
||||
@@ -302,6 +305,10 @@ namespace BlackCore
|
||||
{
|
||||
QTimer::singleShot(500, this, &CSetupReader::ps_readSetup);
|
||||
}
|
||||
else
|
||||
{
|
||||
emit versionSynchronized(false);
|
||||
}
|
||||
} // method
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -37,6 +37,9 @@ namespace BlackCore
|
||||
//! Setup has been read
|
||||
void setupSynchronized(bool success);
|
||||
|
||||
//! Version bas been read
|
||||
void versionSynchronized(bool success);
|
||||
|
||||
protected slots:
|
||||
//! \copydoc CThreadedReader::initialize
|
||||
virtual void initialize() override;
|
||||
|
||||
@@ -35,8 +35,8 @@ using namespace BlackMisc::Weather;
|
||||
namespace BlackCore
|
||||
{
|
||||
CWebDataServices::CWebDataServices(
|
||||
CWebReaderFlags::WebReader readerFlags, int autoReadAfterSetupSynchronized, QObject *parent) :
|
||||
QObject(parent), m_readerFlags(readerFlags), m_autoReadAfterSetupMs(autoReadAfterSetupSynchronized)
|
||||
CWebReaderFlags::WebReader readerFlags, int autoReadAfterSetupSynchronizedMs, QObject *parent) :
|
||||
QObject(parent), m_readerFlags(readerFlags), m_autoReadAfterSetupMs(autoReadAfterSetupSynchronizedMs)
|
||||
{
|
||||
this->setObjectName("CWebDataReader");
|
||||
connect(&CSetupReader::instance(), &CSetupReader::setupSynchronized, this, &CWebDataServices::ps_setupRead);
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
#include "blackcore/blackcoreexport.h"
|
||||
#include "blackcore/webreaderflags.h"
|
||||
#include "blackcore/setupreader.h"
|
||||
#include "blackcore/data/globalsetup.h"
|
||||
#include "blackmisc/aviation/atcstationlist.h"
|
||||
#include "blackmisc/aviation/liverylist.h"
|
||||
@@ -53,7 +52,7 @@ namespace BlackCore
|
||||
public:
|
||||
//! Constructor
|
||||
CWebDataServices(CWebReaderFlags::WebReader readerFlags,
|
||||
int autoReadAfterSetupSynchronized, QObject *parent = nullptr);
|
||||
int autoReadAfterSetupSynchronizedMs, QObject *parent = nullptr);
|
||||
|
||||
//! Shutdown
|
||||
void gracefulShutdown();
|
||||
|
||||
@@ -17,7 +17,11 @@ namespace BlackMisc
|
||||
CThreadedReader::CThreadedReader(QObject *owner, const QString &name) :
|
||||
CContinuousWorker(owner, name),
|
||||
m_updateTimer(new QTimer(this))
|
||||
{ }
|
||||
{
|
||||
bool c = connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, this, &CThreadedReader::gracefulShutdown);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed");
|
||||
Q_UNUSED(c);
|
||||
}
|
||||
|
||||
qint64 CThreadedReader::lastModifiedMsSinceEpoch(QNetworkReply *nwReply) const
|
||||
{
|
||||
@@ -51,7 +55,10 @@ namespace BlackMisc
|
||||
|
||||
void CThreadedReader::requestStop()
|
||||
{
|
||||
QMetaObject::invokeMethod(m_updateTimer, "stop");
|
||||
if (m_updateTimer)
|
||||
{
|
||||
QMetaObject::invokeMethod(m_updateTimer, "stop");
|
||||
}
|
||||
}
|
||||
|
||||
void CThreadedReader::requestReload()
|
||||
@@ -62,6 +69,7 @@ namespace BlackMisc
|
||||
|
||||
void CThreadedReader::gracefulShutdown()
|
||||
{
|
||||
if (this->m_shutdown) { return; }
|
||||
this->m_shutdown = true;
|
||||
this->requestStop();
|
||||
this->quit();
|
||||
@@ -69,12 +77,7 @@ namespace BlackMisc
|
||||
|
||||
CThreadedReader::~CThreadedReader()
|
||||
{
|
||||
cleanup();
|
||||
}
|
||||
|
||||
void CThreadedReader::cleanup()
|
||||
{
|
||||
// cleanup code would go here
|
||||
this->m_shutdown = true;
|
||||
}
|
||||
|
||||
void CThreadedReader::setInterval(int updatePeriodMs)
|
||||
|
||||
@@ -49,9 +49,6 @@ namespace BlackMisc
|
||||
//! Destructor
|
||||
virtual ~CThreadedReader();
|
||||
|
||||
//! \copydoc CContinuousWorker::cleanup
|
||||
virtual void cleanup() override;
|
||||
|
||||
//! Set the update time
|
||||
//! \param updatePeriodMs <=0 stops the timer
|
||||
//! \threadsafe
|
||||
@@ -61,6 +58,7 @@ namespace BlackMisc
|
||||
//! \threadsafe
|
||||
int interval() const;
|
||||
|
||||
public slots:
|
||||
//! Graceful shutdown
|
||||
//! \threadsafe
|
||||
void gracefulShutdown();
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "ui_swiftlauncher.h"
|
||||
#include "blackgui/stylesheetutility.h"
|
||||
#include "blackcore/dbusserver.h"
|
||||
#include "blackcore/data/updateinfo.h"
|
||||
#include "blackcore/setupreader.h"
|
||||
#include "blackmisc/network/networkutils.h"
|
||||
#include "blackmisc/icons.h"
|
||||
#include "blackmisc/project.h"
|
||||
@@ -49,10 +49,12 @@ CSwiftLauncher::CSwiftLauncher(QWidget *parent) :
|
||||
connect(ui->tb_SwiftGui, &QPushButton::pressed, this, &CSwiftLauncher::ps_startButtonPressed);
|
||||
connect(ui->tb_Database, &QPushButton::pressed, this, &CSwiftLauncher::ps_startButtonPressed);
|
||||
connect(ui->tb_BackToMain, &QToolButton::pressed, this, &CSwiftLauncher::ps_showMainPage);
|
||||
connect(&CSetupReader::instance(), &CSetupReader::versionSynchronized, this, &CSwiftLauncher::ps_loadedSetup);
|
||||
|
||||
new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_L), this, SLOT(ps_showLogPage()));
|
||||
this->ui->le_DBusServerPort->setValidator(new QIntValidator(0, 65535, this));
|
||||
QTimer::singleShot(5000, this, &CSwiftLauncher::ps_loadedSetup); //deferred init of setup
|
||||
|
||||
// QTimer::singleShot(5000, this, &CSwiftLauncher::ps_loadedSetup); //deferred init of setup
|
||||
}
|
||||
|
||||
CSwiftLauncher::~CSwiftLauncher()
|
||||
@@ -254,11 +256,21 @@ QString CSwiftLauncher::toCmdLine(const QString &exe, const QStringList &exeArgs
|
||||
|
||||
void CSwiftLauncher::ps_loadSetup()
|
||||
{
|
||||
CSetupReader::instance().requestReload();
|
||||
if (!this->ui->le_LatestVersion->text().isEmpty())
|
||||
{
|
||||
this->ui->le_LatestVersion->setText("");
|
||||
CSetupReader::instance().requestReload();
|
||||
}
|
||||
}
|
||||
|
||||
void CSwiftLauncher::ps_loadedSetup()
|
||||
void CSwiftLauncher::ps_loadedSetup(bool success)
|
||||
{
|
||||
if (!success)
|
||||
{
|
||||
CLogMessage(this).warning("Loading setup or version information failed");
|
||||
return;
|
||||
}
|
||||
|
||||
CUpdateInfo updateInfo(this->m_updateInfo.get());
|
||||
QString latestVersion(updateInfo.getLatestVersion()) ; // need to get this from somewhere
|
||||
CUrlList downloadUrls(updateInfo.getDownloadUrls());
|
||||
@@ -278,6 +290,11 @@ void CSwiftLauncher::ps_loadedSetup()
|
||||
this->displayLatestNews();
|
||||
}
|
||||
|
||||
void CSwiftLauncher::ps_changedCache()
|
||||
{
|
||||
this->ps_loadedSetup(true);
|
||||
}
|
||||
|
||||
void CSwiftLauncher::ps_startButtonPressed()
|
||||
{
|
||||
QObject *sender = QObject::sender();
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
|
||||
#include <QDialog>
|
||||
#include <QScopedPointer>
|
||||
#include "blackcore/setupreader.h"
|
||||
#include "blackcore/data/globalsetup.h"
|
||||
#include "blackcore/data/updateinfo.h"
|
||||
#include "blackgui/enableforframelesswindow.h"
|
||||
#include "blackgui/overlaymessagesframe.h"
|
||||
#include "swiftguistandard/guimodeenums.h"
|
||||
@@ -58,8 +59,8 @@ protected:
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::CSwiftLauncher> ui;
|
||||
BlackCore::CData<BlackCore::Data::GlobalSetup> m_setup { this, &CSwiftLauncher::ps_loadedSetup }; //!< setup cache
|
||||
BlackCore::CData<BlackCore::Data::UpdateInfo> m_updateInfo { this, &CSwiftLauncher::ps_loadedSetup };
|
||||
BlackCore::CData<BlackCore::Data::GlobalSetup> m_setup { this, &CSwiftLauncher::ps_changedCache }; //!< setup cache
|
||||
BlackCore::CData<BlackCore::Data::UpdateInfo> m_updateInfo { this, &CSwiftLauncher::ps_changedCache }; //!< version cache
|
||||
QString m_executable;
|
||||
QStringList m_executableArgs;
|
||||
|
||||
@@ -113,7 +114,10 @@ private slots:
|
||||
void ps_loadSetup();
|
||||
|
||||
//! Loaded latest version
|
||||
void ps_loadedSetup();
|
||||
void ps_loadedSetup(bool success);
|
||||
|
||||
//! Cache values have been changed
|
||||
void ps_changedCache();
|
||||
|
||||
//! Start button pressed
|
||||
void ps_startButtonPressed();
|
||||
|
||||
Reference in New Issue
Block a user