23 #include "updatepackagefilter.h" 25 #include "plugins/engineplugin.h" 26 #include "plugins/pluginloader.h" 27 #include "updater/autoupdater.h" 30 #include <QCoreApplication> 33 #include <wadseeker/wadseekerversioninfo.h> 35 class UpdatePackageFilter::PluginInfo
42 DClass<UpdatePackageFilter>
45 bool bWasAnyUpdatePackageIgnored;
46 bool useFallbackMainProgramName;
47 QMap<QString, QList<QString> > ignoredPackagesRevisions;
48 QMap<QString, UpdatePackageFilter::PluginInfo> plugins;
50 bool hasMainProgramPackage(
const QList<UpdatePackage> &packages)
const 62 const QString &mainProgramPackageNameOrFallback()
const 64 return !useFallbackMainProgramName ?
75 d->bWasAnyUpdatePackageIgnored =
false;
78 UpdatePackageFilter::~UpdatePackageFilter()
82 QMap<QString, UpdatePackageFilter::PluginInfo> UpdatePackageFilter::collectPluginInfo()
84 QMap<QString, PluginInfo> infos;
85 const QList<PluginLoader::Plugin*> plugins = gPlugins->plugins();
88 PluginInfo pluginInfo;
89 pluginInfo.name = plugin->
info()->data()->name;
90 pluginInfo.revision = QString::number(plugin->
info()->data()->version);
92 infos.insert(prefixedName, pluginInfo);
97 QList<UpdatePackage> UpdatePackageFilter::filter(
const QList<UpdatePackage>& packages)
99 QList<UpdatePackage> filtered;
100 d->plugins = collectPluginInfo();
101 QList<UpdatePackage> packagesOnIgnoredList;
102 d->useFallbackMainProgramName = !d->hasMainProgramPackage(packages);
105 if (isDifferentThanInstalled(pkg))
113 packagesOnIgnoredList << pkg;
117 if (!filtered.isEmpty())
121 filtered.append(packagesOnIgnoredList);
122 packagesOnIgnoredList.clear();
124 d->bWasAnyUpdatePackageIgnored = !packagesOnIgnoredList.isEmpty();
128 bool UpdatePackageFilter::isDifferentThanInstalled(
UpdatePackage& pkg)
const 130 if (pkg.
name == d->mainProgramPackageNameOrFallback())
132 QString localRevision = QString::number(Version::revisionNumber());
139 else if (pkg.
name == AutoUpdater::WADSEEKER_PACKAGE_NAME)
141 QString localRevision = WadseekerVersionInfo::version();
148 else if (pkg.
name == AutoUpdater::QT_PACKAGE_NAME)
156 #if !defined(Q_OS_MAC) || defined(__x86_64__) 157 if (QString(Version::qtPackageVersion()) != pkg.
revision)
167 bool checkBrokenQt =
false;
169 checkBrokenQt =
true;
171 if (checkBrokenQt && !isQtInstallOk())
181 if (d->plugins.contains(pkg.
name))
183 PluginInfo pluginInfo = d->plugins[pkg.
name];
184 if (pluginInfo.revision != pkg.
revision)
194 bool UpdatePackageFilter::isQtInstallOk()
const 197 files <<
"libeay32.dll" <<
"ssleay32.dll";
198 foreach (
const QString &filename, files)
201 QCoreApplication::applicationDirPath(), filename);
202 QFile file(fileLocation);
211 bool UpdatePackageFilter::isOnIgnoredList(
const QString& package,
const QString &revision)
const 213 const QList<QString>& list = d->ignoredPackagesRevisions[package];
214 return list.contains(revision);
217 void UpdatePackageFilter::setIgnoreRevisions(
218 const QMap<QString, QList<QString> >& packagesRevisions)
220 d->ignoredPackagesRevisions = packagesRevisions;
225 return d->bWasAnyUpdatePackageIgnored;
static QString combinePaths(QString pathFront, QString pathEnd)
static QString versionRevision()
Combines version and revision strings.
static const QString FALLBACK_MAIN_PROGRAM_PACKAGE_NAME
Support for downgrading to monolithic Doomseeker package.
QString revision
Revision used for version comparison.
static const QString PLUGIN_PREFIX
Prefix for all plugins packages names.
EnginePlugin * info() const
Main plugin interface.
Filters UpdatePackage information basing on what is requested by the program.
bool wasAnyUpdatePackageIgnored() const
After filter() flag which says if any package was ignored.
static const QString MAIN_PROGRAM_PACKAGE_NAME
Package name for the main program.
QString currentlyInstalledDisplayVersion
Currently installed version, displayed to the user.
QString name
Name of the package (program name or plugin name).