diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index e9ca2e682..7aadb04a8 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -195,9 +195,9 @@ auto Mod::mcVersions() const -> QString auto Mod::releaseType() const -> QString { if (metadata()) - return metadata()->releaseType.toString(); + return ModPlatform::indexedVersionTypeToString(metadata()->releaseType); - return ModPlatform::IndexedVersionType().toString(); + return ModPlatform::indexedVersionTypeToString(ModPlatform::IndexedVersionType::Unknown); } auto Mod::description() const -> QString diff --git a/launcher/modplatform/ModIndex.cpp b/launcher/modplatform/ModIndex.cpp index 5e8759f97..5750b631c 100644 --- a/launcher/modplatform/ModIndex.cpp +++ b/launcher/modplatform/ModIndex.cpp @@ -25,10 +25,10 @@ namespace ModPlatform { -static const QMap s_indexed_version_type_names = { - { "release", IndexedVersionType::VersionType::Release }, - { "beta", IndexedVersionType::VersionType::Beta }, - { "alpha", IndexedVersionType::VersionType::Alpha } +static const QMap s_indexed_version_type_names = { + { "release", IndexedVersionType::Release }, + { "beta", IndexedVersionType::Beta }, + { "alpha", IndexedVersionType::Alpha } }; static const QList loaderList = { NeoForge, Forge, Cauldron, LiteLoader, Quilt, Fabric, @@ -45,32 +45,12 @@ QList modLoaderTypesToList(ModLoaderTypes flags) return flagList; } -IndexedVersionType::IndexedVersionType(const QString& type) : IndexedVersionType(enumFromString(type)) {} - -IndexedVersionType::IndexedVersionType(const IndexedVersionType::VersionType& type) -{ - m_type = type; -} - -IndexedVersionType::IndexedVersionType(const IndexedVersionType& other) -{ - m_type = other.m_type; -} - -IndexedVersionType& IndexedVersionType::operator=(const IndexedVersionType& other) -{ - m_type = other.m_type; - return *this; -} - -const QString IndexedVersionType::toString(const IndexedVersionType::VersionType& type) -{ +QString indexedVersionTypeToString(IndexedVersionType type) { return s_indexed_version_type_names.key(type, "unknown"); } -IndexedVersionType::VersionType IndexedVersionType::enumFromString(const QString& type) -{ - return s_indexed_version_type_names.value(type, IndexedVersionType::VersionType::Unknown); +IndexedVersionType indexedVersionTypeFromString(const QString& type) { + return s_indexed_version_type_names.value(type, IndexedVersionType::Unknown); } const char* ProviderCapabilities::name(ResourceProvider p) diff --git a/launcher/modplatform/ModIndex.h b/launcher/modplatform/ModIndex.h index 6cff8c622..d6283a074 100644 --- a/launcher/modplatform/ModIndex.h +++ b/launcher/modplatform/ModIndex.h @@ -74,33 +74,9 @@ struct DonationData { QString url; }; -struct IndexedVersionType { - enum class VersionType { Release = 1, Beta, Alpha, Unknown }; - IndexedVersionType(const QString& type); - IndexedVersionType(const IndexedVersionType::VersionType& type); - IndexedVersionType(const IndexedVersionType& type); - IndexedVersionType() : IndexedVersionType(IndexedVersionType::VersionType::Unknown) {} - static const QString toString(const IndexedVersionType::VersionType& type); - static IndexedVersionType::VersionType enumFromString(const QString& type); - bool isValid() const { return m_type != IndexedVersionType::VersionType::Unknown; } - IndexedVersionType& operator=(const IndexedVersionType& other); - bool operator==(const IndexedVersionType& other) const { return m_type == other.m_type; } - bool operator==(const IndexedVersionType::VersionType& type) const { return m_type == type; } - bool operator!=(const IndexedVersionType& other) const { return m_type != other.m_type; } - bool operator!=(const IndexedVersionType::VersionType& type) const { return m_type != type; } - bool operator<(const IndexedVersionType& other) const { return m_type < other.m_type; } - bool operator<(const IndexedVersionType::VersionType& type) const { return m_type < type; } - bool operator<=(const IndexedVersionType& other) const { return m_type <= other.m_type; } - bool operator<=(const IndexedVersionType::VersionType& type) const { return m_type <= type; } - bool operator>(const IndexedVersionType& other) const { return m_type > other.m_type; } - bool operator>(const IndexedVersionType::VersionType& type) const { return m_type > type; } - bool operator>=(const IndexedVersionType& other) const { return m_type >= other.m_type; } - bool operator>=(const IndexedVersionType::VersionType& type) const { return m_type >= type; } - - QString toString() const { return toString(m_type); } - - IndexedVersionType::VersionType m_type; -}; +enum class IndexedVersionType { Unknown, Release = 1, Beta, Alpha }; +IndexedVersionType indexedVersionTypeFromString(const QString& type); +QString indexedVersionTypeToString(IndexedVersionType type); struct Dependency { QVariant addonId; @@ -131,7 +107,7 @@ struct IndexedVersion { QString getVersionDisplayString() const { - auto release_type = version_type.isValid() ? QString(" [%1]").arg(version_type.toString()) : ""; + auto release_type = version_type != IndexedVersionType::Unknown ? QString(" [%1]").arg(indexedVersionTypeToString(version_type)) : ""; auto versionStr = !version.contains(version_number) ? version_number : ""; QString gameVersion = ""; for (auto v : mcVersion) { diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp index a01de847b..122f23bd0 100644 --- a/launcher/modplatform/flame/FlameModIndex.cpp +++ b/launcher/modplatform/flame/FlameModIndex.cpp @@ -143,21 +143,22 @@ auto FlameMod::loadIndexedPackVersion(QJsonObject& obj, bool load_changelog) -> file.fileName = Json::requireString(obj, "fileName"); file.fileName = FS::RemoveInvalidPathChars(file.fileName); - ModPlatform::IndexedVersionType::VersionType ver_type; + ModPlatform::IndexedVersionType ver_type; switch (Json::requireInteger(obj, "releaseType")) { case 1: - ver_type = ModPlatform::IndexedVersionType::VersionType::Release; + ver_type = ModPlatform::IndexedVersionType::Release; break; case 2: - ver_type = ModPlatform::IndexedVersionType::VersionType::Beta; + ver_type = ModPlatform::IndexedVersionType::Beta; break; case 3: - ver_type = ModPlatform::IndexedVersionType::VersionType::Alpha; + ver_type = ModPlatform::IndexedVersionType::Alpha; break; default: - ver_type = ModPlatform::IndexedVersionType::VersionType::Unknown; + ver_type = ModPlatform::IndexedVersionType::Unknown; + break; } - file.version_type = ModPlatform::IndexedVersionType(ver_type); + file.version_type = ver_type; auto hash_list = obj["hashes"].toArray(); for (auto h : hash_list) { diff --git a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp index 2c8ce76b9..dd8be5cae 100644 --- a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp @@ -145,7 +145,7 @@ ModPlatform::IndexedVersion Modrinth::loadIndexedPackVersion(QJsonObject& obj, Q } file.version = Json::requireString(obj, "name"); file.version_number = Json::requireString(obj, "version_number"); - file.version_type = ModPlatform::IndexedVersionType(Json::requireString(obj, "version_type")); + file.version_type = ModPlatform::indexedVersionTypeFromString(Json::requireString(obj, "version_type")); file.changelog = Json::requireString(obj, "changelog"); diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 072450c9a..d1cf25cc1 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -198,7 +198,7 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) { "side", ModPlatform::SideUtils::toString(mod.side).toStdString() }, { "x-prismlauncher-loaders", loaders }, { "x-prismlauncher-mc-versions", mcVersions }, - { "x-prismlauncher-release-type", mod.releaseType.toString().toStdString() }, + { "x-prismlauncher-release-type", ModPlatform::indexedVersionTypeToString(mod.releaseType).toStdString() }, { "x-prismlauncher-version-number", mod.version_number.toStdString() }, { "download", toml::table{ @@ -272,7 +272,7 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod mod.name = stringEntry(table, "name"); mod.filename = stringEntry(table, "filename"); mod.side = ModPlatform::SideUtils::fromString(stringEntry(table, "side")); - mod.releaseType = ModPlatform::IndexedVersionType(table["x-prismlauncher-release-type"].value_or("")); + mod.releaseType = ModPlatform::indexedVersionTypeFromString(table["x-prismlauncher-release-type"].value_or("")); if (auto loaders = table["x-prismlauncher-loaders"]; loaders && loaders.is_array()) { for (auto&& loader : *loaders.as_array()) { if (loader.is_string()) { diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index 3015ae6e7..fae9fa03e 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -187,7 +187,8 @@ void ResourceDownloadDialog::confirm() auto extraInfo = dependencyExtraInfo.value(task->getPack()->addonId.toString()); confirm_dialog->appendResource({ task->getName(), task->getFilename(), task->getCustomPath(), ModPlatform::ProviderCapabilities::name(task->getProvider()), extraInfo.required_by, - task->getVersion().version_type.toString(), !extraInfo.maybe_installed }); + ModPlatform::indexedVersionTypeToString(task->getVersion().version_type), + !extraInfo.maybe_installed }); } if (confirm_dialog->exec()) { diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index a460e9d35..ec275cc91 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -453,8 +453,8 @@ void ResourceUpdateDialog::appendResource(CheckUpdateTask::Update const& info, Q if (info.new_version_type.has_value()) { auto new_version_type_item = new QTreeWidgetItem(item_top); - new_version_type_item->setText(0, tr("New Version Type: %1").arg(info.new_version_type.value().toString())); - new_version_type_item->setData(0, Qt::UserRole, info.new_version_type.value().toString()); + new_version_type_item->setText(0, tr("New Version Type: %1").arg(indexedVersionTypeToString(info.new_version_type.value()))); + new_version_type_item->setData(0, Qt::UserRole, indexedVersionTypeToString(info.new_version_type.value())); } if (!requiredBy.isEmpty()) { diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index 061e96491..964e3b662 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -297,8 +297,8 @@ void ResourcePage::versionListUpdated(const QModelIndex& index) continue; auto versionText = version.version; - if (version.version_type.isValid()) { - versionText += QString(" [%1]").arg(version.version_type.toString()); + if (version.version_type != ModPlatform::IndexedVersionType::Unknown) { + versionText += QString(" [%1]").arg(ModPlatform::indexedVersionTypeToString(version.version_type)); } if (version.fileId == installedVersion) { versionText += tr(" [installed]", "Mod version select"); diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index 4fb0aef22..60b298901 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -387,13 +387,13 @@ void ModFilterWidget::onReleaseFilterChanged() { std::list releases; if (ui->releaseCb->isChecked()) - releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Release)); + releases.push_back(ModPlatform::IndexedVersionType::Release); if (ui->betaCb->isChecked()) - releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Beta)); + releases.push_back(ModPlatform::IndexedVersionType::Beta); if (ui->alphaCb->isChecked()) - releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Alpha)); + releases.push_back(ModPlatform::IndexedVersionType::Alpha); if (ui->unknownCb->isChecked()) - releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Unknown)); + releases.push_back(ModPlatform::IndexedVersionType::Unknown); m_filter_changed = releases != m_filter->releases; m_filter->releases = releases; if (m_filter_changed)