diff options
author | flow <flowlnlnln@gmail.com> | 2022-12-29 12:39:20 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-12-29 13:21:49 -0300 |
commit | 257970c27d262bd4b4dec4632f6370c5e04bc61b (patch) | |
tree | 3a891cf67eabbe2188f9815614f6019772abe126 /launcher/minecraft | |
parent | aa3633d2d7591f4a68208d425e645fa4fc5c10a1 (diff) | |
download | PrismLauncher-257970c27d262bd4b4dec4632f6370c5e04bc61b.tar.gz PrismLauncher-257970c27d262bd4b4dec4632f6370c5e04bc61b.tar.bz2 PrismLauncher-257970c27d262bd4b4dec4632f6370c5e04bc61b.zip |
refactor(Mods): make provider() return a std::optional
This makes it easier to check if a mod has a provider or not, without
having to do a string comparison.
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/minecraft')
-rw-r--r-- | launcher/minecraft/mod/Mod.cpp | 13 | ||||
-rw-r--r-- | launcher/minecraft/mod/Mod.h | 4 | ||||
-rw-r--r-- | launcher/minecraft/mod/ModFolderModel.cpp | 11 |
3 files changed, 18 insertions, 10 deletions
diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index 1be8e7e3..9cd0056c 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -93,10 +93,11 @@ std::pair<int, bool> Mod::compare(const Resource& other, SortType type) const if (this_ver < other_ver) return { -1, type == SortType::VERSION }; } - case SortType::PROVIDER: - auto compare_result = QString::compare(provider(), cast_other->provider(), Qt::CaseInsensitive); + case SortType::PROVIDER: { + auto compare_result = QString::compare(provider().value_or("Unknown"), cast_other->provider().value_or("Unknown"), Qt::CaseInsensitive); if (compare_result != 0) return { compare_result, type == SortType::PROVIDER }; + } } return { 0, false }; } @@ -197,11 +198,9 @@ void Mod::finishResolvingWithDetails(ModDetails&& details) setMetadata(std::move(metadata)); }; -auto Mod::provider() const -> QString +auto Mod::provider() const -> std::optional<QString> { - if (metadata()) { + if (metadata()) return ProviderCaps.readableName(metadata()->provider); - } - //: Unknown mod provider (i.e. not Modrinth, CurseForge, etc...) - return tr("Unknown"); + return {}; } diff --git a/launcher/minecraft/mod/Mod.h b/launcher/minecraft/mod/Mod.h index 16d2bb32..8185c8fc 100644 --- a/launcher/minecraft/mod/Mod.h +++ b/launcher/minecraft/mod/Mod.h @@ -39,6 +39,8 @@ #include <QFileInfo> #include <QList> +#include <optional> + #include "Resource.h" #include "ModDetails.h" @@ -61,7 +63,7 @@ public: auto description() const -> QString; auto authors() const -> QStringList; auto status() const -> ModStatus; - auto provider() const -> QString; + auto provider() const -> std::optional<QString>; auto metadata() -> std::shared_ptr<Metadata::ModStruct>; auto metadata() const -> const std::shared_ptr<Metadata::ModStruct>; diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index 5aadc2f1..f258ad69 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -83,8 +83,15 @@ QVariant ModFolderModel::data(const QModelIndex &index, int role) const } case DateColumn: return m_resources[row]->dateTimeChanged(); - case ProviderColumn: - return at(row)->provider(); + case ProviderColumn: { + auto provider = at(row)->provider(); + if (!provider.has_value()) { + //: Unknown mod provider (i.e. not Modrinth, CurseForge, etc...) + return tr("Unknown"); + } + + return provider.value(); + } default: return QVariant(); } |