23 #include "updatepackagefilter.h" 25 #include "plugins/engineplugin.h" 26 #include "plugins/pluginloader.h" 27 #include "strings.hpp" 28 #include "updater/autoupdater.h" 31 #include <QCoreApplication> 33 #include <wadseeker/wadseekerversioninfo.h> 35 class UpdatePackageFilter::PluginInfo
42 DClass<UpdatePackageFilter>
45 bool bWasAnyUpdatePackageIgnored;
46 QMap<QString, QList<QString> > ignoredPackagesRevisions;
47 QMap<QString, UpdatePackageFilter::PluginInfo> plugins;
49 bool hasMainProgramPackage(
const QList<UpdatePackage> &packages)
const 67 d->bWasAnyUpdatePackageIgnored =
false;
70 UpdatePackageFilter::~UpdatePackageFilter()
74 QMap<QString, UpdatePackageFilter::PluginInfo> UpdatePackageFilter::collectPluginInfo()
76 QMap<QString, PluginInfo> infos;
77 const QList<PluginLoader::Plugin *> plugins = gPlugins->plugins();
80 PluginInfo pluginInfo;
81 pluginInfo.name = plugin->info()->data()->name;
82 pluginInfo.revision = QString::number(plugin->info()->data()->version);
84 infos.insert(prefixedName, pluginInfo);
89 QList<UpdatePackage> UpdatePackageFilter::filter(
const QList<UpdatePackage> &packages)
91 QList<UpdatePackage> filtered;
92 d->plugins = collectPluginInfo();
93 QList<UpdatePackage> packagesOnIgnoredList;
96 if (isDifferentThanInstalled(pkg))
98 if (!isOnIgnoredList(pkg.name, pkg.revision))
104 packagesOnIgnoredList << pkg;
108 if (!filtered.isEmpty())
112 filtered.append(packagesOnIgnoredList);
113 packagesOnIgnoredList.clear();
115 d->bWasAnyUpdatePackageIgnored = !packagesOnIgnoredList.isEmpty();
119 bool UpdatePackageFilter::isDifferentThanInstalled(
UpdatePackage &pkg)
const 123 QString localRevision = QString::number(Version::revisionNumber());
130 else if (pkg.
name == AutoUpdater::WADSEEKER_PACKAGE_NAME)
132 QString localRevision = WadseekerVersionInfo::version();
139 else if (pkg.
name == AutoUpdater::QT_PACKAGE_NAME)
147 #if !defined(Q_OS_DARWIN) || defined(__x86_64__) 148 if (QString(Version::qtPackageVersion()) != pkg.
revision)
158 bool checkBrokenQt =
false;
160 checkBrokenQt =
true;
162 if (checkBrokenQt && !isQtInstallOk())
172 if (d->plugins.contains(pkg.
name))
174 PluginInfo pluginInfo = d->plugins[pkg.
name];
175 if (pluginInfo.revision != pkg.
revision)
185 bool UpdatePackageFilter::isQtInstallOk()
const 188 files <<
"libeay32.dll" <<
"ssleay32.dll";
189 for (
const QString &filename : files)
192 QCoreApplication::applicationDirPath(), filename);
193 QFile file(fileLocation);
202 bool UpdatePackageFilter::isOnIgnoredList(
const QString &package,
const QString &revision)
const 204 const QList<QString> &list = d->ignoredPackagesRevisions[package];
205 return list.contains(revision);
208 void UpdatePackageFilter::setIgnoreRevisions(
const QMap<QString, QList<QString> > &packagesRevisions)
210 d->ignoredPackagesRevisions = packagesRevisions;
215 return d->bWasAnyUpdatePackageIgnored;
static QString combinePaths(QString pathFront, QString pathEnd)
static QString versionRevision()
Combines version and revision strings.
QString revision
Revision used for version comparison.
static const QString PLUGIN_PREFIX
Prefix for all plugins packages names.
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).