Fixes an issue reported by @rphohl that XSwiftBus is not found

* only download non-restricted versions
* utility functions to find non-restricted versions
This commit is contained in:
Klaus Basan
2018-01-29 07:52:20 +01:00
parent 39533a7508
commit c6b942dc15
7 changed files with 29 additions and 3 deletions

View File

@@ -200,7 +200,9 @@ namespace BlackGui
{
const CUpdateInfo updateInfo = m_updates.get();
if (updateInfo.getArtifactsXSwiftBus().isEmpty()) { return; }
const CArtifactList artifacts = updateInfo.getArtifactsXSwiftBusLatestVersionFirst();
const CArtifactList artifacts = updateInfo.getArtifactsXSwiftBusLatestVersionFirst().findWithUnrestrictedDistributions();
if (artifacts.isEmpty()) { return; }
const CRemoteFileList remoteFiles = artifacts.asRemoteFiles();
if (!remoteFiles.isEmpty())
{

View File

@@ -183,9 +183,10 @@ namespace BlackGui
const CDistribution selectedDistribution(this->getSelectedOrDefaultDistribution());
const CPlatform selectedPlatform(this->getSelectedOrDefaultPlatform());
// for XSwiftBus we only show public (unrestricted) ones, as the follow up dialog will only show unrestricted
const CUpdateInfo updateInfo(m_updateInfo.get());
const CArtifactList artifactsPilotClient = updateInfo.getArtifactsPilotClient().findByDistributionAndPlatform(selectedDistribution, selectedPlatform, true);
const CArtifactList artifactsXsb = updateInfo.getArtifactsXSwiftBus().findByDistributionAndPlatform(selectedDistribution, selectedPlatform, true);
const CArtifactList artifactsXsb = updateInfo.getArtifactsXSwiftBus().findWithUnrestrictedDistributions().findByDistributionAndPlatform(selectedDistribution, selectedPlatform, true);
const QStringList sortedPilotClientVersions = artifactsPilotClient.getSortedVersions();
ui->cb_ArtifactsPilotClient->clear();

View File

@@ -56,6 +56,11 @@ namespace BlackMisc
return m_platform.matchesAny(platform);
}
bool CArtifact::hasUnrestrictedDistribution() const
{
return m_distributions.containsUnrestricted();
}
bool CArtifact::isWithDistribution(const CDistribution &distribution, bool acceptMoreStableDistributions) const
{
if (distribution.isEmpty() || !this->hasDistributions()) { return false; }
@@ -73,6 +78,7 @@ namespace BlackMisc
CRemoteFile rf(this->getName(), this->getFileSize());
const CDistribution d = this->getMostStableDistribution();
const CUrl url = d.getDownloadUrls().getRandomUrl();
if (url.isEmpty()) { return CRemoteFile(); }
rf.setUtcTimestamp(this->getUtcTimestamp());
rf.setUrl(url);
rf.setDescription(this->getPlatform().toQString() + " " + d.getChannel());

View File

@@ -123,6 +123,9 @@ namespace BlackMisc
//! Has distributions?
bool hasDistributions() const { return !m_distributions.isEmpty(); }
//! Has unrestricted distribution
bool hasUnrestrictedDistribution() const;
//! Is distributed with given distribution?
bool isWithDistribution(const CDistribution &distribution, bool acceptMoreStableDistributions) const;

View File

@@ -77,6 +77,17 @@ namespace BlackMisc
return al;
}
CArtifactList CArtifactList::findWithUnrestrictedDistributions() const
{
CArtifactList al;
for (const CArtifact &artifact : *this)
{
if (!artifact.hasUnrestrictedDistribution()) { continue; }
al.push_back(artifact);
}
return al;
}
CArtifactList CArtifactList::findByDistributionAndPlatform(const CDistribution &distribution, const CPlatform &platform, bool findMoreStableDistributions) const
{
return this->findByMatchingPlatform(platform).findByDistribution(distribution, findMoreStableDistributions);

View File

@@ -64,6 +64,9 @@ namespace BlackMisc
//! Find by distribution
CArtifactList findByDistribution(const CDistribution &distribution, bool findMoreStableDistribution = false) const;
//! Find artifacts with public (unrestricted) distributions
CArtifactList findWithUnrestrictedDistributions() const;
//! Find by distribution and platform
CArtifactList findByDistributionAndPlatform(const CDistribution &distribution, const CPlatform &platform, bool findMoreStableDistributions = false) const;

View File

@@ -48,7 +48,7 @@ namespace BlackMisc
bool CDistributionList::containsUnrestricted() const
{
return this->contains(&CDistribution::isRestricted, true);
return this->contains(&CDistribution::isRestricted, false);
}
bool CDistributionList::containsChannel(const QString &channel) const