diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-12-14 02:22:20 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-12-14 02:22:20 +0100 |
commit | daf9d0eaa7e762ad8571f91a266098631b1843e6 (patch) | |
tree | d0a707e4742f787f9769c0bbc2c0e0213bd22b48 /api/logic/meta/VersionList.cpp | |
parent | f18afd3d1e73cc0020bfa1189e0b8fefc0f14e61 (diff) | |
download | PrismLauncher-daf9d0eaa7e762ad8571f91a266098631b1843e6.tar.gz PrismLauncher-daf9d0eaa7e762ad8571f91a266098631b1843e6.tar.bz2 PrismLauncher-daf9d0eaa7e762ad8571f91a266098631b1843e6.zip |
NOISSUE do not override already loaded metadata entities with partial data
Diffstat (limited to 'api/logic/meta/VersionList.cpp')
-rw-r--r-- | api/logic/meta/VersionList.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/api/logic/meta/VersionList.cpp b/api/logic/meta/VersionList.cpp index 1387f282..4963f235 100644 --- a/api/logic/meta/VersionList.cpp +++ b/api/logic/meta/VersionList.cpp @@ -19,6 +19,7 @@ #include "Version.h" #include "JsonFormat.h" +#include "Version.h" namespace Meta { @@ -189,32 +190,44 @@ static const Meta::VersionPtr &getBetterVersion(const Meta::VersionPtr &a, const return (a->type() == "release" ? a : b); } -void VersionList::merge(const BaseEntity::Ptr &other) +void VersionList::mergeFromIndex(const VersionListPtr &other) +{ + if (m_name != other->m_name) + { + setName(other->m_name); + } + + if(m_parentUid != other->m_parentUid) + { + setParentUid(other->m_parentUid); + } +} + +void VersionList::merge(const VersionListPtr &other) { - const VersionListPtr list = std::dynamic_pointer_cast<VersionList>(other); - if (m_name != list->m_name) + if (m_name != other->m_name) { - setName(list->m_name); + setName(other->m_name); } - if(m_parentUid != list->m_parentUid) + if(m_parentUid != other->m_parentUid) { - setParentUid(list->m_parentUid); + setParentUid(other->m_parentUid); } // TODO: do not reset the whole model. maybe? beginResetModel(); m_versions.clear(); - if(list->m_versions.isEmpty()) + if(other->m_versions.isEmpty()) { qWarning() << "Empty list loaded ..."; } - for (const VersionPtr &version : list->m_versions) + for (const VersionPtr &version : other->m_versions) { // we already have the version. merge the contents if (m_lookup.contains(version->version())) { - m_lookup.value(version->version())->merge(version); + m_lookup.value(version->version())->mergeFromList(version); } else { |