23 #include "updatepackagefilter.h"
25 #include "plugins/engineplugin.h"
26 #include "plugins/pluginloader.h"
27 #include "updater/autoupdater.h"
31 class UpdatePackageFilter::PluginInfo
35 unsigned long long revision;
38 DClass<UpdatePackageFilter>
41 bool bWasAnyUpdatePackageIgnored;
42 QMap<QString, QList<unsigned long long> > ignoredPackagesRevisions;
43 QMap<QString, UpdatePackageFilter::PluginInfo> plugins;
50 d->bWasAnyUpdatePackageIgnored =
false;
53 UpdatePackageFilter::~UpdatePackageFilter()
57 QMap<QString, UpdatePackageFilter::PluginInfo> UpdatePackageFilter::collectPluginInfo()
59 QMap<QString, PluginInfo> infos;
60 const QList<PluginLoader::Plugin*> plugins = gPlugins->plugins();
63 PluginInfo pluginInfo;
64 pluginInfo.name = plugin->
info()->data()->name;
65 pluginInfo.revision = plugin->
info()->data()->version;
67 infos.insert(prefixedName, pluginInfo);
72 QList<UpdatePackage> UpdatePackageFilter::filter(
const QList<UpdatePackage>& packages)
74 QList<UpdatePackage> filtered;
75 d->plugins = collectPluginInfo();
76 QList<UpdatePackage> packagesOnIgnoredList;
79 if (isDifferentThanInstalled(pkg))
87 packagesOnIgnoredList << pkg;
91 if (!filtered.isEmpty())
95 filtered.append(packagesOnIgnoredList);
96 packagesOnIgnoredList.clear();
98 d->bWasAnyUpdatePackageIgnored = !packagesOnIgnoredList.isEmpty();
102 bool UpdatePackageFilter::isDifferentThanInstalled(
UpdatePackage& pkg)
const
107 unsigned long long localRevision = Version::revisionNumber();
117 if (d->plugins.contains(pkg.
name))
119 PluginInfo pluginInfo = d->plugins[pkg.
name];
120 if (pluginInfo.revision != pkg.
revision)
130 bool UpdatePackageFilter::isOnIgnoredList(
const QString& package,
131 unsigned long long revision)
const
133 const QList<unsigned long long>& list = d->ignoredPackagesRevisions[package];
134 return list.contains(revision);
137 void UpdatePackageFilter::setIgnoreRevisions(
138 const QMap<QString, QList<unsigned long long> >& packagesRevisions)
140 d->ignoredPackagesRevisions = packagesRevisions;
145 return d->bWasAnyUpdatePackageIgnored;
static QString versionRevision()
Combines version and revision strings.
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.
unsigned long long revision
Revision number used for version comparison.
QString currentlyInstalledDisplayVersion
Currently installed version, displayed to the user.
QString name
Name of the package (program name or plugin name).