mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-16 18:35:35 +08:00
Ref T135, adjusted info component
* renamed some functions such as ps_requestLoadOfSetup and members * guess platform if there is no setting available * fix: reset flag before reloading
This commit is contained in:
committed by
Mathew Sutcliffe
parent
f07bdc204a
commit
400ff9f033
@@ -36,19 +36,21 @@ namespace BlackGui
|
|||||||
ui->lbl_NewVersionUrl->setOpenExternalLinks(true);
|
ui->lbl_NewVersionUrl->setOpenExternalLinks(true);
|
||||||
|
|
||||||
// use version signal as trigger for completion
|
// use version signal as trigger for completion
|
||||||
if (!m_distributionInfo.get().isEmpty())
|
if (!m_distributionsInfo.get().isEmpty())
|
||||||
{
|
{
|
||||||
// we have at least cached data:
|
// we have at least cached data:
|
||||||
// in case CGuiApplication::distributionInfoAvailable never comes/was already sent
|
// in case CGuiApplication::distributionInfoAvailable never comes/was already sent
|
||||||
QTimer::singleShot(10 * 1000, this, [ = ]
|
QTimer::singleShot(15 * 1000, this, [ = ]
|
||||||
{
|
{
|
||||||
// use this as timeout failover with cached data
|
// use this as timeout failover with cached data
|
||||||
if (m_distributionsLoaded) { return; }
|
if (m_distributionsLoaded) { return; }
|
||||||
this->ps_loadedDistributionInfo(true);
|
this->ps_loadedDistributionInfo(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Q_ASSERT_X(sGui, Q_FUNC_INFO, "Need sGui");
|
||||||
connect(sGui, &CGuiApplication::distributionInfoAvailable, this, &CDistributionInfoComponent::ps_loadedDistributionInfo);
|
connect(sGui, &CGuiApplication::distributionInfoAvailable, this, &CDistributionInfoComponent::ps_loadedDistributionInfo);
|
||||||
connect(ui->pb_CheckForUpdates, &QPushButton::pressed, this, &CDistributionInfoComponent::ps_loadSetup);
|
connect(ui->pb_CheckForUpdates, &QPushButton::pressed, this, &CDistributionInfoComponent::ps_requestLoadOfSetup);
|
||||||
connect(ui->pb_InstallXSwiftBus, &QPushButton::pressed, this, &CDistributionInfoComponent::ps_installXSwiftBusDialog);
|
connect(ui->pb_InstallXSwiftBus, &QPushButton::pressed, this, &CDistributionInfoComponent::ps_installXSwiftBusDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,21 +59,25 @@ namespace BlackGui
|
|||||||
|
|
||||||
bool CDistributionInfoComponent::isNewVersionAvailable() const
|
bool CDistributionInfoComponent::isNewVersionAvailable() const
|
||||||
{
|
{
|
||||||
const QStringList channelPlatform = m_distributionSettings.get();
|
const QStringList channelPlatform = m_distributionSetting.get();
|
||||||
Q_ASSERT_X(channelPlatform.size() == 2, Q_FUNC_INFO, "wrong setting");
|
Q_ASSERT_X(channelPlatform.size() == 2, Q_FUNC_INFO, "wrong setting");
|
||||||
const QVersionNumber vCurrentChannelPlatform = m_distributionInfo.get().getQVersionForChannelAndPlatform(channelPlatform);
|
const QVersionNumber vCurrentChannelPlatform = m_distributionsInfo.get().getQVersionForChannelAndPlatform(channelPlatform);
|
||||||
if (vCurrentChannelPlatform.isNull() || vCurrentChannelPlatform.segmentCount() < 4) return false;
|
if (vCurrentChannelPlatform.isNull() || vCurrentChannelPlatform.segmentCount() < 4) return false;
|
||||||
const QVersionNumber vCurrent = CBuildConfig::getVersion();
|
const QVersionNumber vCurrent = CBuildConfig::getVersion();
|
||||||
return (vCurrentChannelPlatform > vCurrent);
|
return (vCurrentChannelPlatform > vCurrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDistributionInfoComponent::ps_loadSetup()
|
void CDistributionInfoComponent::ps_requestLoadOfSetup()
|
||||||
{
|
{
|
||||||
if (!ui->le_LatestVersion->text().isEmpty())
|
if (sGui && !ui->le_LatestVersion->text().isEmpty())
|
||||||
{
|
{
|
||||||
ui->le_LatestVersion->setText("");
|
const CStatusMessageList msgs(sGui->requestReloadOfSetupAndVersion());
|
||||||
const CStatusMessageList msgs(sApp->requestReloadOfSetupAndVersion());
|
|
||||||
CLogMessage::preformatted(msgs);
|
CLogMessage::preformatted(msgs);
|
||||||
|
if (msgs.isSuccess())
|
||||||
|
{
|
||||||
|
ui->le_LatestVersion->setText("");
|
||||||
|
m_distributionsLoaded = false; // reset
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +121,7 @@ namespace BlackGui
|
|||||||
const QString channel = ui->cb_Channels->currentText();
|
const QString channel = ui->cb_Channels->currentText();
|
||||||
const QString currentPlatform = ui->cb_Platforms->currentText();
|
const QString currentPlatform = ui->cb_Platforms->currentText();
|
||||||
const QStringList settings({ channel, currentPlatform });
|
const QStringList settings({ channel, currentPlatform });
|
||||||
const CStatusMessage m = m_distributionSettings.setAndSave(settings);
|
const CStatusMessage m = m_distributionSetting.setAndSave(settings);
|
||||||
if (m.isFailure())
|
if (m.isFailure())
|
||||||
{
|
{
|
||||||
CLogMessage(this).preformatted(m);
|
CLogMessage(this).preformatted(m);
|
||||||
@@ -124,17 +130,17 @@ namespace BlackGui
|
|||||||
|
|
||||||
void CDistributionInfoComponent::ps_channelChanged()
|
void CDistributionInfoComponent::ps_channelChanged()
|
||||||
{
|
{
|
||||||
const CDistributionList distributions(m_distributionInfo.get());
|
const CDistributionList distributions(m_distributionsInfo.get());
|
||||||
const QStringList channels = distributions.getChannels();
|
const QStringList channels = distributions.getChannels().toList();
|
||||||
const QStringList settings = m_distributionSettings.get(); // channel / platform
|
const QStringList channelPlatformSetting = m_distributionSetting.get(); // channel / platform
|
||||||
Q_ASSERT_X(settings.size() == 2, Q_FUNC_INFO, "Settings");
|
Q_ASSERT_X(channelPlatformSetting.size() == 2, Q_FUNC_INFO, "Settings");
|
||||||
|
|
||||||
// default value
|
// default value
|
||||||
QString channel = ui->cb_Channels->currentText();
|
QString channel = ui->cb_Channels->currentText();
|
||||||
if (channel.isEmpty()) { channel = settings.front(); }
|
if (channel.isEmpty()) { channel = channelPlatformSetting.front(); }
|
||||||
if (channel.isEmpty() && !channels.isEmpty()) { channel = channels.front(); }
|
if (channel.isEmpty() && !channels.isEmpty()) { channel = channels.front(); }
|
||||||
|
|
||||||
// channels
|
// channels (will be connected below)
|
||||||
ui->cb_Channels->disconnect();
|
ui->cb_Channels->disconnect();
|
||||||
ui->cb_Platforms->disconnect();
|
ui->cb_Platforms->disconnect();
|
||||||
ui->cb_Channels->clear();
|
ui->cb_Channels->clear();
|
||||||
@@ -149,8 +155,8 @@ namespace BlackGui
|
|||||||
|
|
||||||
// platforms
|
// platforms
|
||||||
QString platform = ui->cb_Platforms->currentText();
|
QString platform = ui->cb_Platforms->currentText();
|
||||||
if (platform.isEmpty()) { platform = settings.last(); }
|
if (platform.isEmpty()) { platform = channelPlatformSetting.last(); }
|
||||||
if (platform.isEmpty()) { platform = currentDistribution.guessPlatform(); }
|
if (platform.isEmpty() || !platforms.contains(platform)) { platform = currentDistribution.guessMyPlatform(); }
|
||||||
|
|
||||||
ui->cb_Platforms->clear();
|
ui->cb_Platforms->clear();
|
||||||
ui->cb_Platforms->insertItems(0, platforms);
|
ui->cb_Platforms->insertItems(0, platforms);
|
||||||
@@ -173,7 +179,7 @@ namespace BlackGui
|
|||||||
ui->lbl_NewVersionUrl->clear();
|
ui->lbl_NewVersionUrl->clear();
|
||||||
m_newVersionAvailable.clear();
|
m_newVersionAvailable.clear();
|
||||||
|
|
||||||
const QString currentPlatform = ui->cb_Platforms->currentText();
|
const QString currentPlatform = this->getSelectedOrGuessedPlatform();
|
||||||
if (!currentPlatform.isEmpty())
|
if (!currentPlatform.isEmpty())
|
||||||
{
|
{
|
||||||
const QVersionNumber latestVersion = m_currentDistribution.getQVersion(currentPlatform);
|
const QVersionNumber latestVersion = m_currentDistribution.getQVersion(currentPlatform);
|
||||||
@@ -203,5 +209,16 @@ namespace BlackGui
|
|||||||
emit selectionChanged();
|
emit selectionChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CDistributionInfoComponent::getSelectedOrGuessedPlatform() const
|
||||||
|
{
|
||||||
|
QString p = ui->cb_Platforms->currentText();
|
||||||
|
if (p.isEmpty())
|
||||||
|
{
|
||||||
|
const CDistributionList distributions = m_distributionsInfo.get();
|
||||||
|
p = distributions.findByChannelOrDefault(ui->cb_Channels->currentText()).guessMyPlatform();
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
} // ns
|
} // ns
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#ifndef BLACKGUI_COMPONENTS_DISTRIBUTIONINFOCOMPONENT_H
|
#ifndef BLACKGUI_COMPONENTS_DISTRIBUTIONINFOCOMPONENT_H
|
||||||
#define BLACKGUI_COMPONENTS_DISTRIBUTIONINFOCOMPONENT_H
|
#define BLACKGUI_COMPONENTS_DISTRIBUTIONINFOCOMPONENT_H
|
||||||
|
|
||||||
|
#include "blackcore/application/distributionsettings.h"
|
||||||
#include "blackgui/blackguiexport.h"
|
#include "blackgui/blackguiexport.h"
|
||||||
#include "blackmisc/db/distributionlist.h"
|
#include "blackmisc/db/distributionlist.h"
|
||||||
#include "blackmisc/settingscache.h"
|
#include "blackmisc/settingscache.h"
|
||||||
@@ -56,7 +57,7 @@ namespace BlackGui
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
//! Load latest version
|
//! Load latest version
|
||||||
void ps_loadSetup();
|
void ps_requestLoadOfSetup();
|
||||||
|
|
||||||
//! Loaded latest version
|
//! Loaded latest version
|
||||||
void ps_loadedDistributionInfo(bool success);
|
void ps_loadedDistributionInfo(bool success);
|
||||||
@@ -79,11 +80,14 @@ namespace BlackGui
|
|||||||
bool m_distributionsLoaded = false; //!< distribution info loaded
|
bool m_distributionsLoaded = false; //!< distribution info loaded
|
||||||
QString m_newVersionAvailable; //!< new version number if any
|
QString m_newVersionAvailable; //!< new version number if any
|
||||||
BlackMisc::Db::CDistribution m_currentDistribution; //!< current distribution
|
BlackMisc::Db::CDistribution m_currentDistribution; //!< current distribution
|
||||||
BlackMisc::CDataReadOnly<BlackMisc::Db::TDistributionInfo> m_distributionInfo { this, &CDistributionInfoComponent::ps_changedDistributionCache }; //!< version cache
|
BlackMisc::CDataReadOnly<BlackMisc::Db::TDistributionsInfo> m_distributionsInfo { this, &CDistributionInfoComponent::ps_changedDistributionCache }; //!< version cache
|
||||||
BlackMisc::CSetting<BlackMisc::Db::TDistributionSetting> m_distributionSettings { this }; //!< channel/platform selected
|
BlackMisc::CSetting<BlackCore::Application::TDistribution> m_distributionSetting { this }; //!< channel/platform selected
|
||||||
|
|
||||||
//! Save the current settings
|
//! Save the current settings
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
|
|
||||||
|
//! Selected platform from UI or guessed platform
|
||||||
|
QString getSelectedOrGuessedPlatform() const;
|
||||||
};
|
};
|
||||||
} // ns
|
} // ns
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
Reference in New Issue
Block a user