From 64c51a70a3aa110131fb6ad0cabc07ccfdcbb1c0 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 9 Dec 2022 20:26:05 -0700 Subject: [PATCH 01/37] feat: add initial support for parseing datapacks Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/CMakeLists.txt | 4 + launcher/minecraft/mod/DataPack.cpp | 110 ++++++++++++ launcher/minecraft/mod/DataPack.h | 73 ++++++++ launcher/minecraft/mod/ResourcePack.cpp | 4 +- .../mod/tasks/LocalDataPackParseTask.cpp | 169 ++++++++++++++++++ .../mod/tasks/LocalDataPackParseTask.h | 64 +++++++ .../mod/tasks/LocalResourcePackParseTask.cpp | 82 ++++++--- .../mod/tasks/LocalResourcePackParseTask.h | 8 +- .../mod/tasks/LocalTexturePackParseTask.cpp | 59 ++++-- .../mod/tasks/LocalTexturePackParseTask.h | 8 +- tests/CMakeLists.txt | 3 + tests/DataPackParse_test.cpp | 76 ++++++++ .../another_test_folder/pack.mcmeta | 6 + .../DataPackParse/test_data_pack_boogaloo.zip | Bin 0 -> 898 bytes .../DataPackParse/test_folder/pack.mcmeta | 6 + 15 files changed, 622 insertions(+), 50 deletions(-) create mode 100644 launcher/minecraft/mod/DataPack.cpp create mode 100644 launcher/minecraft/mod/DataPack.h create mode 100644 launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp create mode 100644 launcher/minecraft/mod/tasks/LocalDataPackParseTask.h create mode 100644 tests/DataPackParse_test.cpp create mode 100644 tests/testdata/DataPackParse/another_test_folder/pack.mcmeta create mode 100644 tests/testdata/DataPackParse/test_data_pack_boogaloo.zip create mode 100644 tests/testdata/DataPackParse/test_folder/pack.mcmeta diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index a0d92b6ee..c12e67409 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -331,6 +331,8 @@ set(MINECRAFT_SOURCES minecraft/mod/Resource.cpp minecraft/mod/ResourceFolderModel.h minecraft/mod/ResourceFolderModel.cpp + minecraft/mod/DataPack.h + minecraft/mod/DataPack.cpp minecraft/mod/ResourcePack.h minecraft/mod/ResourcePack.cpp minecraft/mod/ResourcePackFolderModel.h @@ -347,6 +349,8 @@ set(MINECRAFT_SOURCES minecraft/mod/tasks/LocalModParseTask.cpp minecraft/mod/tasks/LocalModUpdateTask.h minecraft/mod/tasks/LocalModUpdateTask.cpp + minecraft/mod/tasks/LocalDataPackParseTask.h + minecraft/mod/tasks/LocalDataPackParseTask.cpp minecraft/mod/tasks/LocalResourcePackParseTask.h minecraft/mod/tasks/LocalResourcePackParseTask.cpp minecraft/mod/tasks/LocalTexturePackParseTask.h diff --git a/launcher/minecraft/mod/DataPack.cpp b/launcher/minecraft/mod/DataPack.cpp new file mode 100644 index 000000000..3f275160c --- /dev/null +++ b/launcher/minecraft/mod/DataPack.cpp @@ -0,0 +1,110 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "DataPack.h" + +#include +#include +#include + +#include "Version.h" + +#include "minecraft/mod/tasks/LocalDataPackParseTask.h" + +// Values taken from: +// https://minecraft.fandom.com/wiki/Tutorials/Creating_a_data_pack#%22pack_format%22 +static const QMap> s_pack_format_versions = { + { 4, { Version("1.13"), Version("1.14.4") } }, { 5, { Version("1.15"), Version("1.16.1") } }, + { 6, { Version("1.16.2"), Version("1.16.5") } }, { 7, { Version("1.17"), Version("1.17.1") } }, + { 8, { Version("1.18"), Version("1.18.1") } }, { 9, { Version("1.18.2"), Version("1.18.2") } }, + { 10, { Version("1.19"), Version("1.19.3") } }, +}; + +void DataPack::setPackFormat(int new_format_id) +{ + QMutexLocker locker(&m_data_lock); + + if (!s_pack_format_versions.contains(new_format_id)) { + qWarning() << "Pack format '%1' is not a recognized resource pack id!"; + } + + m_pack_format = new_format_id; +} + +void DataPack::setDescription(QString new_description) +{ + QMutexLocker locker(&m_data_lock); + + m_description = new_description; +} + +std::pair DataPack::compatibleVersions() const +{ + if (!s_pack_format_versions.contains(m_pack_format)) { + return { {}, {} }; + } + + return s_pack_format_versions.constFind(m_pack_format).value(); +} + +std::pair DataPack::compare(const Resource& other, SortType type) const +{ + auto const& cast_other = static_cast(other); + + switch (type) { + default: { + auto res = Resource::compare(other, type); + if (res.first != 0) + return res; + } + case SortType::PACK_FORMAT: { + auto this_ver = packFormat(); + auto other_ver = cast_other.packFormat(); + + if (this_ver > other_ver) + return { 1, type == SortType::PACK_FORMAT }; + if (this_ver < other_ver) + return { -1, type == SortType::PACK_FORMAT }; + } + } + return { 0, false }; +} + +bool DataPack::applyFilter(QRegularExpression filter) const +{ + if (filter.match(description()).hasMatch()) + return true; + + if (filter.match(QString::number(packFormat())).hasMatch()) + return true; + + if (filter.match(compatibleVersions().first.toString()).hasMatch()) + return true; + if (filter.match(compatibleVersions().second.toString()).hasMatch()) + return true; + + return Resource::applyFilter(filter); +} + +bool DataPack::valid() const +{ + return m_pack_format != 0; +} diff --git a/launcher/minecraft/mod/DataPack.h b/launcher/minecraft/mod/DataPack.h new file mode 100644 index 000000000..17d9b65ec --- /dev/null +++ b/launcher/minecraft/mod/DataPack.h @@ -0,0 +1,73 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "Resource.h" + +#include + +class Version; + +/* TODO: + * + * Store localized descriptions + * */ + +class DataPack : public Resource { + Q_OBJECT + public: + using Ptr = shared_qobject_ptr; + + DataPack(QObject* parent = nullptr) : Resource(parent) {} + DataPack(QFileInfo file_info) : Resource(file_info) {} + + /** Gets the numerical ID of the pack format. */ + [[nodiscard]] int packFormat() const { return m_pack_format; } + /** Gets, respectively, the lower and upper versions supported by the set pack format. */ + [[nodiscard]] std::pair compatibleVersions() const; + + /** Gets the description of the resource pack. */ + [[nodiscard]] QString description() const { return m_description; } + + /** Thread-safe. */ + void setPackFormat(int new_format_id); + + /** Thread-safe. */ + void setDescription(QString new_description); + + bool valid() const override; + + [[nodiscard]] auto compare(Resource const& other, SortType type) const -> std::pair override; + [[nodiscard]] bool applyFilter(QRegularExpression filter) const override; + + protected: + mutable QMutex m_data_lock; + + /* The 'version' of a resource pack, as defined in the pack.mcmeta file. + * See https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta + */ + int m_pack_format = 0; + + /** The resource pack's description, as defined in the pack.mcmeta file. + */ + QString m_description; +}; diff --git a/launcher/minecraft/mod/ResourcePack.cpp b/launcher/minecraft/mod/ResourcePack.cpp index 3a2fd771b..47da4feac 100644 --- a/launcher/minecraft/mod/ResourcePack.cpp +++ b/launcher/minecraft/mod/ResourcePack.cpp @@ -17,7 +17,9 @@ static const QMap> s_pack_format_versions = { { 3, { Version("1.11"), Version("1.12.2") } }, { 4, { Version("1.13"), Version("1.14.4") } }, { 5, { Version("1.15"), Version("1.16.1") } }, { 6, { Version("1.16.2"), Version("1.16.5") } }, { 7, { Version("1.17"), Version("1.17.1") } }, { 8, { Version("1.18"), Version("1.18.2") } }, - { 9, { Version("1.19"), Version("1.19.2") } }, { 11, { Version("1.19.3"), Version("1.19.3") } }, + { 9, { Version("1.19"), Version("1.19.2") } }, + // { 11, { Version("22w42a"), Version("22w44a") } } + { 12, { Version("1.19.3"), Version("1.19.3") } }, }; void ResourcePack::setPackFormat(int new_format_id) diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp new file mode 100644 index 000000000..8bc8278b7 --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp @@ -0,0 +1,169 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "LocalDataPackParseTask.h" + +#include "FileSystem.h" +#include "Json.h" + +#include +#include +#include + +#include + +namespace DataPackUtils { + +bool process(DataPack& pack, ProcessingLevel level) +{ + switch (pack.type()) { + case ResourceType::FOLDER: + return DataPackUtils::processFolder(pack, level); + case ResourceType::ZIPFILE: + return DataPackUtils::processZIP(pack, level); + default: + qWarning() << "Invalid type for resource pack parse task!"; + return false; + } +} + +bool processFolder(DataPack& pack, ProcessingLevel level) +{ + Q_ASSERT(pack.type() == ResourceType::FOLDER); + + QFileInfo mcmeta_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.mcmeta")); + if (mcmeta_file_info.exists() && mcmeta_file_info.isFile()) { + QFile mcmeta_file(mcmeta_file_info.filePath()); + if (!mcmeta_file.open(QIODevice::ReadOnly)) + return false; // can't open mcmeta file + + auto data = mcmeta_file.readAll(); + + bool mcmeta_result = DataPackUtils::processMCMeta(pack, std::move(data)); + + mcmeta_file.close(); + if (!mcmeta_result) { + return false; // mcmeta invalid + } + } else { + return false; // mcmeta file isn't a valid file + } + + QFileInfo data_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "data")); + if (!data_dir_info.exists() || !data_dir_info.isDir()) { + return false; // data dir does not exists or isn't valid + } + + if (level == ProcessingLevel::BasicInfoOnly) { + return true; // only need basic info already checked + } + + return true; // all tests passed +} + +bool processZIP(DataPack& pack, ProcessingLevel level) +{ + Q_ASSERT(pack.type() == ResourceType::ZIPFILE); + + QuaZip zip(pack.fileinfo().filePath()); + if (!zip.open(QuaZip::mdUnzip)) + return false; // can't open zip file + + QuaZipFile file(&zip); + + if (zip.setCurrentFile("pack.mcmeta")) { + if (!file.open(QIODevice::ReadOnly)) { + qCritical() << "Failed to open file in zip."; + zip.close(); + return false; + } + + auto data = file.readAll(); + + bool mcmeta_result = DataPackUtils::processMCMeta(pack, std::move(data)); + + file.close(); + if (!mcmeta_result) { + return false; // mcmeta invalid + } + } else { + return false; // could not set pack.mcmeta as current file. + } + + QuaZipDir zipDir(&zip); + if (!zipDir.exists("/data")) { + return false; // data dir does not exists at zip root + } + + if (level == ProcessingLevel::BasicInfoOnly) { + zip.close(); + return true; // only need basic info already checked + } + + zip.close(); + + return true; +} + +// https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta +bool processMCMeta(DataPack& pack, QByteArray&& raw_data) +{ + try { + auto json_doc = QJsonDocument::fromJson(raw_data); + auto pack_obj = Json::requireObject(json_doc.object(), "pack", {}); + + pack.setPackFormat(Json::ensureInteger(pack_obj, "pack_format", 0)); + pack.setDescription(Json::ensureString(pack_obj, "description", "")); + } catch (Json::JsonException& e) { + qWarning() << "JsonException: " << e.what() << e.cause(); + return false; + } + return true; +} + +bool validate(QFileInfo file) +{ + DataPack dp{ file }; + return DataPackUtils::process(dp, ProcessingLevel::BasicInfoOnly) && dp.valid(); +} + +} // namespace DataPackUtils + +LocalDataPackParseTask::LocalDataPackParseTask(int token, DataPack& dp) + : Task(nullptr, false), m_token(token), m_resource_pack(dp) +{} + +bool LocalDataPackParseTask::abort() +{ + m_aborted = true; + return true; +} + +void LocalDataPackParseTask::executeTask() +{ + if (!DataPackUtils::process(m_resource_pack)) + return; + + if (m_aborted) + emitAborted(); + else + emitSucceeded(); +} diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h new file mode 100644 index 000000000..ee64df461 --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h @@ -0,0 +1,64 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +#include "minecraft/mod/DataPack.h" + +#include "tasks/Task.h" + +namespace DataPackUtils { + +enum class ProcessingLevel { Full, BasicInfoOnly }; + +bool process(DataPack& pack, ProcessingLevel level = ProcessingLevel::Full); + +bool processZIP(DataPack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processFolder(DataPack& pack, ProcessingLevel level = ProcessingLevel::Full); + +bool processMCMeta(DataPack& pack, QByteArray&& raw_data); + +/** Checks whether a file is valid as a resource pack or not. */ +bool validate(QFileInfo file); +} // namespace ResourcePackUtils + +class LocalDataPackParseTask : public Task { + Q_OBJECT + public: + LocalDataPackParseTask(int token, DataPack& rp); + + [[nodiscard]] bool canAbort() const override { return true; } + bool abort() override; + + void executeTask() override; + + [[nodiscard]] int token() const { return m_token; } + + private: + int m_token; + + DataPack& m_resource_pack; + + bool m_aborted = false; +}; diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp index 6fd4b0245..18d7383de 100644 --- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp @@ -23,6 +23,7 @@ #include #include +#include #include @@ -32,58 +33,74 @@ bool process(ResourcePack& pack, ProcessingLevel level) { switch (pack.type()) { case ResourceType::FOLDER: - ResourcePackUtils::processFolder(pack, level); - return true; + return ResourcePackUtils::processFolder(pack, level); case ResourceType::ZIPFILE: - ResourcePackUtils::processZIP(pack, level); - return true; + return ResourcePackUtils::processZIP(pack, level); default: qWarning() << "Invalid type for resource pack parse task!"; return false; } } -void processFolder(ResourcePack& pack, ProcessingLevel level) +bool processFolder(ResourcePack& pack, ProcessingLevel level) { Q_ASSERT(pack.type() == ResourceType::FOLDER); QFileInfo mcmeta_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.mcmeta")); - if (mcmeta_file_info.isFile()) { + if (mcmeta_file_info.exists() && mcmeta_file_info.isFile()) { QFile mcmeta_file(mcmeta_file_info.filePath()); if (!mcmeta_file.open(QIODevice::ReadOnly)) - return; + return false; // can't open mcmeta file auto data = mcmeta_file.readAll(); - ResourcePackUtils::processMCMeta(pack, std::move(data)); + bool mcmeta_result = ResourcePackUtils::processMCMeta(pack, std::move(data)); mcmeta_file.close(); + if (!mcmeta_result) { + return false; // mcmeta invalid + } + } else { + return false; // mcmeta file isn't a valid file } - if (level == ProcessingLevel::BasicInfoOnly) - return; + QFileInfo assets_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "assets")); + if (!assets_dir_info.exists() || !assets_dir_info.isDir()) { + return false; // assets dir does not exists or isn't valid + } + if (level == ProcessingLevel::BasicInfoOnly) { + return true; // only need basic info already checked + } + QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png")); - if (image_file_info.isFile()) { + if (image_file_info.exists() && image_file_info.isFile()) { QFile mcmeta_file(image_file_info.filePath()); if (!mcmeta_file.open(QIODevice::ReadOnly)) - return; + return false; // can't open pack.png file auto data = mcmeta_file.readAll(); - ResourcePackUtils::processPackPNG(pack, std::move(data)); + bool pack_png_result = ResourcePackUtils::processPackPNG(pack, std::move(data)); mcmeta_file.close(); + if (!pack_png_result) { + return false; // pack.png invalid + } + } else { + return false; // pack.png does not exists or is not a valid file. } + + return true; // all tests passed } -void processZIP(ResourcePack& pack, ProcessingLevel level) +bool processZIP(ResourcePack& pack, ProcessingLevel level) { Q_ASSERT(pack.type() == ResourceType::ZIPFILE); QuaZip zip(pack.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return; + return false; // can't open zip file QuaZipFile file(&zip); @@ -91,40 +108,57 @@ void processZIP(ResourcePack& pack, ProcessingLevel level) if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return; + return false; } auto data = file.readAll(); - ResourcePackUtils::processMCMeta(pack, std::move(data)); + bool mcmeta_result = ResourcePackUtils::processMCMeta(pack, std::move(data)); file.close(); + if (!mcmeta_result) { + return false; // mcmeta invalid + } + } else { + return false; // could not set pack.mcmeta as current file. + } + + QuaZipDir zipDir(&zip); + if (!zipDir.exists("/assets")) { + return false; // assets dir does not exists at zip root } if (level == ProcessingLevel::BasicInfoOnly) { zip.close(); - return; + return true; // only need basic info already checked } if (zip.setCurrentFile("pack.png")) { if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return; + return false; } auto data = file.readAll(); - ResourcePackUtils::processPackPNG(pack, std::move(data)); + bool pack_png_result = ResourcePackUtils::processPackPNG(pack, std::move(data)); file.close(); + if (!pack_png_result) { + return false; // pack.png invalid + } + } else { + return false; // could not set pack.mcmeta as current file. } zip.close(); + + return true; } // https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta -void processMCMeta(ResourcePack& pack, QByteArray&& raw_data) +bool processMCMeta(ResourcePack& pack, QByteArray&& raw_data) { try { auto json_doc = QJsonDocument::fromJson(raw_data); @@ -134,17 +168,21 @@ void processMCMeta(ResourcePack& pack, QByteArray&& raw_data) pack.setDescription(Json::ensureString(pack_obj, "description", "")); } catch (Json::JsonException& e) { qWarning() << "JsonException: " << e.what() << e.cause(); + return false; } + return true; } -void processPackPNG(ResourcePack& pack, QByteArray&& raw_data) +bool processPackPNG(ResourcePack& pack, QByteArray&& raw_data) { auto img = QImage::fromData(raw_data); if (!img.isNull()) { pack.setImage(img); } else { qWarning() << "Failed to parse pack.png."; + return false; } + return true; } bool validate(QFileInfo file) diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h index 69dbd6ad6..d0c24c2b1 100644 --- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h @@ -31,11 +31,11 @@ enum class ProcessingLevel { Full, BasicInfoOnly }; bool process(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); -void processZIP(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); -void processFolder(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processZIP(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processFolder(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); -void processMCMeta(ResourcePack& pack, QByteArray&& raw_data); -void processPackPNG(ResourcePack& pack, QByteArray&& raw_data); +bool processMCMeta(ResourcePack& pack, QByteArray&& raw_data); +bool processPackPNG(ResourcePack& pack, QByteArray&& raw_data); /** Checks whether a file is valid as a resource pack or not. */ bool validate(QFileInfo file); diff --git a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp index adb19aca9..e4492f12e 100644 --- a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp @@ -32,18 +32,16 @@ bool process(TexturePack& pack, ProcessingLevel level) { switch (pack.type()) { case ResourceType::FOLDER: - TexturePackUtils::processFolder(pack, level); - return true; + return TexturePackUtils::processFolder(pack, level); case ResourceType::ZIPFILE: - TexturePackUtils::processZIP(pack, level); - return true; + return TexturePackUtils::processZIP(pack, level); default: qWarning() << "Invalid type for resource pack parse task!"; return false; } } -void processFolder(TexturePack& pack, ProcessingLevel level) +bool processFolder(TexturePack& pack, ProcessingLevel level) { Q_ASSERT(pack.type() == ResourceType::FOLDER); @@ -51,39 +49,51 @@ void processFolder(TexturePack& pack, ProcessingLevel level) if (mcmeta_file_info.isFile()) { QFile mcmeta_file(mcmeta_file_info.filePath()); if (!mcmeta_file.open(QIODevice::ReadOnly)) - return; + return false; auto data = mcmeta_file.readAll(); - TexturePackUtils::processPackTXT(pack, std::move(data)); + bool packTXT_result = TexturePackUtils::processPackTXT(pack, std::move(data)); mcmeta_file.close(); + if (!packTXT_result) { + return false; + } + } else { + return false; } if (level == ProcessingLevel::BasicInfoOnly) - return; + return true; QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png")); if (image_file_info.isFile()) { QFile mcmeta_file(image_file_info.filePath()); if (!mcmeta_file.open(QIODevice::ReadOnly)) - return; + return false; auto data = mcmeta_file.readAll(); - TexturePackUtils::processPackPNG(pack, std::move(data)); + bool packPNG_result = TexturePackUtils::processPackPNG(pack, std::move(data)); mcmeta_file.close(); + if (!packPNG_result) { + return false; + } + } else { + return false; } + + return true; } -void processZIP(TexturePack& pack, ProcessingLevel level) +bool processZIP(TexturePack& pack, ProcessingLevel level) { Q_ASSERT(pack.type() == ResourceType::ZIPFILE); QuaZip zip(pack.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return; + return false; QuaZipFile file(&zip); @@ -91,51 +101,62 @@ void processZIP(TexturePack& pack, ProcessingLevel level) if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return; + return false; } auto data = file.readAll(); - TexturePackUtils::processPackTXT(pack, std::move(data)); + bool packTXT_result = TexturePackUtils::processPackTXT(pack, std::move(data)); file.close(); + if (!packTXT_result) { + return false; + } } if (level == ProcessingLevel::BasicInfoOnly) { zip.close(); - return; + return false; } if (zip.setCurrentFile("pack.png")) { if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return; + return false; } auto data = file.readAll(); - TexturePackUtils::processPackPNG(pack, std::move(data)); + bool packPNG_result = TexturePackUtils::processPackPNG(pack, std::move(data)); file.close(); + if (!packPNG_result) { + return false; + } } zip.close(); + + return true; } -void processPackTXT(TexturePack& pack, QByteArray&& raw_data) +bool processPackTXT(TexturePack& pack, QByteArray&& raw_data) { pack.setDescription(QString(raw_data)); + return true; } -void processPackPNG(TexturePack& pack, QByteArray&& raw_data) +bool processPackPNG(TexturePack& pack, QByteArray&& raw_data) { auto img = QImage::fromData(raw_data); if (!img.isNull()) { pack.setImage(img); } else { qWarning() << "Failed to parse pack.png."; + return false; } + return true; } bool validate(QFileInfo file) diff --git a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h index 9f7aab75f..1589f8cbd 100644 --- a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.h @@ -32,11 +32,11 @@ enum class ProcessingLevel { Full, BasicInfoOnly }; bool process(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full); -void processZIP(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full); -void processFolder(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processZIP(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processFolder(TexturePack& pack, ProcessingLevel level = ProcessingLevel::Full); -void processPackTXT(TexturePack& pack, QByteArray&& raw_data); -void processPackPNG(TexturePack& pack, QByteArray&& raw_data); +bool processPackTXT(TexturePack& pack, QByteArray&& raw_data); +bool processPackPNG(TexturePack& pack, QByteArray&& raw_data); /** Checks whether a file is valid as a texture pack or not. */ bool validate(QFileInfo file); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 630f1200e..be33b8db6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -27,6 +27,9 @@ ecm_add_test(ResourcePackParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VER ecm_add_test(TexturePackParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test TEST_NAME TexturePackParse) +ecm_add_test(DataPackParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test + TEST_NAME DataPackParse) + ecm_add_test(ParseUtils_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test TEST_NAME ParseUtils) diff --git a/tests/DataPackParse_test.cpp b/tests/DataPackParse_test.cpp new file mode 100644 index 000000000..7307035fc --- /dev/null +++ b/tests/DataPackParse_test.cpp @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * PolyMC - Minecraft Launcher + * Copyright (c) 2022 flowln + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include + +#include +#include + +class DataPackParseTest : public QObject { + Q_OBJECT + + private slots: + void test_parseZIP() + { + QString source = QFINDTESTDATA("testdata/DataPackParse"); + + QString zip_dp = FS::PathCombine(source, "test_data_pack_boogaloo.zip"); + DataPack pack { QFileInfo(zip_dp) }; + + bool valid = DataPackUtils::processZIP(pack); + + QVERIFY(pack.packFormat() == 4); + QVERIFY(pack.description() == "Some data pack 2 boobgaloo"); + QVERIFY(valid == true); + } + + void test_parseFolder() + { + QString source = QFINDTESTDATA("testdata/DataPackParse"); + + QString folder_dp = FS::PathCombine(source, "test_folder"); + DataPack pack { QFileInfo(folder_dp) }; + + bool valid = DataPackUtils::processFolder(pack); + + QVERIFY(pack.packFormat() == 10); + QVERIFY(pack.description() == "Some data pack, maybe"); + QVERIFY(valid == true); + } + + void test_parseFolder2() + { + QString source = QFINDTESTDATA("testdata/DataPackParse"); + + QString folder_dp = FS::PathCombine(source, "another_test_folder"); + DataPack pack { QFileInfo(folder_dp) }; + + bool valid = DataPackUtils::process(pack); + + QVERIFY(pack.packFormat() == 6); + QVERIFY(pack.description() == "Some data pack three, leaves on the tree"); + QVERIFY(valid == true); + } +}; + +QTEST_GUILESS_MAIN(DataPackParseTest) + +#include "DataPackParse_test.moc" diff --git a/tests/testdata/DataPackParse/another_test_folder/pack.mcmeta b/tests/testdata/DataPackParse/another_test_folder/pack.mcmeta new file mode 100644 index 000000000..5509d007b --- /dev/null +++ b/tests/testdata/DataPackParse/another_test_folder/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 6, + "description": "Some data pack three, leaves on the tree" + } +} diff --git a/tests/testdata/DataPackParse/test_data_pack_boogaloo.zip b/tests/testdata/DataPackParse/test_data_pack_boogaloo.zip new file mode 100644 index 0000000000000000000000000000000000000000..cb0b9f3c69fe8722e31224c154edf66c39fa6cbd GIT binary patch literal 898 zcmWIWW@Zs#0D;^EouMEahFKXH7*Y~T67_K_;f5(mDb3BT#G_CERbfeDdNCf=qF7XC zmZaw5(ISsaOIm(@d_hruej1YI%X3kEs!mvQQeu%_R&jnFBrKR1I2a7(cZSX|iwW>y zU|@)1U|;}+ML}Y6wq9;>ZfZ&5>SsX#0a_kD=fXAxtzg@Q;-L8k-lW7~At}tP+_sfA*>glOiUqU{nYLJ)rIsEq1)e0G6i5u^!(-#UUk4z>#t`OrAUZ7nEP zK{`SBtz#9cwP4-QIL2)RD3(FmLHMoXT3kjT$2r0UCMtw#G2Bb6*;LXYgl3-_GXE?#gz_5f7!~+05qQe^i literal 0 HcmV?d00001 diff --git a/tests/testdata/DataPackParse/test_folder/pack.mcmeta b/tests/testdata/DataPackParse/test_folder/pack.mcmeta new file mode 100644 index 000000000..dbfc7e9b8 --- /dev/null +++ b/tests/testdata/DataPackParse/test_folder/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 10, + "description": "Some data pack, maybe" + } +} From 25e23e50cadf8e72105ca70e347d65595d2d3f16 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 9 Dec 2022 21:15:39 -0700 Subject: [PATCH 02/37] fix: force add of ignored testdata files Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .../another_test_folder/data/dummy/tags/item/foo_proof/bar.json | 1 + .../test_folder/data/dummy/tags/item/foo_proof/bar.json | 1 + 2 files changed, 2 insertions(+) create mode 100644 tests/testdata/DataPackParse/another_test_folder/data/dummy/tags/item/foo_proof/bar.json create mode 100644 tests/testdata/DataPackParse/test_folder/data/dummy/tags/item/foo_proof/bar.json diff --git a/tests/testdata/DataPackParse/another_test_folder/data/dummy/tags/item/foo_proof/bar.json b/tests/testdata/DataPackParse/another_test_folder/data/dummy/tags/item/foo_proof/bar.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/tests/testdata/DataPackParse/another_test_folder/data/dummy/tags/item/foo_proof/bar.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/tests/testdata/DataPackParse/test_folder/data/dummy/tags/item/foo_proof/bar.json b/tests/testdata/DataPackParse/test_folder/data/dummy/tags/item/foo_proof/bar.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/tests/testdata/DataPackParse/test_folder/data/dummy/tags/item/foo_proof/bar.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 878614ff68163bbc95cbfc35611765f21a83bfed Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 10 Dec 2022 00:52:50 -0700 Subject: [PATCH 03/37] feat: add a `ModUtils::validate` moves the reading of mod files into `ModUtils` namespace Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/mod/DataPack.cpp | 2 - launcher/minecraft/mod/Mod.cpp | 10 ++ launcher/minecraft/mod/Mod.h | 3 + launcher/minecraft/mod/ModDetails.h | 6 +- .../mod/tasks/LocalDataPackParseTask.h | 5 +- .../minecraft/mod/tasks/LocalModParseTask.cpp | 153 +++++++++++------- .../minecraft/mod/tasks/LocalModParseTask.h | 19 +++ .../mod/tasks/LocalShaderPackParseTask copy.h | 0 .../mod/tasks/LocalShaderPackParseTask.h | 0 9 files changed, 136 insertions(+), 62 deletions(-) create mode 100644 launcher/minecraft/mod/tasks/LocalShaderPackParseTask copy.h create mode 100644 launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h diff --git a/launcher/minecraft/mod/DataPack.cpp b/launcher/minecraft/mod/DataPack.cpp index 3f275160c..6c3332857 100644 --- a/launcher/minecraft/mod/DataPack.cpp +++ b/launcher/minecraft/mod/DataPack.cpp @@ -27,8 +27,6 @@ #include "Version.h" -#include "minecraft/mod/tasks/LocalDataPackParseTask.h" - // Values taken from: // https://minecraft.fandom.com/wiki/Tutorials/Creating_a_data_pack#%22pack_format%22 static const QMap> s_pack_format_versions = { diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index 39023f698..8b00354d8 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -43,6 +43,7 @@ #include "MetadataHandler.h" #include "Version.h" +#include "minecraft/mod/ModDetails.h" Mod::Mod(const QFileInfo& file) : Resource(file), m_local_details() { @@ -68,6 +69,10 @@ void Mod::setMetadata(std::shared_ptr&& metadata) m_local_details.metadata = metadata; } +void Mod::setDetails(const ModDetails& details) { + m_local_details = details; +} + std::pair Mod::compare(const Resource& other, SortType type) const { auto cast_other = dynamic_cast(&other); @@ -190,3 +195,8 @@ void Mod::finishResolvingWithDetails(ModDetails&& details) if (metadata) setMetadata(std::move(metadata)); } + +bool Mod::valid() const +{ + return !m_local_details.mod_id.isEmpty(); +} \ No newline at end of file diff --git a/launcher/minecraft/mod/Mod.h b/launcher/minecraft/mod/Mod.h index f336bec4c..b6d264fef 100644 --- a/launcher/minecraft/mod/Mod.h +++ b/launcher/minecraft/mod/Mod.h @@ -68,6 +68,9 @@ public: void setStatus(ModStatus status); void setMetadata(std::shared_ptr&& metadata); void setMetadata(const Metadata::ModStruct& metadata) { setMetadata(std::make_shared(metadata)); } + void setDetails(const ModDetails& details); + + bool valid() const override; [[nodiscard]] auto compare(Resource const& other, SortType type) const -> std::pair override; [[nodiscard]] bool applyFilter(QRegularExpression filter) const override; diff --git a/launcher/minecraft/mod/ModDetails.h b/launcher/minecraft/mod/ModDetails.h index dd84b0a3f..176e4fc14 100644 --- a/launcher/minecraft/mod/ModDetails.h +++ b/launcher/minecraft/mod/ModDetails.h @@ -81,7 +81,7 @@ struct ModDetails ModDetails() = default; /** Metadata should be handled manually to properly set the mod status. */ - ModDetails(ModDetails& other) + ModDetails(const ModDetails& other) : mod_id(other.mod_id) , name(other.name) , version(other.version) @@ -92,7 +92,7 @@ struct ModDetails , status(other.status) {} - ModDetails& operator=(ModDetails& other) + ModDetails& operator=(const ModDetails& other) { this->mod_id = other.mod_id; this->name = other.name; @@ -106,7 +106,7 @@ struct ModDetails return *this; } - ModDetails& operator=(ModDetails&& other) + ModDetails& operator=(const ModDetails&& other) { this->mod_id = other.mod_id; this->name = other.name; diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h index ee64df461..9f6ece5cc 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h @@ -39,9 +39,10 @@ bool processFolder(DataPack& pack, ProcessingLevel level = ProcessingLevel::Full bool processMCMeta(DataPack& pack, QByteArray&& raw_data); -/** Checks whether a file is valid as a resource pack or not. */ +/** Checks whether a file is valid as a data pack or not. */ bool validate(QFileInfo file); -} // namespace ResourcePackUtils + +} // namespace DataPackUtils class LocalDataPackParseTask : public Task { Q_OBJECT diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index 774f61145..e8fd39b6c 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -11,9 +11,10 @@ #include "FileSystem.h" #include "Json.h" +#include "minecraft/mod/ModDetails.h" #include "settings/INIFile.h" -namespace { +namespace ModUtils { // NEW format // https://github.com/MinecraftForge/FML/wiki/FML-mod-information-file/6f62b37cea040daf350dc253eae6326dd9c822c3 @@ -283,35 +284,45 @@ ModDetails ReadLiteModInfo(QByteArray contents) return details; } -} // namespace +bool process(Mod& mod, ProcessingLevel level) { + switch (mod.type()) { + case ResourceType::FOLDER: + return processFolder(mod, level); + case ResourceType::ZIPFILE: + return processZIP(mod, level); + case ResourceType::LITEMOD: + return processLitemod(mod); + default: + qWarning() << "Invalid type for resource pack parse task!"; + return false; + } +} -LocalModParseTask::LocalModParseTask(int token, ResourceType type, const QFileInfo& modFile) - : Task(nullptr, false), m_token(token), m_type(type), m_modFile(modFile), m_result(new Result()) -{} +bool processZIP(Mod& mod, ProcessingLevel level) { -void LocalModParseTask::processAsZip() -{ - QuaZip zip(m_modFile.filePath()); + ModDetails details; + + QuaZip zip(mod.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return; + return false; QuaZipFile file(&zip); if (zip.setCurrentFile("META-INF/mods.toml")) { if (!file.open(QIODevice::ReadOnly)) { zip.close(); - return; + return false; } - m_result->details = ReadMCModTOML(file.readAll()); + details = ReadMCModTOML(file.readAll()); file.close(); - + // to replace ${file.jarVersion} with the actual version, as needed - if (m_result->details.version == "${file.jarVersion}") { + if (details.version == "${file.jarVersion}") { if (zip.setCurrentFile("META-INF/MANIFEST.MF")) { if (!file.open(QIODevice::ReadOnly)) { zip.close(); - return; + return false; } // quick and dirty line-by-line parser @@ -330,93 +341,134 @@ void LocalModParseTask::processAsZip() manifestVersion = "NONE"; } - m_result->details.version = manifestVersion; + details.version = manifestVersion; file.close(); } } + zip.close(); - return; + mod.setDetails(details); + + return true; } else if (zip.setCurrentFile("mcmod.info")) { if (!file.open(QIODevice::ReadOnly)) { zip.close(); - return; + return false; } - m_result->details = ReadMCModInfo(file.readAll()); + details = ReadMCModInfo(file.readAll()); file.close(); zip.close(); - return; + + mod.setDetails(details); + return true; } else if (zip.setCurrentFile("quilt.mod.json")) { if (!file.open(QIODevice::ReadOnly)) { zip.close(); - return; + return false; } - m_result->details = ReadQuiltModInfo(file.readAll()); + details = ReadQuiltModInfo(file.readAll()); file.close(); zip.close(); - return; + + mod.setDetails(details); + return true; } else if (zip.setCurrentFile("fabric.mod.json")) { if (!file.open(QIODevice::ReadOnly)) { zip.close(); - return; + return false; } - m_result->details = ReadFabricModInfo(file.readAll()); + details = ReadFabricModInfo(file.readAll()); file.close(); zip.close(); - return; + + mod.setDetails(details); + return true; } else if (zip.setCurrentFile("forgeversion.properties")) { if (!file.open(QIODevice::ReadOnly)) { zip.close(); - return; + return false; } - m_result->details = ReadForgeInfo(file.readAll()); + details = ReadForgeInfo(file.readAll()); file.close(); zip.close(); - return; + + mod.setDetails(details); + return true; } zip.close(); + return false; // no valid mod found in archive } -void LocalModParseTask::processAsFolder() -{ - QFileInfo mcmod_info(FS::PathCombine(m_modFile.filePath(), "mcmod.info")); - if (mcmod_info.isFile()) { +bool processFolder(Mod& mod, ProcessingLevel level) { + + ModDetails details; + + QFileInfo mcmod_info(FS::PathCombine(mod.fileinfo().filePath(), "mcmod.info")); + if (mcmod_info.exists() && mcmod_info.isFile()) { QFile mcmod(mcmod_info.filePath()); if (!mcmod.open(QIODevice::ReadOnly)) - return; + return false; auto data = mcmod.readAll(); if (data.isEmpty() || data.isNull()) - return; - m_result->details = ReadMCModInfo(data); + return false; + details = ReadMCModInfo(data); + + mod.setDetails(details); + return true; } + + return false; // no valid mcmod.info file found } -void LocalModParseTask::processAsLitemod() -{ - QuaZip zip(m_modFile.filePath()); +bool processLitemod(Mod& mod, ProcessingLevel level) { + + ModDetails details; + + QuaZip zip(mod.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return; + return false; QuaZipFile file(&zip); if (zip.setCurrentFile("litemod.json")) { if (!file.open(QIODevice::ReadOnly)) { zip.close(); - return; + return false; } - m_result->details = ReadLiteModInfo(file.readAll()); + details = ReadLiteModInfo(file.readAll()); file.close(); + + mod.setDetails(details); + return true; } zip.close(); + + return false; // no valid litemod.json found in archive } +/** Checks whether a file is valid as a mod or not. */ +bool validate(QFileInfo file) { + + Mod mod{ file }; + return ModUtils::process(mod, ProcessingLevel::BasicInfoOnly) && mod.valid(); +} + +} // namespace ModUtils + + +LocalModParseTask::LocalModParseTask(int token, ResourceType type, const QFileInfo& modFile) + : Task(nullptr, false), m_token(token), m_type(type), m_modFile(modFile), m_result(new Result()) +{} + + bool LocalModParseTask::abort() { m_aborted.store(true); @@ -424,20 +476,11 @@ bool LocalModParseTask::abort() } void LocalModParseTask::executeTask() -{ - switch (m_type) { - case ResourceType::ZIPFILE: - processAsZip(); - break; - case ResourceType::FOLDER: - processAsFolder(); - break; - case ResourceType::LITEMOD: - processAsLitemod(); - break; - default: - break; - } +{ + Mod mod{ m_modFile }; + ModUtils::process(mod, ModUtils::ProcessingLevel::Full); + + m_result->details = mod.details(); if (m_aborted) emit finished(); diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.h b/launcher/minecraft/mod/tasks/LocalModParseTask.h index 413eb2d18..c9512166a 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.h @@ -8,6 +8,25 @@ #include "tasks/Task.h" +namespace ModUtils { + +ModDetails ReadFabricModInfo(QByteArray contents); +ModDetails ReadQuiltModInfo(QByteArray contents); +ModDetails ReadForgeInfo(QByteArray contents); +ModDetails ReadLiteModInfo(QByteArray contents); + +enum class ProcessingLevel { Full, BasicInfoOnly }; + +bool process(Mod& mod, ProcessingLevel level = ProcessingLevel::Full); + +bool processZIP(Mod& mod, ProcessingLevel level = ProcessingLevel::Full); +bool processFolder(Mod& mod, ProcessingLevel level = ProcessingLevel::Full); +bool processLitemod(Mod& mod, ProcessingLevel level = ProcessingLevel::Full); + +/** Checks whether a file is valid as a mod or not. */ +bool validate(QFileInfo file); +} // namespace ModUtils + class LocalModParseTask : public Task { Q_OBJECT diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask copy.h b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask copy.h new file mode 100644 index 000000000..e69de29bb diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h new file mode 100644 index 000000000..e69de29bb From ccfe605920fba14d9e798bb26642d22ee45fe860 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 24 Dec 2022 11:22:06 -0700 Subject: [PATCH 04/37] feat: add shaderpack validation Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/mod/ShaderPack.cpp | 39 ++++++ launcher/minecraft/mod/ShaderPack.h | 66 ++++++++++ .../mod/tasks/LocalDataPackParseTask.h | 2 +- .../mod/tasks/LocalResourcePackParseTask.cpp | 8 +- .../mod/tasks/LocalShaderPackParseTask copy.h | 0 .../mod/tasks/LocalShaderPackParseTask.cpp | 116 ++++++++++++++++++ .../mod/tasks/LocalShaderPackParseTask.h | 63 ++++++++++ 7 files changed, 289 insertions(+), 5 deletions(-) create mode 100644 launcher/minecraft/mod/ShaderPack.cpp create mode 100644 launcher/minecraft/mod/ShaderPack.h delete mode 100644 launcher/minecraft/mod/tasks/LocalShaderPackParseTask copy.h create mode 100644 launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp diff --git a/launcher/minecraft/mod/ShaderPack.cpp b/launcher/minecraft/mod/ShaderPack.cpp new file mode 100644 index 000000000..b8d427c77 --- /dev/null +++ b/launcher/minecraft/mod/ShaderPack.cpp @@ -0,0 +1,39 @@ + +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ShaderPack.h" + +#include "minecraft/mod/tasks/LocalShaderPackParseTask.h" + + +void ShaderPack::setPackFormat(ShaderPackFormat new_format) +{ + QMutexLocker locker(&m_data_lock); + + + m_pack_format = new_format; +} + +bool ShaderPack::valid() const +{ + return m_pack_format != ShaderPackFormat::INVALID; +} diff --git a/launcher/minecraft/mod/ShaderPack.h b/launcher/minecraft/mod/ShaderPack.h new file mode 100644 index 000000000..e6ee07574 --- /dev/null +++ b/launcher/minecraft/mod/ShaderPack.h @@ -0,0 +1,66 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "Resource.h" + +/* Info: + * Currently For Optifine / Iris shader packs, + * could be expanded to support others should they exsist? + * + * This class and enum are mostly here as placeholders for validating + * that a shaderpack exsists and is in the right format, + * namely that they contain a folder named 'shaders'. + * + * In the technical sense it would be possible to parse files like `shaders/shaders.properties` + * to get information like the availble profiles but this is not all that usefull without more knoledge of the + * shader mod used to be able to change settings + * + */ + +#include + +enum ShaderPackFormat { + VALID, + INVALID +}; + +class ShaderPack : public Resource { + Q_OBJECT + public: + using Ptr = shared_qobject_ptr; + + [[nodiscard]] ShaderPackFormat packFormat() const { return m_pack_format; } + + ShaderPack(QObject* parent = nullptr) : Resource(parent) {} + ShaderPack(QFileInfo file_info) : Resource(file_info) {} + + /** Thread-safe. */ + void setPackFormat(ShaderPackFormat new_format); + + bool valid() const override; + + protected: + mutable QMutex m_data_lock; + + ShaderPackFormat m_pack_format = ShaderPackFormat::INVALID; +}; diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h index 9f6ece5cc..54e3d398f 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h @@ -47,7 +47,7 @@ bool validate(QFileInfo file); class LocalDataPackParseTask : public Task { Q_OBJECT public: - LocalDataPackParseTask(int token, DataPack& rp); + LocalDataPackParseTask(int token, DataPack& dp); [[nodiscard]] bool canAbort() const override { return true; } bool abort() override; diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp index 18d7383de..2c41c9ae3 100644 --- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp @@ -75,15 +75,15 @@ bool processFolder(ResourcePack& pack, ProcessingLevel level) QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png")); if (image_file_info.exists() && image_file_info.isFile()) { - QFile mcmeta_file(image_file_info.filePath()); - if (!mcmeta_file.open(QIODevice::ReadOnly)) + QFile pack_png_file(image_file_info.filePath()); + if (!pack_png_file.open(QIODevice::ReadOnly)) return false; // can't open pack.png file - auto data = mcmeta_file.readAll(); + auto data = pack_png_file.readAll(); bool pack_png_result = ResourcePackUtils::processPackPNG(pack, std::move(data)); - mcmeta_file.close(); + pack_png_file.close(); if (!pack_png_result) { return false; // pack.png invalid } diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask copy.h b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask copy.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp new file mode 100644 index 000000000..088853b9d --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp @@ -0,0 +1,116 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "LocalShaderPackParseTask.h" + +#include "FileSystem.h" + +#include +#include +#include + +namespace ShaderPackUtils { + +bool process(ShaderPack& pack, ProcessingLevel level) +{ + switch (pack.type()) { + case ResourceType::FOLDER: + return ShaderPackUtils::processFolder(pack, level); + case ResourceType::ZIPFILE: + return ShaderPackUtils::processZIP(pack, level); + default: + qWarning() << "Invalid type for shader pack parse task!"; + return false; + } +} + +bool processFolder(ShaderPack& pack, ProcessingLevel level) +{ + Q_ASSERT(pack.type() == ResourceType::FOLDER); + + QFileInfo shaders_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "shaders")); + if (!shaders_dir_info.exists() || !shaders_dir_info.isDir()) { + return false; // assets dir does not exists or isn't valid + } + pack.setPackFormat(ShaderPackFormat::VALID); + + if (level == ProcessingLevel::BasicInfoOnly) { + return true; // only need basic info already checked + } + + return true; // all tests passed +} + +bool processZIP(ShaderPack& pack, ProcessingLevel level) +{ + Q_ASSERT(pack.type() == ResourceType::ZIPFILE); + + QuaZip zip(pack.fileinfo().filePath()); + if (!zip.open(QuaZip::mdUnzip)) + return false; // can't open zip file + + QuaZipFile file(&zip); + + QuaZipDir zipDir(&zip); + if (!zipDir.exists("/shaders")) { + return false; // assets dir does not exists at zip root + } + pack.setPackFormat(ShaderPackFormat::VALID); + + if (level == ProcessingLevel::BasicInfoOnly) { + zip.close(); + return true; // only need basic info already checked + } + + zip.close(); + + return true; +} + + +bool validate(QFileInfo file) +{ + ShaderPack sp{ file }; + return ShaderPackUtils::process(sp, ProcessingLevel::BasicInfoOnly) && sp.valid(); +} + +} // namespace ShaderPackUtils + +LocalShaderPackParseTask::LocalShaderPackParseTask(int token, ShaderPack& sp) + : Task(nullptr, false), m_token(token), m_shader_pack(sp) +{} + +bool LocalShaderPackParseTask::abort() +{ + m_aborted = true; + return true; +} + +void LocalShaderPackParseTask::executeTask() +{ + if (!ShaderPackUtils::process(m_shader_pack)) + return; + + if (m_aborted) + emitAborted(); + else + emitSucceeded(); +} diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h index e69de29bb..5d1135089 100644 --- a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h @@ -0,0 +1,63 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#include +#include + +#include "minecraft/mod/ShaderPack.h" + +#include "tasks/Task.h" + +namespace ShaderPackUtils { + +enum class ProcessingLevel { Full, BasicInfoOnly }; + +bool process(ShaderPack& pack, ProcessingLevel level = ProcessingLevel::Full); + +bool processZIP(ShaderPack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processFolder(ShaderPack& pack, ProcessingLevel level = ProcessingLevel::Full); + +/** Checks whether a file is valid as a resource pack or not. */ +bool validate(QFileInfo file); +} // namespace ShaderPackUtils + +class LocalShaderPackParseTask : public Task { + Q_OBJECT + public: + LocalShaderPackParseTask(int token, ShaderPack& sp); + + [[nodiscard]] bool canAbort() const override { return true; } + bool abort() override; + + void executeTask() override; + + [[nodiscard]] int token() const { return m_token; } + + private: + int m_token; + + ShaderPack& m_shader_pack; + + bool m_aborted = false; +}; From eb31a951a18287f943a1e3d021629dde8b73fd15 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 24 Dec 2022 15:58:24 -0700 Subject: [PATCH 05/37] feat: worldSave parsing and validation Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/mod/WorldSave.cpp | 45 +++++ launcher/minecraft/mod/WorldSave.h | 67 +++++++ .../mod/tasks/LocalWorldSaveParseTask.cpp | 177 ++++++++++++++++++ .../mod/tasks/LocalWorldSaveParseTask.h | 62 ++++++ 4 files changed, 351 insertions(+) create mode 100644 launcher/minecraft/mod/WorldSave.cpp create mode 100644 launcher/minecraft/mod/WorldSave.h create mode 100644 launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp create mode 100644 launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h diff --git a/launcher/minecraft/mod/WorldSave.cpp b/launcher/minecraft/mod/WorldSave.cpp new file mode 100644 index 000000000..9a626fc1e --- /dev/null +++ b/launcher/minecraft/mod/WorldSave.cpp @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "WorldSave.h" + +#include "minecraft/mod/tasks/LocalWorldSaveParseTask.h" + +void WorldSave::setSaveFormat(WorldSaveFormat new_save_format) +{ + QMutexLocker locker(&m_data_lock); + + + m_save_format = new_save_format; +} + +void WorldSave::setSaveDirName(QString dir_name) +{ + QMutexLocker locker(&m_data_lock); + + + m_save_dir_name = dir_name; +} + +bool WorldSave::valid() const +{ + return m_save_format != WorldSaveFormat::INVALID; +} \ No newline at end of file diff --git a/launcher/minecraft/mod/WorldSave.h b/launcher/minecraft/mod/WorldSave.h new file mode 100644 index 000000000..f48f42b98 --- /dev/null +++ b/launcher/minecraft/mod/WorldSave.h @@ -0,0 +1,67 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "Resource.h" + +#include + +class Version; + +enum WorldSaveFormat { + SINGLE, + MULTI, + INVALID +}; + +class WorldSave : public Resource { + Q_OBJECT + public: + using Ptr = shared_qobject_ptr; + + WorldSave(QObject* parent = nullptr) : Resource(parent) {} + WorldSave(QFileInfo file_info) : Resource(file_info) {} + + /** Gets the format of the save. */ + [[nodiscard]] WorldSaveFormat saveFormat() const { return m_save_format; } + /** Gets the name of the save dir (first found in multi mode). */ + [[nodiscard]] QString saveDirName() const { return m_save_dir_name; } + + /** Thread-safe. */ + void setSaveFormat(WorldSaveFormat new_save_format); + /** Thread-safe. */ + void setSaveDirName(QString dir_name); + + bool valid() const override; + + + protected: + mutable QMutex m_data_lock; + + /* The 'version' of a resource pack, as defined in the pack.mcmeta file. + * See https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta + */ + WorldSaveFormat m_save_format = WorldSaveFormat::INVALID; + + QString m_save_dir_name; + +}; diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp new file mode 100644 index 000000000..5405d308d --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp @@ -0,0 +1,177 @@ + +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "LocalWorldSaveParseTask.h" + +#include "FileSystem.h" + +#include +#include +#include +#include +#include +#include + +namespace WorldSaveUtils { + +bool process(WorldSave& pack, ProcessingLevel level) +{ + switch (pack.type()) { + case ResourceType::FOLDER: + return WorldSaveUtils::processFolder(pack, level); + case ResourceType::ZIPFILE: + return WorldSaveUtils::processZIP(pack, level); + default: + qWarning() << "Invalid type for shader pack parse task!"; + return false; + } +} + + +static std::tuple contains_level_dat(QDir dir, bool saves = false) +{ + for(auto const& entry : dir.entryInfoList()) { + if (!entry.isDir()) { + continue; + } + if (!saves && entry.fileName() == "saves") { + return contains_level_dat(QDir(entry.filePath()), true); + } + QFileInfo level_dat(FS::PathCombine(entry.filePath(), "level.dat")); + if (level_dat.exists() && level_dat.isFile()) { + return std::make_tuple(true, entry.fileName(), saves); + } + } + return std::make_tuple(false, "", saves); +} + + +bool processFolder(WorldSave& save, ProcessingLevel level) +{ + Q_ASSERT(save.type() == ResourceType::FOLDER); + + auto [ found, save_dir_name, found_saves_dir ] = contains_level_dat(QDir(save.fileinfo().filePath())); + + if (!found) { + return false; + } + + save.setSaveDirName(save_dir_name); + + if (found_saves_dir) { + save.setSaveFormat(WorldSaveFormat::MULTI); + } else { + save.setSaveFormat(WorldSaveFormat::SINGLE); + } + + if (level == ProcessingLevel::BasicInfoOnly) { + return true; // only need basic info already checked + } + + // resurved for more intensive processing + + return true; // all tests passed +} + +static std::tuple contains_level_dat(QuaZip& zip) +{ + bool saves = false; + QuaZipDir zipDir(&zip); + if (zipDir.exists("/saves")) { + saves = true; + zipDir.cd("/saves"); + } + + for (auto const& entry : zipDir.entryList()) { + zipDir.cd(entry); + if (zipDir.exists("level.dat")) { + return std::make_tuple(true, entry, saves); + } + zipDir.cd(".."); + } + return std::make_tuple(false, "", saves); +} + +bool processZIP(WorldSave& save, ProcessingLevel level) +{ + Q_ASSERT(save.type() == ResourceType::ZIPFILE); + + QuaZip zip(save.fileinfo().filePath()); + if (!zip.open(QuaZip::mdUnzip)) + return false; // can't open zip file + + auto [ found, save_dir_name, found_saves_dir ] = contains_level_dat(zip); + + + if (!found) { + return false; + } + + save.setSaveDirName(save_dir_name); + + if (found_saves_dir) { + save.setSaveFormat(WorldSaveFormat::MULTI); + } else { + save.setSaveFormat(WorldSaveFormat::SINGLE); + } + + if (level == ProcessingLevel::BasicInfoOnly) { + zip.close(); + return true; // only need basic info already checked + } + + // resurved for more intensive processing + + zip.close(); + + return true; +} + + +bool validate(QFileInfo file) +{ + WorldSave sp{ file }; + return WorldSaveUtils::process(sp, ProcessingLevel::BasicInfoOnly) && sp.valid(); +} + +} // namespace WorldSaveUtils + +LocalWorldSaveParseTask::LocalWorldSaveParseTask(int token, WorldSave& save) + : Task(nullptr, false), m_token(token), m_save(save) +{} + +bool LocalWorldSaveParseTask::abort() +{ + m_aborted = true; + return true; +} + +void LocalWorldSaveParseTask::executeTask() +{ + if (!WorldSaveUtils::process(m_save)) + return; + + if (m_aborted) + emitAborted(); + else + emitSucceeded(); +} diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h new file mode 100644 index 000000000..441537359 --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h @@ -0,0 +1,62 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +#include "minecraft/mod/WorldSave.h" + +#include "tasks/Task.h" + +namespace WorldSaveUtils { + +enum class ProcessingLevel { Full, BasicInfoOnly }; + +bool process(WorldSave& save, ProcessingLevel level = ProcessingLevel::Full); + +bool processZIP(WorldSave& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processFolder(WorldSave& pack, ProcessingLevel level = ProcessingLevel::Full); + +bool validate(QFileInfo file); + +} // namespace WorldSaveUtils + +class LocalWorldSaveParseTask : public Task { + Q_OBJECT + public: + LocalWorldSaveParseTask(int token, WorldSave& save); + + [[nodiscard]] bool canAbort() const override { return true; } + bool abort() override; + + void executeTask() override; + + [[nodiscard]] int token() const { return m_token; } + + private: + int m_token; + + WorldSave& m_save; + + bool m_aborted = false; +}; \ No newline at end of file From a7c9b2f172754aa476a23deabe074a649cefdd11 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 24 Dec 2022 17:43:43 -0700 Subject: [PATCH 06/37] feat: validate world saves Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/CMakeLists.txt | 8 ++ launcher/minecraft/mod/ShaderPack.h | 2 +- launcher/minecraft/mod/WorldSave.h | 2 +- .../mod/tasks/LocalWorldSaveParseTask.cpp | 3 + tests/CMakeLists.txt | 6 ++ tests/DataPackParse_test.cpp | 7 +- tests/ShaderPackParse_test.cpp | 77 ++++++++++++++ tests/WorldSaveParse_test.cpp | 94 ++++++++++++++++++ .../testdata/ShaderPackParse/shaderpack1.zip | Bin 0 -> 242 bytes .../shaderpack2/shaders/shaders.properties | 0 .../testdata/ShaderPackParse/shaderpack3.zip | Bin 0 -> 128 bytes .../WorldSaveParse/minecraft_save_1.zip | Bin 0 -> 184 bytes .../WorldSaveParse/minecraft_save_2.zip | Bin 0 -> 352 bytes .../minecraft_save_3/world_3/level.dat | 0 .../minecraft_save_4/saves/world_4/level.dat | 0 15 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 tests/ShaderPackParse_test.cpp create mode 100644 tests/WorldSaveParse_test.cpp create mode 100644 tests/testdata/ShaderPackParse/shaderpack1.zip create mode 100644 tests/testdata/ShaderPackParse/shaderpack2/shaders/shaders.properties create mode 100644 tests/testdata/ShaderPackParse/shaderpack3.zip create mode 100644 tests/testdata/WorldSaveParse/minecraft_save_1.zip create mode 100644 tests/testdata/WorldSaveParse/minecraft_save_2.zip create mode 100644 tests/testdata/WorldSaveParse/minecraft_save_3/world_3/level.dat create mode 100644 tests/testdata/WorldSaveParse/minecraft_save_4/saves/world_4/level.dat diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index c12e67409..853e1c036 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -339,6 +339,10 @@ set(MINECRAFT_SOURCES minecraft/mod/ResourcePackFolderModel.cpp minecraft/mod/TexturePack.h minecraft/mod/TexturePack.cpp + minecraft/mod/ShaderPack.h + minecraft/mod/ShaderPack.cpp + minecraft/mod/WorldSave.h + minecraft/mod/WorldSave.cpp minecraft/mod/TexturePackFolderModel.h minecraft/mod/TexturePackFolderModel.cpp minecraft/mod/ShaderPackFolderModel.h @@ -355,6 +359,10 @@ set(MINECRAFT_SOURCES minecraft/mod/tasks/LocalResourcePackParseTask.cpp minecraft/mod/tasks/LocalTexturePackParseTask.h minecraft/mod/tasks/LocalTexturePackParseTask.cpp + minecraft/mod/tasks/LocalShaderPackParseTask.h + minecraft/mod/tasks/LocalShaderPackParseTask.cpp + minecraft/mod/tasks/LocalWorldSaveParseTask.h + minecraft/mod/tasks/LocalWorldSaveParseTask.cpp # Assets minecraft/AssetsUtils.h diff --git a/launcher/minecraft/mod/ShaderPack.h b/launcher/minecraft/mod/ShaderPack.h index e6ee07574..a0dad7a16 100644 --- a/launcher/minecraft/mod/ShaderPack.h +++ b/launcher/minecraft/mod/ShaderPack.h @@ -39,7 +39,7 @@ #include -enum ShaderPackFormat { +enum class ShaderPackFormat { VALID, INVALID }; diff --git a/launcher/minecraft/mod/WorldSave.h b/launcher/minecraft/mod/WorldSave.h index f48f42b98..f703f34cb 100644 --- a/launcher/minecraft/mod/WorldSave.h +++ b/launcher/minecraft/mod/WorldSave.h @@ -27,7 +27,7 @@ class Version; -enum WorldSaveFormat { +enum class WorldSaveFormat { SINGLE, MULTI, INVALID diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp index 5405d308d..b7f2420a9 100644 --- a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp @@ -121,6 +121,9 @@ bool processZIP(WorldSave& save, ProcessingLevel level) auto [ found, save_dir_name, found_saves_dir ] = contains_level_dat(zip); + if (save_dir_name.endsWith("/")) { + save_dir_name.chop(1); + } if (!found) { return false; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index be33b8db6..9f84a9a7b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -30,6 +30,12 @@ ecm_add_test(TexturePackParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERS ecm_add_test(DataPackParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test TEST_NAME DataPackParse) +ecm_add_test(ShaderPackParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test + TEST_NAME ShaderPackParse) + +ecm_add_test(WorldSaveParse_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test + TEST_NAME WorldSaveParse) + ecm_add_test(ParseUtils_test.cpp LINK_LIBRARIES Launcher_logic Qt${QT_VERSION_MAJOR}::Test TEST_NAME ParseUtils) diff --git a/tests/DataPackParse_test.cpp b/tests/DataPackParse_test.cpp index 7307035fc..61ce1e2b1 100644 --- a/tests/DataPackParse_test.cpp +++ b/tests/DataPackParse_test.cpp @@ -1,7 +1,10 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// // SPDX-License-Identifier: GPL-3.0-only + /* - * PolyMC - Minecraft Launcher - * Copyright (c) 2022 flowln + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/tests/ShaderPackParse_test.cpp b/tests/ShaderPackParse_test.cpp new file mode 100644 index 000000000..7df105c61 --- /dev/null +++ b/tests/ShaderPackParse_test.cpp @@ -0,0 +1,77 @@ + +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include + +#include +#include + +class ShaderPackParseTest : public QObject { + Q_OBJECT + + private slots: + void test_parseZIP() + { + QString source = QFINDTESTDATA("testdata/ShaderPackParse"); + + QString zip_sp = FS::PathCombine(source, "shaderpack1.zip"); + ShaderPack pack { QFileInfo(zip_sp) }; + + bool valid = ShaderPackUtils::processZIP(pack); + + QVERIFY(pack.packFormat() == ShaderPackFormat::VALID); + QVERIFY(valid == true); + } + + void test_parseFolder() + { + QString source = QFINDTESTDATA("testdata/ShaderPackParse"); + + QString folder_sp = FS::PathCombine(source, "shaderpack2"); + ShaderPack pack { QFileInfo(folder_sp) }; + + bool valid = ShaderPackUtils::processFolder(pack); + + QVERIFY(pack.packFormat() == ShaderPackFormat::VALID); + QVERIFY(valid == true); + } + + void test_parseZIP2() + { + QString source = QFINDTESTDATA("testdata/ShaderPackParse"); + + QString folder_sp = FS::PathCombine(source, "shaderpack3.zip"); + ShaderPack pack { QFileInfo(folder_sp) }; + + bool valid = ShaderPackUtils::process(pack); + + QVERIFY(pack.packFormat() == ShaderPackFormat::INVALID); + QVERIFY(valid == false); + } +}; + +QTEST_GUILESS_MAIN(ShaderPackParseTest) + +#include "ShaderPackParse_test.moc" diff --git a/tests/WorldSaveParse_test.cpp b/tests/WorldSaveParse_test.cpp new file mode 100644 index 000000000..4a8c3d29c --- /dev/null +++ b/tests/WorldSaveParse_test.cpp @@ -0,0 +1,94 @@ + +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include + +#include +#include + +class WorldSaveParseTest : public QObject { + Q_OBJECT + + private slots: + void test_parseZIP() + { + QString source = QFINDTESTDATA("testdata/WorldSaveParse"); + + QString zip_ws = FS::PathCombine(source, "minecraft_save_1.zip") ; + WorldSave save { QFileInfo(zip_ws) }; + + bool valid = WorldSaveUtils::processZIP(save); + + QVERIFY(save.saveFormat() == WorldSaveFormat::SINGLE); + QVERIFY(save.saveDirName() == "world_1"); + QVERIFY(valid == true); + } + + void test_parse_ZIP2() + { + QString source = QFINDTESTDATA("testdata/WorldSaveParse"); + + QString zip_ws = FS::PathCombine(source, "minecraft_save_2.zip") ; + WorldSave save { QFileInfo(zip_ws) }; + + bool valid = WorldSaveUtils::processZIP(save); + + QVERIFY(save.saveFormat() == WorldSaveFormat::MULTI); + QVERIFY(save.saveDirName() == "world_2"); + QVERIFY(valid == true); + } + + void test_parseFolder() + { + QString source = QFINDTESTDATA("testdata/WorldSaveParse"); + + QString folder_ws = FS::PathCombine(source, "minecraft_save_3"); + WorldSave save { QFileInfo(folder_ws) }; + + bool valid = WorldSaveUtils::processFolder(save); + + QVERIFY(save.saveFormat() == WorldSaveFormat::SINGLE); + QVERIFY(save.saveDirName() == "world_3"); + QVERIFY(valid == true); + } + + void test_parseFolder2() + { + QString source = QFINDTESTDATA("testdata/WorldSaveParse"); + + QString folder_ws = FS::PathCombine(source, "minecraft_save_4"); + WorldSave save { QFileInfo(folder_ws) }; + + bool valid = WorldSaveUtils::process(save); + + QVERIFY(save.saveFormat() == WorldSaveFormat::MULTI); + QVERIFY(save.saveDirName() == "world_4"); + QVERIFY(valid == true); + } +}; + +QTEST_GUILESS_MAIN(WorldSaveParseTest) + +#include "WorldSaveParse_test.moc" diff --git a/tests/testdata/ShaderPackParse/shaderpack1.zip b/tests/testdata/ShaderPackParse/shaderpack1.zip new file mode 100644 index 0000000000000000000000000000000000000000..9a8fb186cfef525b9db060f78f1b3b6ca93a792c GIT binary patch literal 242 zcmWIWW@Zs#0D;o(8KEE=hB+7*7>Y9zQ&NkH^%1Jv(Nswxse-E3D=5k@NG&SKOf3%Z xW@NHw#%(^#uD6aL7F54JvMy})fz*QVl14QGwzIN<)G;wIG1M_IFvNj43;=-8Djom; literal 0 HcmV?d00001 diff --git a/tests/testdata/ShaderPackParse/shaderpack2/shaders/shaders.properties b/tests/testdata/ShaderPackParse/shaderpack2/shaders/shaders.properties new file mode 100644 index 000000000..e69de29bb diff --git a/tests/testdata/ShaderPackParse/shaderpack3.zip b/tests/testdata/ShaderPackParse/shaderpack3.zip new file mode 100644 index 0000000000000000000000000000000000000000..dbec042df51d7eca752a8fff71efb3c0b260b43c GIT binary patch literal 128 zcmWIWW@Zs#0D+wD8KEE=hWQy781nMti!%~aQj3b?Gg6CE1H2iT?3r;ZhiP5X2x4Jq UW@Q5jGcqtT*fKCM=z=&506jev8UO$Q literal 0 HcmV?d00001 diff --git a/tests/testdata/WorldSaveParse/minecraft_save_1.zip b/tests/testdata/WorldSaveParse/minecraft_save_1.zip new file mode 100644 index 0000000000000000000000000000000000000000..832a243d660deabd3309f410ae9ccbf654735996 GIT binary patch literal 184 zcmWIWW@h1H0D+YaGeSW$3=1;IFqG#P<)p+L>gS}ErRM0RB$kARa56BjYh9iU!lf15 z42&!C$rM1VIVlN>WH!z5tlGAwBXF|ioU3NaePSXMTW21W)(hHwT325%6D0RU7M BBK`mX literal 0 HcmV?d00001 diff --git a/tests/testdata/WorldSaveParse/minecraft_save_2.zip b/tests/testdata/WorldSaveParse/minecraft_save_2.zip new file mode 100644 index 0000000000000000000000000000000000000000..6c895176e080f7e5f8d928fcbfb4e572e0eca090 GIT binary patch literal 352 zcmWIWW@h1H0D(gdGeSW$4D&I_Fcc@2r55X#=NILq#2e{{hHx@4-)UW*{IYX-a%lxO z10%}|W(Ec@f!iE$40Cc)%TjanQW8tx27(O5Fp!Z+jv1HJB%rPoV0h~YVxl{g72;45 o%oJyUnaRMgq|t+c0nPJBj>cs;D;vluObkp68yOfFW`Z~j0BaISl>h($ literal 0 HcmV?d00001 diff --git a/tests/testdata/WorldSaveParse/minecraft_save_3/world_3/level.dat b/tests/testdata/WorldSaveParse/minecraft_save_3/world_3/level.dat new file mode 100644 index 000000000..e69de29bb diff --git a/tests/testdata/WorldSaveParse/minecraft_save_4/saves/world_4/level.dat b/tests/testdata/WorldSaveParse/minecraft_save_4/saves/world_4/level.dat new file mode 100644 index 000000000..e69de29bb From cfce54fe46f7d3db39e50c4113cb9fc74d6719e2 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 24 Dec 2022 18:08:08 -0700 Subject: [PATCH 07/37] fix: update parse tests Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .../mod/tasks/LocalTexturePackParseTask.cpp | 2 +- .../mod/tasks/LocalWorldSaveParseTask.h | 2 +- tests/ResourcePackParse_test.cpp | 9 ++++++--- tests/TexturePackParse_test.cpp | 9 ++++++--- .../test_resource_pack_idk.zip | Bin 322 -> 804 bytes 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp index e4492f12e..38f1d7c1f 100644 --- a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp @@ -116,7 +116,7 @@ bool processZIP(TexturePack& pack, ProcessingLevel level) if (level == ProcessingLevel::BasicInfoOnly) { zip.close(); - return false; + return true; } if (zip.setCurrentFile("pack.png")) { diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h index 441537359..aa5db0c2a 100644 --- a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h @@ -37,7 +37,7 @@ bool process(WorldSave& save, ProcessingLevel level = ProcessingLevel::Full); bool processZIP(WorldSave& pack, ProcessingLevel level = ProcessingLevel::Full); bool processFolder(WorldSave& pack, ProcessingLevel level = ProcessingLevel::Full); -bool validate(QFileInfo file); +bool validate(QFileInfo file); } // namespace WorldSaveUtils diff --git a/tests/ResourcePackParse_test.cpp b/tests/ResourcePackParse_test.cpp index 568c3b633..4192da312 100644 --- a/tests/ResourcePackParse_test.cpp +++ b/tests/ResourcePackParse_test.cpp @@ -35,10 +35,11 @@ class ResourcePackParseTest : public QObject { QString zip_rp = FS::PathCombine(source, "test_resource_pack_idk.zip"); ResourcePack pack { QFileInfo(zip_rp) }; - ResourcePackUtils::processZIP(pack); + bool valid = ResourcePackUtils::processZIP(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.packFormat() == 3); QVERIFY(pack.description() == "um dois, feijão com arroz, três quatro, feijão no prato, cinco seis, café inglês, sete oito, comer biscoito, nove dez comer pastéis!!"); + QVERIFY(valid == true); } void test_parseFolder() @@ -48,10 +49,11 @@ class ResourcePackParseTest : public QObject { QString folder_rp = FS::PathCombine(source, "test_folder"); ResourcePack pack { QFileInfo(folder_rp) }; - ResourcePackUtils::processFolder(pack); + bool valid = ResourcePackUtils::processFolder(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.packFormat() == 1); QVERIFY(pack.description() == "Some resource pack maybe"); + QVERIFY(valid == true); } void test_parseFolder2() @@ -61,10 +63,11 @@ class ResourcePackParseTest : public QObject { QString folder_rp = FS::PathCombine(source, "another_test_folder"); ResourcePack pack { QFileInfo(folder_rp) }; - ResourcePackUtils::process(pack); + bool valid = ResourcePackUtils::process(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.packFormat() == 6); QVERIFY(pack.description() == "o quartel pegou fogo, policia deu sinal, acode acode acode a bandeira nacional"); + QVERIFY(valid == false); } }; diff --git a/tests/TexturePackParse_test.cpp b/tests/TexturePackParse_test.cpp index 0771f79f1..4ddc0a3a1 100644 --- a/tests/TexturePackParse_test.cpp +++ b/tests/TexturePackParse_test.cpp @@ -36,9 +36,10 @@ class TexturePackParseTest : public QObject { QString zip_rp = FS::PathCombine(source, "test_texture_pack_idk.zip"); TexturePack pack { QFileInfo(zip_rp) }; - TexturePackUtils::processZIP(pack); + bool valid = TexturePackUtils::processZIP(pack); QVERIFY(pack.description() == "joe biden, wake up"); + QVERIFY(valid == true); } void test_parseFolder() @@ -48,9 +49,10 @@ class TexturePackParseTest : public QObject { QString folder_rp = FS::PathCombine(source, "test_texturefolder"); TexturePack pack { QFileInfo(folder_rp) }; - TexturePackUtils::processFolder(pack); + bool valid = TexturePackUtils::processFolder(pack, TexturePackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.description() == "Some texture pack surely"); + QVERIFY(valid == true); } void test_parseFolder2() @@ -60,9 +62,10 @@ class TexturePackParseTest : public QObject { QString folder_rp = FS::PathCombine(source, "another_test_texturefolder"); TexturePack pack { QFileInfo(folder_rp) }; - TexturePackUtils::process(pack); + bool valid = TexturePackUtils::process(pack, TexturePackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.description() == "quieres\nfor real"); + QVERIFY(valid == true); } }; diff --git a/tests/testdata/ResourcePackParse/test_resource_pack_idk.zip b/tests/testdata/ResourcePackParse/test_resource_pack_idk.zip index 52b91cdcfc6e2dbb0ecb76c5cb33d07b0184487d..b4e66a609436f535c4c95f6d2512114f9caa28eb 100644 GIT binary patch literal 804 zcmWIWW@Zs#U|`^2FfNk|z0d8=J&l2Z;WPsS12=;VLqTG4wq9;>ZfZ$lXb2|*^G093 zWDqW`;AUWCdCAPc047}f4EYWj@VKUHedWu0mXj01)@tI)Cd6)?nsGF9#wpVxL!a)J zFYW*5|DSHN{p`7v=j)#_Z2qMy!~W<+*QUL(iSkE`pEXSpnPuqYuOZgfF#VU(2a$t@ zms1uN)NQB}Fg>JvW9tv0{HYA`o{*G4XHhC^Fj4Grc5{Fx?f%k(Aj zm+Yp=LE=-^8UMP!IX6Te;Wd-~8KDde3=B*lf`Ng7oq>TNvA8(3q*$Ms0k<+igtFYs zywv2P#IzE;8lqx4aiLZ delta 31 kcmZ3&c8F=h-N~C714UTb7#J8B7#SED0vQ+>Zi6@s0D+SQ!2kdN From 8422e3ac01c861125fd6aea441714a2fb38e5ff9 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 24 Dec 2022 20:38:29 -0700 Subject: [PATCH 08/37] feat: zip resource validation check for flame Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/mod/DataPack.cpp | 2 +- launcher/minecraft/mod/ResourcePack.cpp | 2 +- .../flame/FlameInstanceCreationTask.cpp | 147 ++++++++++++++---- .../flame/FlameInstanceCreationTask.h | 3 + 4 files changed, 120 insertions(+), 34 deletions(-) diff --git a/launcher/minecraft/mod/DataPack.cpp b/launcher/minecraft/mod/DataPack.cpp index 6c3332857..ea1d097be 100644 --- a/launcher/minecraft/mod/DataPack.cpp +++ b/launcher/minecraft/mod/DataPack.cpp @@ -41,7 +41,7 @@ void DataPack::setPackFormat(int new_format_id) QMutexLocker locker(&m_data_lock); if (!s_pack_format_versions.contains(new_format_id)) { - qWarning() << "Pack format '%1' is not a recognized resource pack id!"; + qWarning() << "Pack format '" << new_format_id << "' is not a recognized data pack id!"; } m_pack_format = new_format_id; diff --git a/launcher/minecraft/mod/ResourcePack.cpp b/launcher/minecraft/mod/ResourcePack.cpp index 47da4feac..87995215e 100644 --- a/launcher/minecraft/mod/ResourcePack.cpp +++ b/launcher/minecraft/mod/ResourcePack.cpp @@ -27,7 +27,7 @@ void ResourcePack::setPackFormat(int new_format_id) QMutexLocker locker(&m_data_lock); if (!s_pack_format_versions.contains(new_format_id)) { - qWarning() << "Pack format '%1' is not a recognized resource pack id!"; + qWarning() << "Pack format '" << new_format_id << "' is not a recognized resource pack id!"; } m_pack_format = new_format_id; diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 1d441f092..2b1bc8d04 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -53,6 +53,13 @@ #include "ui/dialogs/BlockedModsDialog.h" #include "ui/dialogs/CustomMessageBox.h" +#include +#include +#include +#include +#include +#include + const static QMap forgemap = { { "1.2.5", "3.4.9.171" }, { "1.4.2", "6.0.1.355" }, { "1.4.7", "6.6.2.534" }, @@ -401,6 +408,11 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) QList blocked_mods; auto anyBlocked = false; for (const auto& result : results.files.values()) { + + if(result.fileName.endsWith(".zip")) { + m_ZIP_resources.append(std::make_pair(result.fileName, result.targetFolder)); + } + if (!result.resolved || result.url.isEmpty()) { BlockedMod blocked_mod; blocked_mod.name = result.fileName; @@ -439,37 +451,6 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) } } -/// @brief copy the matched blocked mods to the instance staging area -/// @param blocked_mods list of the blocked mods and their matched paths -void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) -{ - setStatus(tr("Copying Blocked Mods...")); - setAbortable(false); - int i = 0; - int total = blocked_mods.length(); - setProgress(i, total); - for (auto const& mod : blocked_mods) { - if (!mod.matched) { - qDebug() << mod.name << "was not matched to a local file, skipping copy"; - continue; - } - - auto dest_path = FS::PathCombine(m_stagingPath, "minecraft", mod.targetFolder, mod.name); - - setStatus(tr("Copying Blocked Mods (%1 out of %2 are done)").arg(QString::number(i), QString::number(total))); - - qDebug() << "Will try to copy" << mod.localPath << "to" << dest_path; - - if (!FS::copy(mod.localPath, dest_path)()) { - qDebug() << "Copy of" << mod.localPath << "to" << dest_path << "Failed"; - } - - i++; - setProgress(i, total); - } - - setAbortable(true); -} void FlameCreationTask::setupDownloadJob(QEventLoop& loop) { @@ -509,7 +490,10 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) } m_mod_id_resolver.reset(); - connect(m_files_job.get(), &NetJob::succeeded, this, [&]() { m_files_job.reset(); }); + connect(m_files_job.get(), &NetJob::succeeded, this, [&]() { + m_files_job.reset(); + validateZIPResouces(); + }); connect(m_files_job.get(), &NetJob::failed, [&](QString reason) { m_files_job.reset(); setError(reason); @@ -520,3 +504,102 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) setStatus(tr("Downloading mods...")); m_files_job->start(); } + +/// @brief copy the matched blocked mods to the instance staging area +/// @param blocked_mods list of the blocked mods and their matched paths +void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) +{ + setStatus(tr("Copying Blocked Mods...")); + setAbortable(false); + int i = 0; + int total = blocked_mods.length(); + setProgress(i, total); + for (auto const& mod : blocked_mods) { + if (!mod.matched) { + qDebug() << mod.name << "was not matched to a local file, skipping copy"; + continue; + } + + auto destPath = FS::PathCombine(m_stagingPath, "minecraft", mod.targetFolder, mod.name); + + setStatus(tr("Copying Blocked Mods (%1 out of %2 are done)").arg(QString::number(i), QString::number(total))); + + qDebug() << "Will try to copy" << mod.localPath << "to" << destPath; + + if (!FS::copy(mod.localPath, destPath)()) { + qDebug() << "Copy of" << mod.localPath << "to" << destPath << "Failed"; + } + + i++; + setProgress(i, total); + } + + setAbortable(true); +} + +static bool moveFile(QString src, QString dst) +{ + if (!FS::copy(src, dst)()) { // copy + qDebug() << "Copy of" << src << "to" << dst << "Failed!"; + return false; + } else { + if (!FS::deletePath(src)) { // remove origonal + qDebug() << "Deleation of" << src << "Failed!"; + return false; + }; + } + return true; +} + +void FlameCreationTask::validateZIPResouces() +{ + qDebug() << "Validating resoucres stored as .zip are in the right place"; + for (auto [fileName, targetFolder] : m_ZIP_resources) { + qDebug() << "Checking" << fileName << "..."; + auto localPath = FS::PathCombine(m_stagingPath, "minecraft", targetFolder, fileName); + QFileInfo localFileInfo(localPath); + if (localFileInfo.exists() && localFileInfo.isFile()) { + if (ResourcePackUtils::validate(localFileInfo)) { + if (targetFolder != "resourcepacks") { + qDebug() << "Target folder of" << fileName << "is incorrect, it's a resource pack."; + auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "resourcepacks", fileName); + qDebug() << "Moveing" << localPath << "to" << destPath; + moveFile(localPath, destPath); + } else { + qDebug() << fileName << "is in the right place :" << targetFolder; + } + } else if (TexturePackUtils::validate(localFileInfo)) { + if (targetFolder != "texturepacks") { + qDebug() << "Target folder of" << fileName << "is incorrect, it's a pre 1.6 texture pack."; + auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "texturepacks", fileName); + qDebug() << "Moveing" << localPath << "to" << destPath; + moveFile(localPath, destPath); + } else { + qDebug() << fileName << "is in the right place :" << targetFolder; + } + } else if (DataPackUtils::validate(localFileInfo)) { + if (targetFolder != "datapacks") { + qDebug() << "Target folder of" << fileName << "is incorrect, it's a data pack."; + auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "datapacks", fileName); + qDebug() << "Moveing" << localPath << "to" << destPath; + moveFile(localPath, destPath); + } else { + qDebug() << fileName << "is in the right place :" << targetFolder; + } + } else if (ModUtils::validate(localFileInfo)) { + if (targetFolder != "mods") { + qDebug() << "Target folder of" << fileName << "is incorrect, it's a mod."; + auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "mods", fileName); + qDebug() << "Moveing" << localPath << "to" << destPath; + moveFile(localPath, destPath); + } else { + qDebug() << fileName << "is in the right place :" << targetFolder; + } + } else { + qDebug() << "Can't Identify" << fileName << "at" << localPath << ", leaving it where it is."; + } + } else { + qDebug() << "Can't find" << localPath << "to validate it, ignoreing"; + } + } +} diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.h b/launcher/modplatform/flame/FlameInstanceCreationTask.h index 3a1c729fc..498e1d6e4 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.h +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.h @@ -77,6 +77,7 @@ class FlameCreationTask final : public InstanceCreationTask { void idResolverSucceeded(QEventLoop&); void setupDownloadJob(QEventLoop&); void copyBlockedMods(QList const& blocked_mods); + void validateZIPResouces(); private: QWidget* m_parent = nullptr; @@ -90,5 +91,7 @@ class FlameCreationTask final : public InstanceCreationTask { QString m_managed_id, m_managed_version_id; + QList> m_ZIP_resources; + std::optional m_instance; }; From 78984eea3aa398451dc511712ccb7ec55f93194c Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sun, 25 Dec 2022 16:49:56 -0700 Subject: [PATCH 09/37] feat: support installing worlds during flame pack import. Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .../flame/FlameInstanceCreationTask.cpp | 72 ++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 2b1bc8d04..204d5c1f6 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -57,6 +57,9 @@ #include #include #include +#include +#include +#include #include #include @@ -537,13 +540,13 @@ void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) setAbortable(true); } -static bool moveFile(QString src, QString dst) +bool moveFile(QString src, QString dst) { if (!FS::copy(src, dst)()) { // copy qDebug() << "Copy of" << src << "to" << dst << "Failed!"; return false; } else { - if (!FS::deletePath(src)) { // remove origonal + if (!FS::deletePath(src)) { // remove original qDebug() << "Deleation of" << src << "Failed!"; return false; }; @@ -551,50 +554,53 @@ static bool moveFile(QString src, QString dst) return true; } + void FlameCreationTask::validateZIPResouces() { qDebug() << "Validating resoucres stored as .zip are in the right place"; for (auto [fileName, targetFolder] : m_ZIP_resources) { + qDebug() << "Checking" << fileName << "..."; auto localPath = FS::PathCombine(m_stagingPath, "minecraft", targetFolder, fileName); + + auto validatePath = [&localPath, this](QString fileName, QString targetFolder, QString realTarget) { + if (targetFolder != "resourcepacks") { + qDebug() << "Target folder of" << fileName << "is incorrect, it's a resource pack."; + auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "resourcepacks", fileName); + qDebug() << "Moving" << localPath << "to" << destPath; + if (moveFile(localPath, destPath)) { + return destPath; + } + } else { + qDebug() << fileName << "is in the right place :" << targetFolder; + } + return localPath; + }; + QFileInfo localFileInfo(localPath); if (localFileInfo.exists() && localFileInfo.isFile()) { if (ResourcePackUtils::validate(localFileInfo)) { - if (targetFolder != "resourcepacks") { - qDebug() << "Target folder of" << fileName << "is incorrect, it's a resource pack."; - auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "resourcepacks", fileName); - qDebug() << "Moveing" << localPath << "to" << destPath; - moveFile(localPath, destPath); - } else { - qDebug() << fileName << "is in the right place :" << targetFolder; - } + validatePath(fileName, targetFolder, "resourcepacks"); } else if (TexturePackUtils::validate(localFileInfo)) { - if (targetFolder != "texturepacks") { - qDebug() << "Target folder of" << fileName << "is incorrect, it's a pre 1.6 texture pack."; - auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "texturepacks", fileName); - qDebug() << "Moveing" << localPath << "to" << destPath; - moveFile(localPath, destPath); - } else { - qDebug() << fileName << "is in the right place :" << targetFolder; - } + validatePath(fileName, targetFolder, "texturepacks"); } else if (DataPackUtils::validate(localFileInfo)) { - if (targetFolder != "datapacks") { - qDebug() << "Target folder of" << fileName << "is incorrect, it's a data pack."; - auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "datapacks", fileName); - qDebug() << "Moveing" << localPath << "to" << destPath; - moveFile(localPath, destPath); - } else { - qDebug() << fileName << "is in the right place :" << targetFolder; - } + validatePath(fileName, targetFolder, "datapacks"); } else if (ModUtils::validate(localFileInfo)) { - if (targetFolder != "mods") { - qDebug() << "Target folder of" << fileName << "is incorrect, it's a mod."; - auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "mods", fileName); - qDebug() << "Moveing" << localPath << "to" << destPath; - moveFile(localPath, destPath); + validatePath(fileName, targetFolder, "mods"); + } else if (WorldSaveUtils::validate(localFileInfo)) { + QString worldPath = validatePath(fileName, targetFolder, "saves"); + + qDebug() << "Installing World from" << worldPath; + World w(worldPath); + if (!w.isValid()) { + qDebug() << "World at" << worldPath << "is not valid, skipping install."; } else { - qDebug() << fileName << "is in the right place :" << targetFolder; - } + w.install(FS::PathCombine(m_stagingPath, "minecraft", "saves")); + } + } else if (ShaderPackUtils::validate(localFileInfo)) { + // in theroy flame API can't do this but who knows, that *may* change ? + // better to handle it if it *does* occure in the future + validatePath(fileName, targetFolder, "shaderpacks"); } else { qDebug() << "Can't Identify" << fileName << "at" << localPath << ", leaving it where it is."; } From b2082bfde7149a5596fe8a467659699ad569f932 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sun, 25 Dec 2022 17:16:26 -0700 Subject: [PATCH 10/37] fix: explicit QFileInfo converison for qt6 fix: validatePath in validateZIPResouces Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .../flame/FlameInstanceCreationTask.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 204d5c1f6..b62d05abb 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -564,15 +564,13 @@ void FlameCreationTask::validateZIPResouces() auto localPath = FS::PathCombine(m_stagingPath, "minecraft", targetFolder, fileName); auto validatePath = [&localPath, this](QString fileName, QString targetFolder, QString realTarget) { - if (targetFolder != "resourcepacks") { - qDebug() << "Target folder of" << fileName << "is incorrect, it's a resource pack."; - auto destPath = FS::PathCombine(m_stagingPath, "minecraft", "resourcepacks", fileName); + if (targetFolder != realTarget) { + qDebug() << "Target folder of" << fileName << "is incorrect, it belongs in" << realTarget; + auto destPath = FS::PathCombine(m_stagingPath, "minecraft", realTarget, fileName); qDebug() << "Moving" << localPath << "to" << destPath; if (moveFile(localPath, destPath)) { return destPath; } - } else { - qDebug() << fileName << "is in the right place :" << targetFolder; } return localPath; }; @@ -580,18 +578,24 @@ void FlameCreationTask::validateZIPResouces() QFileInfo localFileInfo(localPath); if (localFileInfo.exists() && localFileInfo.isFile()) { if (ResourcePackUtils::validate(localFileInfo)) { + qDebug() << fileName << "is a resource pack"; validatePath(fileName, targetFolder, "resourcepacks"); } else if (TexturePackUtils::validate(localFileInfo)) { + qDebug() << fileName << "is a pre 1.6 texture pack"; validatePath(fileName, targetFolder, "texturepacks"); } else if (DataPackUtils::validate(localFileInfo)) { + qDebug() << fileName << "is a data pack"; validatePath(fileName, targetFolder, "datapacks"); } else if (ModUtils::validate(localFileInfo)) { + qDebug() << fileName << "is a mod"; validatePath(fileName, targetFolder, "mods"); } else if (WorldSaveUtils::validate(localFileInfo)) { + qDebug() << fileName << "is a world save"; QString worldPath = validatePath(fileName, targetFolder, "saves"); qDebug() << "Installing World from" << worldPath; - World w(worldPath); + QFileInfo worldFileInfo(worldPath); + World w(worldFileInfo); if (!w.isValid()) { qDebug() << "World at" << worldPath << "is not valid, skipping install."; } else { @@ -600,6 +604,7 @@ void FlameCreationTask::validateZIPResouces() } else if (ShaderPackUtils::validate(localFileInfo)) { // in theroy flame API can't do this but who knows, that *may* change ? // better to handle it if it *does* occure in the future + qDebug() << fileName << "is a shader pack"; validatePath(fileName, targetFolder, "shaderpacks"); } else { qDebug() << "Can't Identify" << fileName << "at" << localPath << ", leaving it where it is."; From 3691f3a2963c77dbd7b469b4b90ca79b61014d43 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Mon, 26 Dec 2022 14:29:13 -0700 Subject: [PATCH 11/37] fix: cleanup and suggested changes Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/mod/DataPack.cpp | 6 +- launcher/minecraft/mod/DataPack.h | 8 +-- launcher/minecraft/mod/Mod.cpp | 2 +- launcher/minecraft/mod/ResourcePack.cpp | 11 ++-- launcher/minecraft/mod/ShaderPack.cpp | 2 - launcher/minecraft/mod/ShaderPack.h | 24 ++++---- launcher/minecraft/mod/WorldSave.cpp | 6 +- launcher/minecraft/mod/WorldSave.h | 14 ++--- .../mod/tasks/LocalDataPackParseTask.cpp | 46 ++++++++------ .../mod/tasks/LocalDataPackParseTask.h | 2 +- .../minecraft/mod/tasks/LocalModParseTask.cpp | 36 ++++++----- .../minecraft/mod/tasks/LocalModParseTask.h | 15 ++--- .../mod/tasks/LocalResourcePackParseTask.cpp | 60 ++++++++++++------- .../mod/tasks/LocalShaderPackParseTask.cpp | 23 ++++--- .../mod/tasks/LocalShaderPackParseTask.h | 3 +- .../mod/tasks/LocalWorldSaveParseTask.cpp | 56 ++++++++++------- .../mod/tasks/LocalWorldSaveParseTask.h | 2 +- .../flame/FlameInstanceCreationTask.cpp | 43 +++++++------ tests/ResourcePackParse_test.cpp | 2 +- 19 files changed, 187 insertions(+), 174 deletions(-) diff --git a/launcher/minecraft/mod/DataPack.cpp b/launcher/minecraft/mod/DataPack.cpp index ea1d097be..5c58f6b27 100644 --- a/launcher/minecraft/mod/DataPack.cpp +++ b/launcher/minecraft/mod/DataPack.cpp @@ -30,9 +30,9 @@ // Values taken from: // https://minecraft.fandom.com/wiki/Tutorials/Creating_a_data_pack#%22pack_format%22 static const QMap> s_pack_format_versions = { - { 4, { Version("1.13"), Version("1.14.4") } }, { 5, { Version("1.15"), Version("1.16.1") } }, - { 6, { Version("1.16.2"), Version("1.16.5") } }, { 7, { Version("1.17"), Version("1.17.1") } }, - { 8, { Version("1.18"), Version("1.18.1") } }, { 9, { Version("1.18.2"), Version("1.18.2") } }, + { 4, { Version("1.13"), Version("1.14.4") } }, { 5, { Version("1.15"), Version("1.16.1") } }, + { 6, { Version("1.16.2"), Version("1.16.5") } }, { 7, { Version("1.17"), Version("1.17.1") } }, + { 8, { Version("1.18"), Version("1.18.1") } }, { 9, { Version("1.18.2"), Version("1.18.2") } }, { 10, { Version("1.19"), Version("1.19.3") } }, }; diff --git a/launcher/minecraft/mod/DataPack.h b/launcher/minecraft/mod/DataPack.h index 17d9b65ec..fc2703c7a 100644 --- a/launcher/minecraft/mod/DataPack.h +++ b/launcher/minecraft/mod/DataPack.h @@ -45,7 +45,7 @@ class DataPack : public Resource { /** Gets, respectively, the lower and upper versions supported by the set pack format. */ [[nodiscard]] std::pair compatibleVersions() const; - /** Gets the description of the resource pack. */ + /** Gets the description of the data pack. */ [[nodiscard]] QString description() const { return m_description; } /** Thread-safe. */ @@ -62,12 +62,12 @@ class DataPack : public Resource { protected: mutable QMutex m_data_lock; - /* The 'version' of a resource pack, as defined in the pack.mcmeta file. - * See https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta + /* The 'version' of a data pack, as defined in the pack.mcmeta file. + * See https://minecraft.fandom.com/wiki/Data_pack#pack.mcmeta */ int m_pack_format = 0; - /** The resource pack's description, as defined in the pack.mcmeta file. + /** The data pack's description, as defined in the pack.mcmeta file. */ QString m_description; }; diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index 8b00354d8..3439b6eed 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -199,4 +199,4 @@ void Mod::finishResolvingWithDetails(ModDetails&& details) bool Mod::valid() const { return !m_local_details.mod_id.isEmpty(); -} \ No newline at end of file +} diff --git a/launcher/minecraft/mod/ResourcePack.cpp b/launcher/minecraft/mod/ResourcePack.cpp index 87995215e..876d5c3ee 100644 --- a/launcher/minecraft/mod/ResourcePack.cpp +++ b/launcher/minecraft/mod/ResourcePack.cpp @@ -13,12 +13,11 @@ // Values taken from: // https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta static const QMap> s_pack_format_versions = { - { 1, { Version("1.6.1"), Version("1.8.9") } }, { 2, { Version("1.9"), Version("1.10.2") } }, - { 3, { Version("1.11"), Version("1.12.2") } }, { 4, { Version("1.13"), Version("1.14.4") } }, - { 5, { Version("1.15"), Version("1.16.1") } }, { 6, { Version("1.16.2"), Version("1.16.5") } }, - { 7, { Version("1.17"), Version("1.17.1") } }, { 8, { Version("1.18"), Version("1.18.2") } }, - { 9, { Version("1.19"), Version("1.19.2") } }, - // { 11, { Version("22w42a"), Version("22w44a") } } + { 1, { Version("1.6.1"), Version("1.8.9") } }, { 2, { Version("1.9"), Version("1.10.2") } }, + { 3, { Version("1.11"), Version("1.12.2") } }, { 4, { Version("1.13"), Version("1.14.4") } }, + { 5, { Version("1.15"), Version("1.16.1") } }, { 6, { Version("1.16.2"), Version("1.16.5") } }, + { 7, { Version("1.17"), Version("1.17.1") } }, { 8, { Version("1.18"), Version("1.18.2") } }, + { 9, { Version("1.19"), Version("1.19.2") } }, { 11, { Version("22w42a"), Version("22w44a") } }, { 12, { Version("1.19.3"), Version("1.19.3") } }, }; diff --git a/launcher/minecraft/mod/ShaderPack.cpp b/launcher/minecraft/mod/ShaderPack.cpp index b8d427c77..6a9641de2 100644 --- a/launcher/minecraft/mod/ShaderPack.cpp +++ b/launcher/minecraft/mod/ShaderPack.cpp @@ -24,12 +24,10 @@ #include "minecraft/mod/tasks/LocalShaderPackParseTask.h" - void ShaderPack::setPackFormat(ShaderPackFormat new_format) { QMutexLocker locker(&m_data_lock); - m_pack_format = new_format; } diff --git a/launcher/minecraft/mod/ShaderPack.h b/launcher/minecraft/mod/ShaderPack.h index a0dad7a16..ec0f9404e 100644 --- a/launcher/minecraft/mod/ShaderPack.h +++ b/launcher/minecraft/mod/ShaderPack.h @@ -24,31 +24,27 @@ #include "Resource.h" /* Info: - * Currently For Optifine / Iris shader packs, - * could be expanded to support others should they exsist? + * Currently For Optifine / Iris shader packs, + * could be expanded to support others should they exist? * - * This class and enum are mostly here as placeholders for validating - * that a shaderpack exsists and is in the right format, + * This class and enum are mostly here as placeholders for validating + * that a shaderpack exists and is in the right format, * namely that they contain a folder named 'shaders'. * - * In the technical sense it would be possible to parse files like `shaders/shaders.properties` - * to get information like the availble profiles but this is not all that usefull without more knoledge of the - * shader mod used to be able to change settings - * + * In the technical sense it would be possible to parse files like `shaders/shaders.properties` + * to get information like the available profiles but this is not all that useful without more knowledge of the + * shader mod used to be able to change settings. */ #include -enum class ShaderPackFormat { - VALID, - INVALID -}; +enum class ShaderPackFormat { VALID, INVALID }; class ShaderPack : public Resource { Q_OBJECT public: using Ptr = shared_qobject_ptr; - + [[nodiscard]] ShaderPackFormat packFormat() const { return m_pack_format; } ShaderPack(QObject* parent = nullptr) : Resource(parent) {} @@ -62,5 +58,5 @@ class ShaderPack : public Resource { protected: mutable QMutex m_data_lock; - ShaderPackFormat m_pack_format = ShaderPackFormat::INVALID; + ShaderPackFormat m_pack_format = ShaderPackFormat::INVALID; }; diff --git a/launcher/minecraft/mod/WorldSave.cpp b/launcher/minecraft/mod/WorldSave.cpp index 9a626fc1e..7123f5123 100644 --- a/launcher/minecraft/mod/WorldSave.cpp +++ b/launcher/minecraft/mod/WorldSave.cpp @@ -27,7 +27,6 @@ void WorldSave::setSaveFormat(WorldSaveFormat new_save_format) { QMutexLocker locker(&m_data_lock); - m_save_format = new_save_format; } @@ -35,11 +34,10 @@ void WorldSave::setSaveDirName(QString dir_name) { QMutexLocker locker(&m_data_lock); - m_save_dir_name = dir_name; } bool WorldSave::valid() const { - return m_save_format != WorldSaveFormat::INVALID; -} \ No newline at end of file + return m_save_format != WorldSaveFormat::INVALID; +} diff --git a/launcher/minecraft/mod/WorldSave.h b/launcher/minecraft/mod/WorldSave.h index f703f34cb..5985fc8ad 100644 --- a/launcher/minecraft/mod/WorldSave.h +++ b/launcher/minecraft/mod/WorldSave.h @@ -27,11 +27,7 @@ class Version; -enum class WorldSaveFormat { - SINGLE, - MULTI, - INVALID -}; +enum class WorldSaveFormat { SINGLE, MULTI, INVALID }; class WorldSave : public Resource { Q_OBJECT @@ -53,15 +49,13 @@ class WorldSave : public Resource { bool valid() const override; - protected: mutable QMutex m_data_lock; - /* The 'version' of a resource pack, as defined in the pack.mcmeta file. - * See https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta + /** The format in which the save file is in. + * Since saves can be distributed in various slightly different ways, this allows us to treat them separately. */ WorldSaveFormat m_save_format = WorldSaveFormat::INVALID; - QString m_save_dir_name; - + QString m_save_dir_name; }; diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp index 8bc8278b7..3fcb2110a 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp @@ -25,8 +25,8 @@ #include "Json.h" #include -#include #include +#include #include @@ -40,7 +40,7 @@ bool process(DataPack& pack, ProcessingLevel level) case ResourceType::ZIPFILE: return DataPackUtils::processZIP(pack, level); default: - qWarning() << "Invalid type for resource pack parse task!"; + qWarning() << "Invalid type for data pack parse task!"; return false; } } @@ -49,11 +49,16 @@ bool processFolder(DataPack& pack, ProcessingLevel level) { Q_ASSERT(pack.type() == ResourceType::FOLDER); + auto mcmeta_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; + return false; // the mcmeta is not optional + }; + QFileInfo mcmeta_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.mcmeta")); if (mcmeta_file_info.exists() && mcmeta_file_info.isFile()) { QFile mcmeta_file(mcmeta_file_info.filePath()); if (!mcmeta_file.open(QIODevice::ReadOnly)) - return false; // can't open mcmeta file + return mcmeta_invalid(); // can't open mcmeta file auto data = mcmeta_file.readAll(); @@ -61,22 +66,22 @@ bool processFolder(DataPack& pack, ProcessingLevel level) mcmeta_file.close(); if (!mcmeta_result) { - return false; // mcmeta invalid + return mcmeta_invalid(); // mcmeta invalid } } else { - return false; // mcmeta file isn't a valid file + return mcmeta_invalid(); // mcmeta file isn't a valid file } QFileInfo data_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "data")); if (!data_dir_info.exists() || !data_dir_info.isDir()) { - return false; // data dir does not exists or isn't valid + return false; // data dir does not exists or isn't valid } if (level == ProcessingLevel::BasicInfoOnly) { - return true; // only need basic info already checked + return true; // only need basic info already checked } - return true; // all tests passed + return true; // all tests passed } bool processZIP(DataPack& pack, ProcessingLevel level) @@ -85,15 +90,20 @@ bool processZIP(DataPack& pack, ProcessingLevel level) QuaZip zip(pack.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return false; // can't open zip file + return false; // can't open zip file QuaZipFile file(&zip); + auto mcmeta_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; + return false; // the mcmeta is not optional + }; + if (zip.setCurrentFile("pack.mcmeta")) { if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return false; + return mcmeta_invalid(); } auto data = file.readAll(); @@ -102,20 +112,20 @@ bool processZIP(DataPack& pack, ProcessingLevel level) file.close(); if (!mcmeta_result) { - return false; // mcmeta invalid + return mcmeta_invalid(); // mcmeta invalid } } else { - return false; // could not set pack.mcmeta as current file. + return mcmeta_invalid(); // could not set pack.mcmeta as current file. } QuaZipDir zipDir(&zip); if (!zipDir.exists("/data")) { - return false; // data dir does not exists at zip root + return false; // data dir does not exists at zip root } if (level == ProcessingLevel::BasicInfoOnly) { zip.close(); - return true; // only need basic info already checked + return true; // only need basic info already checked } zip.close(); @@ -123,7 +133,7 @@ bool processZIP(DataPack& pack, ProcessingLevel level) return true; } -// https://minecraft.fandom.com/wiki/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta +// https://minecraft.fandom.com/wiki/Data_pack#pack.mcmeta bool processMCMeta(DataPack& pack, QByteArray&& raw_data) { try { @@ -147,9 +157,7 @@ bool validate(QFileInfo file) } // namespace DataPackUtils -LocalDataPackParseTask::LocalDataPackParseTask(int token, DataPack& dp) - : Task(nullptr, false), m_token(token), m_resource_pack(dp) -{} +LocalDataPackParseTask::LocalDataPackParseTask(int token, DataPack& dp) : Task(nullptr, false), m_token(token), m_data_pack(dp) {} bool LocalDataPackParseTask::abort() { @@ -159,7 +167,7 @@ bool LocalDataPackParseTask::abort() void LocalDataPackParseTask::executeTask() { - if (!DataPackUtils::process(m_resource_pack)) + if (!DataPackUtils::process(m_data_pack)) return; if (m_aborted) diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h index 54e3d398f..12fd8c82c 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h @@ -59,7 +59,7 @@ class LocalDataPackParseTask : public Task { private: int m_token; - DataPack& m_resource_pack; + DataPack& m_data_pack; bool m_aborted = false; }; diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index e8fd39b6c..8bfe2c844 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -284,7 +284,8 @@ ModDetails ReadLiteModInfo(QByteArray contents) return details; } -bool process(Mod& mod, ProcessingLevel level) { +bool process(Mod& mod, ProcessingLevel level) +{ switch (mod.type()) { case ResourceType::FOLDER: return processFolder(mod, level); @@ -293,13 +294,13 @@ bool process(Mod& mod, ProcessingLevel level) { case ResourceType::LITEMOD: return processLitemod(mod); default: - qWarning() << "Invalid type for resource pack parse task!"; + qWarning() << "Invalid type for mod parse task!"; return false; } } -bool processZIP(Mod& mod, ProcessingLevel level) { - +bool processZIP(Mod& mod, ProcessingLevel level) +{ ModDetails details; QuaZip zip(mod.fileinfo().filePath()); @@ -316,7 +317,7 @@ bool processZIP(Mod& mod, ProcessingLevel level) { details = ReadMCModTOML(file.readAll()); file.close(); - + // to replace ${file.jarVersion} with the actual version, as needed if (details.version == "${file.jarVersion}") { if (zip.setCurrentFile("META-INF/MANIFEST.MF")) { @@ -347,7 +348,6 @@ bool processZIP(Mod& mod, ProcessingLevel level) { } } - zip.close(); mod.setDetails(details); @@ -403,11 +403,11 @@ bool processZIP(Mod& mod, ProcessingLevel level) { } zip.close(); - return false; // no valid mod found in archive + return false; // no valid mod found in archive } -bool processFolder(Mod& mod, ProcessingLevel level) { - +bool processFolder(Mod& mod, ProcessingLevel level) +{ ModDetails details; QFileInfo mcmod_info(FS::PathCombine(mod.fileinfo().filePath(), "mcmod.info")); @@ -424,13 +424,13 @@ bool processFolder(Mod& mod, ProcessingLevel level) { return true; } - return false; // no valid mcmod.info file found + return false; // no valid mcmod.info file found } -bool processLitemod(Mod& mod, ProcessingLevel level) { - +bool processLitemod(Mod& mod, ProcessingLevel level) +{ ModDetails details; - + QuaZip zip(mod.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) return false; @@ -451,24 +451,22 @@ bool processLitemod(Mod& mod, ProcessingLevel level) { } zip.close(); - return false; // no valid litemod.json found in archive + return false; // no valid litemod.json found in archive } /** Checks whether a file is valid as a mod or not. */ -bool validate(QFileInfo file) { - +bool validate(QFileInfo file) +{ Mod mod{ file }; return ModUtils::process(mod, ProcessingLevel::BasicInfoOnly) && mod.valid(); } } // namespace ModUtils - LocalModParseTask::LocalModParseTask(int token, ResourceType type, const QFileInfo& modFile) : Task(nullptr, false), m_token(token), m_type(type), m_modFile(modFile), m_result(new Result()) {} - bool LocalModParseTask::abort() { m_aborted.store(true); @@ -476,7 +474,7 @@ bool LocalModParseTask::abort() } void LocalModParseTask::executeTask() -{ +{ Mod mod{ m_modFile }; ModUtils::process(mod, ModUtils::ProcessingLevel::Full); diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.h b/launcher/minecraft/mod/tasks/LocalModParseTask.h index c9512166a..38dae1357 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.h @@ -27,32 +27,29 @@ bool processLitemod(Mod& mod, ProcessingLevel level = ProcessingLevel::Full); bool validate(QFileInfo file); } // namespace ModUtils -class LocalModParseTask : public Task -{ +class LocalModParseTask : public Task { Q_OBJECT -public: + public: struct Result { ModDetails details; }; using ResultPtr = std::shared_ptr; - ResultPtr result() const { - return m_result; - } + ResultPtr result() const { return m_result; } [[nodiscard]] bool canAbort() const override { return true; } bool abort() override; - LocalModParseTask(int token, ResourceType type, const QFileInfo & modFile); + LocalModParseTask(int token, ResourceType type, const QFileInfo& modFile); void executeTask() override; [[nodiscard]] int token() const { return m_token; } -private: + private: void processAsZip(); void processAsFolder(); void processAsLitemod(); -private: + private: int m_token; ResourceType m_type; QFileInfo m_modFile; diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp index 2c41c9ae3..4bf0b80d8 100644 --- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp @@ -22,8 +22,8 @@ #include "Json.h" #include -#include #include +#include #include @@ -46,11 +46,16 @@ bool processFolder(ResourcePack& pack, ProcessingLevel level) { Q_ASSERT(pack.type() == ResourceType::FOLDER); + auto mcmeta_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; + return false; // the mcmeta is not optional + }; + QFileInfo mcmeta_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.mcmeta")); if (mcmeta_file_info.exists() && mcmeta_file_info.isFile()) { QFile mcmeta_file(mcmeta_file_info.filePath()); if (!mcmeta_file.open(QIODevice::ReadOnly)) - return false; // can't open mcmeta file + return mcmeta_invalid(); // can't open mcmeta file auto data = mcmeta_file.readAll(); @@ -58,26 +63,31 @@ bool processFolder(ResourcePack& pack, ProcessingLevel level) mcmeta_file.close(); if (!mcmeta_result) { - return false; // mcmeta invalid + return mcmeta_invalid(); // mcmeta invalid } } else { - return false; // mcmeta file isn't a valid file + return mcmeta_invalid(); // mcmeta file isn't a valid file } QFileInfo assets_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "assets")); if (!assets_dir_info.exists() || !assets_dir_info.isDir()) { - return false; // assets dir does not exists or isn't valid + return false; // assets dir does not exists or isn't valid } if (level == ProcessingLevel::BasicInfoOnly) { - return true; // only need basic info already checked + return true; // only need basic info already checked } - + + auto png_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.png"; + return true; // the png is optional + }; + QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png")); if (image_file_info.exists() && image_file_info.isFile()) { QFile pack_png_file(image_file_info.filePath()); if (!pack_png_file.open(QIODevice::ReadOnly)) - return false; // can't open pack.png file + return png_invalid(); // can't open pack.png file auto data = pack_png_file.readAll(); @@ -85,13 +95,13 @@ bool processFolder(ResourcePack& pack, ProcessingLevel level) pack_png_file.close(); if (!pack_png_result) { - return false; // pack.png invalid + return png_invalid(); // pack.png invalid } } else { - return false; // pack.png does not exists or is not a valid file. + return png_invalid(); // pack.png does not exists or is not a valid file. } - return true; // all tests passed + return true; // all tests passed } bool processZIP(ResourcePack& pack, ProcessingLevel level) @@ -100,15 +110,20 @@ bool processZIP(ResourcePack& pack, ProcessingLevel level) QuaZip zip(pack.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return false; // can't open zip file + return false; // can't open zip file QuaZipFile file(&zip); + auto mcmeta_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; + return false; // the mcmeta is not optional + }; + if (zip.setCurrentFile("pack.mcmeta")) { if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return false; + return mcmeta_invalid(); } auto data = file.readAll(); @@ -117,27 +132,32 @@ bool processZIP(ResourcePack& pack, ProcessingLevel level) file.close(); if (!mcmeta_result) { - return false; // mcmeta invalid + return mcmeta_invalid(); // mcmeta invalid } } else { - return false; // could not set pack.mcmeta as current file. + return mcmeta_invalid(); // could not set pack.mcmeta as current file. } QuaZipDir zipDir(&zip); if (!zipDir.exists("/assets")) { - return false; // assets dir does not exists at zip root + return false; // assets dir does not exists at zip root } if (level == ProcessingLevel::BasicInfoOnly) { zip.close(); - return true; // only need basic info already checked + return true; // only need basic info already checked } + auto png_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.png"; + return true; // the png is optional + }; + if (zip.setCurrentFile("pack.png")) { if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return false; + return png_invalid(); } auto data = file.readAll(); @@ -146,10 +166,10 @@ bool processZIP(ResourcePack& pack, ProcessingLevel level) file.close(); if (!pack_png_result) { - return false; // pack.png invalid + return png_invalid(); // pack.png invalid } } else { - return false; // could not set pack.mcmeta as current file. + return png_invalid(); // could not set pack.mcmeta as current file. } zip.close(); diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp index 088853b9d..a9949735b 100644 --- a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp @@ -24,8 +24,8 @@ #include "FileSystem.h" #include -#include #include +#include namespace ShaderPackUtils { @@ -45,18 +45,18 @@ bool process(ShaderPack& pack, ProcessingLevel level) bool processFolder(ShaderPack& pack, ProcessingLevel level) { Q_ASSERT(pack.type() == ResourceType::FOLDER); - + QFileInfo shaders_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "shaders")); if (!shaders_dir_info.exists() || !shaders_dir_info.isDir()) { - return false; // assets dir does not exists or isn't valid + return false; // assets dir does not exists or isn't valid } pack.setPackFormat(ShaderPackFormat::VALID); if (level == ProcessingLevel::BasicInfoOnly) { - return true; // only need basic info already checked + return true; // only need basic info already checked } - - return true; // all tests passed + + return true; // all tests passed } bool processZIP(ShaderPack& pack, ProcessingLevel level) @@ -65,19 +65,19 @@ bool processZIP(ShaderPack& pack, ProcessingLevel level) QuaZip zip(pack.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return false; // can't open zip file + return false; // can't open zip file QuaZipFile file(&zip); QuaZipDir zipDir(&zip); if (!zipDir.exists("/shaders")) { - return false; // assets dir does not exists at zip root + return false; // assets dir does not exists at zip root } pack.setPackFormat(ShaderPackFormat::VALID); if (level == ProcessingLevel::BasicInfoOnly) { zip.close(); - return true; // only need basic info already checked + return true; // only need basic info already checked } zip.close(); @@ -85,7 +85,6 @@ bool processZIP(ShaderPack& pack, ProcessingLevel level) return true; } - bool validate(QFileInfo file) { ShaderPack sp{ file }; @@ -94,9 +93,7 @@ bool validate(QFileInfo file) } // namespace ShaderPackUtils -LocalShaderPackParseTask::LocalShaderPackParseTask(int token, ShaderPack& sp) - : Task(nullptr, false), m_token(token), m_shader_pack(sp) -{} +LocalShaderPackParseTask::LocalShaderPackParseTask(int token, ShaderPack& sp) : Task(nullptr, false), m_token(token), m_shader_pack(sp) {} bool LocalShaderPackParseTask::abort() { diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h index 5d1135089..6be2183cd 100644 --- a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.h @@ -19,7 +19,6 @@ * along with this program. If not, see . */ - #pragma once #include @@ -38,7 +37,7 @@ bool process(ShaderPack& pack, ProcessingLevel level = ProcessingLevel::Full); bool processZIP(ShaderPack& pack, ProcessingLevel level = ProcessingLevel::Full); bool processFolder(ShaderPack& pack, ProcessingLevel level = ProcessingLevel::Full); -/** Checks whether a file is valid as a resource pack or not. */ +/** Checks whether a file is valid as a shader pack or not. */ bool validate(QFileInfo file); } // namespace ShaderPackUtils diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp index b7f2420a9..cbc8f8cee 100644 --- a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp @@ -24,12 +24,12 @@ #include "FileSystem.h" -#include -#include #include -#include #include -#include +#include + +#include +#include namespace WorldSaveUtils { @@ -41,15 +41,22 @@ bool process(WorldSave& pack, ProcessingLevel level) case ResourceType::ZIPFILE: return WorldSaveUtils::processZIP(pack, level); default: - qWarning() << "Invalid type for shader pack parse task!"; + qWarning() << "Invalid type for world save parse task!"; return false; } } - +/// @brief checks a folder structure to see if it contains a level.dat +/// @param dir the path to check +/// @param saves used in recursive call if a "saves" dir was found +/// @return std::tuple of ( +/// bool , +/// QString , +/// bool +/// ) static std::tuple contains_level_dat(QDir dir, bool saves = false) { - for(auto const& entry : dir.entryInfoList()) { + for (auto const& entry : dir.entryInfoList()) { if (!entry.isDir()) { continue; } @@ -64,12 +71,11 @@ static std::tuple contains_level_dat(QDir dir, bool saves = return std::make_tuple(false, "", saves); } - bool processFolder(WorldSave& save, ProcessingLevel level) { Q_ASSERT(save.type() == ResourceType::FOLDER); - auto [ found, save_dir_name, found_saves_dir ] = contains_level_dat(QDir(save.fileinfo().filePath())); + auto [found, save_dir_name, found_saves_dir] = contains_level_dat(QDir(save.fileinfo().filePath())); if (!found) { return false; @@ -84,14 +90,21 @@ bool processFolder(WorldSave& save, ProcessingLevel level) } if (level == ProcessingLevel::BasicInfoOnly) { - return true; // only need basic info already checked + return true; // only need basic info already checked } - // resurved for more intensive processing - - return true; // all tests passed + // reserved for more intensive processing + + return true; // all tests passed } +/// @brief checks a folder structure to see if it contains a level.dat +/// @param zip the zip file to check +/// @return std::tuple of ( +/// bool , +/// QString , +/// bool +/// ) static std::tuple contains_level_dat(QuaZip& zip) { bool saves = false; @@ -100,7 +113,7 @@ static std::tuple contains_level_dat(QuaZip& zip) saves = true; zipDir.cd("/saves"); } - + for (auto const& entry : zipDir.entryList()) { zipDir.cd(entry); if (zipDir.exists("level.dat")) { @@ -117,14 +130,14 @@ bool processZIP(WorldSave& save, ProcessingLevel level) QuaZip zip(save.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return false; // can't open zip file + return false; // can't open zip file - auto [ found, save_dir_name, found_saves_dir ] = contains_level_dat(zip); + auto [found, save_dir_name, found_saves_dir] = contains_level_dat(zip); if (save_dir_name.endsWith("/")) { save_dir_name.chop(1); } - + if (!found) { return false; } @@ -139,17 +152,16 @@ bool processZIP(WorldSave& save, ProcessingLevel level) if (level == ProcessingLevel::BasicInfoOnly) { zip.close(); - return true; // only need basic info already checked + return true; // only need basic info already checked } - // resurved for more intensive processing + // reserved for more intensive processing zip.close(); return true; } - bool validate(QFileInfo file) { WorldSave sp{ file }; @@ -158,9 +170,7 @@ bool validate(QFileInfo file) } // namespace WorldSaveUtils -LocalWorldSaveParseTask::LocalWorldSaveParseTask(int token, WorldSave& save) - : Task(nullptr, false), m_token(token), m_save(save) -{} +LocalWorldSaveParseTask::LocalWorldSaveParseTask(int token, WorldSave& save) : Task(nullptr, false), m_token(token), m_save(save) {} bool LocalWorldSaveParseTask::abort() { diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h index aa5db0c2a..9dcdca2b9 100644 --- a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.h @@ -59,4 +59,4 @@ class LocalWorldSaveParseTask : public Task { WorldSave& m_save; bool m_aborted = false; -}; \ No newline at end of file +}; diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index b62d05abb..79104e17d 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -53,15 +53,16 @@ #include "ui/dialogs/BlockedModsDialog.h" #include "ui/dialogs/CustomMessageBox.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include + +#include "minecraft/World.h" +#include "minecraft/mod/tasks/LocalDataPackParseTask.h" +#include "minecraft/mod/tasks/LocalModParseTask.h" +#include "minecraft/mod/tasks/LocalResourcePackParseTask.h" +#include "minecraft/mod/tasks/LocalShaderPackParseTask.h" +#include "minecraft/mod/tasks/LocalTexturePackParseTask.h" +#include "minecraft/mod/tasks/LocalWorldSaveParseTask.h" const static QMap forgemap = { { "1.2.5", "3.4.9.171" }, { "1.4.2", "6.0.1.355" }, @@ -411,8 +412,7 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) QList blocked_mods; auto anyBlocked = false; for (const auto& result : results.files.values()) { - - if(result.fileName.endsWith(".zip")) { + if (result.fileName.endsWith(".zip")) { m_ZIP_resources.append(std::make_pair(result.fileName, result.targetFolder)); } @@ -454,7 +454,6 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) } } - void FlameCreationTask::setupDownloadJob(QEventLoop& loop) { m_files_job = new NetJob(tr("Mod download"), APPLICATION->network()); @@ -493,8 +492,8 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) } m_mod_id_resolver.reset(); - connect(m_files_job.get(), &NetJob::succeeded, this, [&]() { - m_files_job.reset(); + connect(m_files_job.get(), &NetJob::succeeded, this, [&]() { + m_files_job.reset(); validateZIPResouces(); }); connect(m_files_job.get(), &NetJob::failed, [&](QString reason) { @@ -543,26 +542,26 @@ void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) bool moveFile(QString src, QString dst) { if (!FS::copy(src, dst)()) { // copy - qDebug() << "Copy of" << src << "to" << dst << "Failed!"; + qDebug() << "Copy of" << src << "to" << dst << "failed!"; return false; } else { if (!FS::deletePath(src)) { // remove original - qDebug() << "Deleation of" << src << "Failed!"; + qDebug() << "Deletion of" << src << "failed!"; return false; }; } return true; } - void FlameCreationTask::validateZIPResouces() { - qDebug() << "Validating resoucres stored as .zip are in the right place"; + qDebug() << "Validating whether resources stored as .zip are in the right place"; for (auto [fileName, targetFolder] : m_ZIP_resources) { - qDebug() << "Checking" << fileName << "..."; auto localPath = FS::PathCombine(m_stagingPath, "minecraft", targetFolder, fileName); + /// @brief check the target and move the the file + /// @return path where file can now be found auto validatePath = [&localPath, this](QString fileName, QString targetFolder, QString realTarget) { if (targetFolder != realTarget) { qDebug() << "Target folder of" << fileName << "is incorrect, it belongs in" << realTarget; @@ -589,7 +588,7 @@ void FlameCreationTask::validateZIPResouces() } else if (ModUtils::validate(localFileInfo)) { qDebug() << fileName << "is a mod"; validatePath(fileName, targetFolder, "mods"); - } else if (WorldSaveUtils::validate(localFileInfo)) { + } else if (WorldSaveUtils::validate(localFileInfo)) { qDebug() << fileName << "is a world save"; QString worldPath = validatePath(fileName, targetFolder, "saves"); @@ -600,7 +599,7 @@ void FlameCreationTask::validateZIPResouces() qDebug() << "World at" << worldPath << "is not valid, skipping install."; } else { w.install(FS::PathCombine(m_stagingPath, "minecraft", "saves")); - } + } } else if (ShaderPackUtils::validate(localFileInfo)) { // in theroy flame API can't do this but who knows, that *may* change ? // better to handle it if it *does* occure in the future @@ -610,7 +609,7 @@ void FlameCreationTask::validateZIPResouces() qDebug() << "Can't Identify" << fileName << "at" << localPath << ", leaving it where it is."; } } else { - qDebug() << "Can't find" << localPath << "to validate it, ignoreing"; + qDebug() << "Can't find" << localPath << "to validate it, ignoring"; } } } diff --git a/tests/ResourcePackParse_test.cpp b/tests/ResourcePackParse_test.cpp index 4192da312..7f2f86bf1 100644 --- a/tests/ResourcePackParse_test.cpp +++ b/tests/ResourcePackParse_test.cpp @@ -67,7 +67,7 @@ class ResourcePackParseTest : public QObject { QVERIFY(pack.packFormat() == 6); QVERIFY(pack.description() == "o quartel pegou fogo, policia deu sinal, acode acode acode a bandeira nacional"); - QVERIFY(valid == false); + QVERIFY(valid == false); // no assets dir } }; From c470f05abf090232b27faac6014f9e1cbe9dab9b Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 29 Dec 2022 17:21:54 -0700 Subject: [PATCH 12/37] refactor: use std::filesystem::rename insted of copy and then moving. Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/FileSystem.cpp | 16 ++++++++++++++++ launcher/FileSystem.h | 8 ++++++++ .../flame/FlameInstanceCreationTask.cpp | 15 +-------------- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index 3e8e10a51..4390eed94 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -213,6 +213,22 @@ bool copy::operator()(const QString& offset, bool dryRun) return err.value() == 0; } +bool move(const QString& source, const QString& dest) +{ + std::error_code err; + + ensureFilePathExists(dest); + fs::rename(StringUtils::toStdString(source), StringUtils::toStdString(dest), err); + + if (err) { + qWarning() << "Failed to move file:" << QString::fromStdString(err.message()); + qDebug() << "Source file:" << source; + qDebug() << "Destination file:" << dest; + } + + return err.value() == 0; +} + bool deletePath(QString path) { std::error_code err; diff --git a/launcher/FileSystem.h b/launcher/FileSystem.h index ac8937258..1e3a60d96 100644 --- a/launcher/FileSystem.h +++ b/launcher/FileSystem.h @@ -121,6 +121,14 @@ class copy : public QObject { int m_copied; }; +/** + * @brief moves a file by renaming it + * @param source source file path + * @param dest destination filepath + * + */ +bool move(const QString& source, const QString& dest); + /** * Delete a folder recursively */ diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 79104e17d..0a91879d8 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -539,19 +539,6 @@ void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) setAbortable(true); } -bool moveFile(QString src, QString dst) -{ - if (!FS::copy(src, dst)()) { // copy - qDebug() << "Copy of" << src << "to" << dst << "failed!"; - return false; - } else { - if (!FS::deletePath(src)) { // remove original - qDebug() << "Deletion of" << src << "failed!"; - return false; - }; - } - return true; -} void FlameCreationTask::validateZIPResouces() { @@ -567,7 +554,7 @@ void FlameCreationTask::validateZIPResouces() qDebug() << "Target folder of" << fileName << "is incorrect, it belongs in" << realTarget; auto destPath = FS::PathCombine(m_stagingPath, "minecraft", realTarget, fileName); qDebug() << "Moving" << localPath << "to" << destPath; - if (moveFile(localPath, destPath)) { + if (FS::move(localPath, destPath)) { return destPath; } } From 7f438425aa84db51211123b47622a828be0aeb96 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 29 Dec 2022 19:47:19 -0700 Subject: [PATCH 13/37] refactor: add an `identify` function to make easy to reuse Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/CMakeLists.txt | 2 + .../mod/tasks/LocalResourceParse.cpp | 60 +++++++++++++++ .../minecraft/mod/tasks/LocalResourceParse.h | 31 ++++++++ .../flame/FlameInstanceCreationTask.cpp | 76 ++++++++++--------- 4 files changed, 132 insertions(+), 37 deletions(-) create mode 100644 launcher/minecraft/mod/tasks/LocalResourceParse.cpp create mode 100644 launcher/minecraft/mod/tasks/LocalResourceParse.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 853e1c036..9826d5435 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -363,6 +363,8 @@ set(MINECRAFT_SOURCES minecraft/mod/tasks/LocalShaderPackParseTask.cpp minecraft/mod/tasks/LocalWorldSaveParseTask.h minecraft/mod/tasks/LocalWorldSaveParseTask.cpp + minecraft/mod/tasks/LocalResourceParse.h + minecraft/mod/tasks/LocalResourceParse.cpp # Assets minecraft/AssetsUtils.h diff --git a/launcher/minecraft/mod/tasks/LocalResourceParse.cpp b/launcher/minecraft/mod/tasks/LocalResourceParse.cpp new file mode 100644 index 000000000..244b2f547 --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalResourceParse.cpp @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "LocalResourceParse.h" + +#include "LocalDataPackParseTask.h" +#include "LocalModParseTask.h" +#include "LocalResourcePackParseTask.h" +#include "LocalShaderPackParseTask.h" +#include "LocalTexturePackParseTask.h" +#include "LocalWorldSaveParseTask.h" + +namespace ResourceUtils { +PackedResourceType identify(QFileInfo file){ + if (file.exists() && file.isFile()) { + if (ResourcePackUtils::validate(file)) { + qDebug() << file.fileName() << "is a resource pack"; + return PackedResourceType::ResourcePack; + } else if (TexturePackUtils::validate(file)) { + qDebug() << file.fileName() << "is a pre 1.6 texture pack"; + return PackedResourceType::TexturePack; + } else if (DataPackUtils::validate(file)) { + qDebug() << file.fileName() << "is a data pack"; + return PackedResourceType::DataPack; + } else if (ModUtils::validate(file)) { + qDebug() << file.fileName() << "is a mod"; + return PackedResourceType::Mod; + } else if (WorldSaveUtils::validate(file)) { + qDebug() << file.fileName() << "is a world save"; + return PackedResourceType::WorldSave; + } else if (ShaderPackUtils::validate(file)) { + qDebug() << file.fileName() << "is a shader pack"; + return PackedResourceType::ShaderPack; + } else { + qDebug() << "Can't Identify" << file.fileName() ; + } + } else { + qDebug() << "Can't find" << file.absolutePath(); + } + return PackedResourceType::UNKNOWN; +} +} \ No newline at end of file diff --git a/launcher/minecraft/mod/tasks/LocalResourceParse.h b/launcher/minecraft/mod/tasks/LocalResourceParse.h new file mode 100644 index 000000000..b3e2829d9 --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalResourceParse.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> +// +// SPDX-License-Identifier: GPL-3.0-only + +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include + +enum class PackedResourceType { DataPack, ResourcePack, TexturePack, ShaderPack, WorldSave, Mod, UNKNOWN }; +namespace ResourceUtils { +PackedResourceType identify(QFileInfo file); +} // namespace ResourceUtils \ No newline at end of file diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 0a91879d8..dc69769ab 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -57,12 +57,8 @@ #include #include "minecraft/World.h" -#include "minecraft/mod/tasks/LocalDataPackParseTask.h" -#include "minecraft/mod/tasks/LocalModParseTask.h" -#include "minecraft/mod/tasks/LocalResourcePackParseTask.h" -#include "minecraft/mod/tasks/LocalShaderPackParseTask.h" -#include "minecraft/mod/tasks/LocalTexturePackParseTask.h" -#include "minecraft/mod/tasks/LocalWorldSaveParseTask.h" +#include "minecraft/mod/tasks/LocalResourceParse.h" + const static QMap forgemap = { { "1.2.5", "3.4.9.171" }, { "1.4.2", "6.0.1.355" }, @@ -561,42 +557,48 @@ void FlameCreationTask::validateZIPResouces() return localPath; }; - QFileInfo localFileInfo(localPath); - if (localFileInfo.exists() && localFileInfo.isFile()) { - if (ResourcePackUtils::validate(localFileInfo)) { - qDebug() << fileName << "is a resource pack"; - validatePath(fileName, targetFolder, "resourcepacks"); - } else if (TexturePackUtils::validate(localFileInfo)) { - qDebug() << fileName << "is a pre 1.6 texture pack"; - validatePath(fileName, targetFolder, "texturepacks"); - } else if (DataPackUtils::validate(localFileInfo)) { - qDebug() << fileName << "is a data pack"; - validatePath(fileName, targetFolder, "datapacks"); - } else if (ModUtils::validate(localFileInfo)) { - qDebug() << fileName << "is a mod"; - validatePath(fileName, targetFolder, "mods"); - } else if (WorldSaveUtils::validate(localFileInfo)) { - qDebug() << fileName << "is a world save"; - QString worldPath = validatePath(fileName, targetFolder, "saves"); + auto installWorld = [this](QString worldPath){ + qDebug() << "Installing World from" << worldPath; + QFileInfo worldFileInfo(worldPath); + World w(worldFileInfo); + if (!w.isValid()) { + qDebug() << "World at" << worldPath << "is not valid, skipping install."; + } else { + w.install(FS::PathCombine(m_stagingPath, "minecraft", "saves")); + } + }; - qDebug() << "Installing World from" << worldPath; - QFileInfo worldFileInfo(worldPath); - World w(worldFileInfo); - if (!w.isValid()) { - qDebug() << "World at" << worldPath << "is not valid, skipping install."; - } else { - w.install(FS::PathCombine(m_stagingPath, "minecraft", "saves")); - } - } else if (ShaderPackUtils::validate(localFileInfo)) { + QFileInfo localFileInfo(localPath); + auto type = ResourceUtils::identify(localFileInfo); + + QString worldPath; + + switch (type) { + case PackedResourceType::ResourcePack : + validatePath(fileName, targetFolder, "resourcepacks"); + break; + case PackedResourceType::TexturePack : + validatePath(fileName, targetFolder, "texturepacks"); + break; + case PackedResourceType::DataPack : + validatePath(fileName, targetFolder, "datapacks"); + break; + case PackedResourceType::Mod : + validatePath(fileName, targetFolder, "mods"); + break; + case PackedResourceType::ShaderPack : // in theroy flame API can't do this but who knows, that *may* change ? // better to handle it if it *does* occure in the future - qDebug() << fileName << "is a shader pack"; validatePath(fileName, targetFolder, "shaderpacks"); - } else { + break; + case PackedResourceType::WorldSave : + worldPath = validatePath(fileName, targetFolder, "saves"); + installWorld(worldPath); + break; + case PackedResourceType::UNKNOWN : + default : qDebug() << "Can't Identify" << fileName << "at" << localPath << ", leaving it where it is."; - } - } else { - qDebug() << "Can't find" << localPath << "to validate it, ignoring"; + break; } } } From 0ebf04a021c633cd6a3cdd76514aa728dc253714 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 30 Dec 2022 10:21:49 -0700 Subject: [PATCH 14/37] fix newlines Co-authored-by: flow Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/mod/tasks/LocalResourceParse.cpp | 2 +- launcher/minecraft/mod/tasks/LocalResourceParse.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/mod/tasks/LocalResourceParse.cpp b/launcher/minecraft/mod/tasks/LocalResourceParse.cpp index 244b2f547..19ddc8995 100644 --- a/launcher/minecraft/mod/tasks/LocalResourceParse.cpp +++ b/launcher/minecraft/mod/tasks/LocalResourceParse.cpp @@ -57,4 +57,4 @@ PackedResourceType identify(QFileInfo file){ } return PackedResourceType::UNKNOWN; } -} \ No newline at end of file +} diff --git a/launcher/minecraft/mod/tasks/LocalResourceParse.h b/launcher/minecraft/mod/tasks/LocalResourceParse.h index b3e2829d9..b07a874c0 100644 --- a/launcher/minecraft/mod/tasks/LocalResourceParse.h +++ b/launcher/minecraft/mod/tasks/LocalResourceParse.h @@ -28,4 +28,4 @@ enum class PackedResourceType { DataPack, ResourcePack, TexturePack, ShaderPack, WorldSave, Mod, UNKNOWN }; namespace ResourceUtils { PackedResourceType identify(QFileInfo file); -} // namespace ResourceUtils \ No newline at end of file +} // namespace ResourceUtils From 2faf8332ee8523a5c097c744dc8e12e86d304230 Mon Sep 17 00:00:00 2001 From: byquanton <32410361+byquanton@users.noreply.github.com> Date: Thu, 5 Jan 2023 17:08:41 +0100 Subject: [PATCH 15/37] fix: Add 1.16+ Forge library prefix in TechnicPackProcessor.cpp Signed-off-by: byquanton <32410361+byquanton@users.noreply.github.com> --- launcher/modplatform/technic/TechnicPackProcessor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/modplatform/technic/TechnicPackProcessor.cpp b/launcher/modplatform/technic/TechnicPackProcessor.cpp index 95feb4b28..df713a725 100644 --- a/launcher/modplatform/technic/TechnicPackProcessor.cpp +++ b/launcher/modplatform/technic/TechnicPackProcessor.cpp @@ -172,7 +172,7 @@ void Technic::TechnicPackProcessor::run(SettingsObjectPtr globalSettings, const auto libraryObject = Json::ensureObject(library, {}, ""); auto libraryName = Json::ensureString(libraryObject, "name", "", ""); - if (libraryName.startsWith("net.minecraftforge:forge:") && libraryName.contains('-')) + if ((libraryName.startsWith("net.minecraftforge:forge:") || libraryName.startsWith("net.minecraftforge:fmlloader:")) && libraryName.contains('-')) { QString libraryVersion = libraryName.section(':', 2); if (!libraryVersion.startsWith("1.7.10-")) From f04703f09b35fa7449fe368b04565016e6482786 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Fri, 6 Jan 2023 15:05:19 -0500 Subject: [PATCH 16/37] Strip certain HTML tags when rendering mod pages Some mod pages use certain tags for centering purposes, but trips up hoedown. Signed-off-by: Joshua Goins --- launcher/ui/pages/modplatform/ModPage.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp index 677bc4d66..75be25b2d 100644 --- a/launcher/ui/pages/modplatform/ModPage.cpp +++ b/launcher/ui/pages/modplatform/ModPage.cpp @@ -428,6 +428,10 @@ void ModPage::updateUi() text += "
"; HoeDown h; + + // hoedown bug: it doesn't handle markdown surrounded by block tags (like center, div) so strip them + current.extraData.body.remove(QRegularExpression("<[^>]*(?:center|div)\\W*>")); + ui->packDescription->setHtml(text + (current.extraData.body.isEmpty() ? current.description : h.process(current.extraData.body.toUtf8()))); ui->packDescription->flush(); } From 8140f5136d7389ea1c134f7eb84caaefe037a3d9 Mon Sep 17 00:00:00 2001 From: seth Date: Fri, 6 Jan 2023 22:28:15 -0500 Subject: [PATCH 17/37] feat: add teawie drawn by sympathytea (https://github.com/SympathyTea) Signed-off-by: seth --- launcher/resources/backgrounds/backgrounds.qrc | 1 + launcher/resources/backgrounds/teawie.png | Bin 0 -> 187972 bytes launcher/ui/pages/global/LauncherPage.cpp | 5 +++++ launcher/ui/pages/global/LauncherPage.ui | 5 +++++ 4 files changed, 11 insertions(+) create mode 100644 launcher/resources/backgrounds/teawie.png diff --git a/launcher/resources/backgrounds/backgrounds.qrc b/launcher/resources/backgrounds/backgrounds.qrc index e55faf15e..7ed9410b7 100644 --- a/launcher/resources/backgrounds/backgrounds.qrc +++ b/launcher/resources/backgrounds/backgrounds.qrc @@ -13,5 +13,6 @@ rory-flat-xmas.png rory-flat-bday.png rory-flat-spooky.png + teawie.png diff --git a/launcher/resources/backgrounds/teawie.png b/launcher/resources/backgrounds/teawie.png new file mode 100644 index 0000000000000000000000000000000000000000..dc32c51f9faf5a9c03a037831e770c336816bd06 GIT binary patch literal 187972 zcmeAS@N?(olHy`uVBq!ia0y~yV4Tgsz_^Tqje&t-RgGph1A|pnRY*ihP-3}4K~a8M zW=^U?No7H*LTW{38UsVct)+7_i=J9+O8Z|dn$OAN;B)$*%jSEI`uoo>RNADqS#9-o zLr=}vkCPgHn_I}7c>U-8|Icy%KimHo4)Xc_^~o(S{in~aU!E_=K7Y&a=huJyy=>*mkq@4q;I ze*eb5Po4JP)2MWx=>Kg!_t$uFuaD2AA6{oYc0T#;((S*#_Zyr)e>~p)zcJ6By?>s^ zZv4H~rheb|>;LPt7H>CxKRL-pbII)b;4XXf34dm|H@{xL`RkE*eb0KyC!dZVumAN``$@f> z_WcY0?^@fx?Kk*&`TFU<#$nh0PQUn{?f>1kf9K6yF5#cJ;`I9VUw<|3r|;=|SyA)4 ztng$}_`fv0!2S2<-tS!z*K%mzb=#kNo%kodtU4@QCh?H>`R^Tv9*NDbSQqhA<(TN@ z??QoI76N&-DH4 z|9@k@cRhsT;Xl(KEv(-~7dM~HwJ82~`t*#6AO1;Q`NR9+{r&pCPxq*$8CaiM=8>N8 z{Jd%!U%hkF7vGXctuy=WEhS$4D`jl!*naMgkH;B?&0;}(s&`C}Nii|soU!2G+T&l2 zoaAYl^Z1$Cb!XPPrPpp{tzW$K+m<_CtJiM5=hkn_IBVzhxa!w? z`wv$0t+V;@@*wxI8HLM!o~b!&^g3tr`HdX&zpmMHYSrqs`;PTl=YB|@9$S99wqKZU zVadG7{+3_2Ts~jHxz#-O{pV-f_k7LGuRkuoS*&j9+xYtb;+w_l&PM%7J0*V2KCO5C zwO_x594$_slN1(PuWs=8s;0t%#l>aYKiFKHS$yst-=C#2J5Rou^Y%fHVe@%T!~GAx z---R0?lyPl|Miu-UwvL)+5P|a%-wT#{V#gX6THTQ&FoN>}) z{+O@*^6L-Uo;x((=FrQXZ3mT?n}j{M$#4Gi$|t>`zdS$YaNb^hdY0y1?eD_(WwlqB zuUnpbY4MjIciz649L~4eV8Qc;zmMn$pZcr2F7Wxfwa@>qle!;pJ|W@pE9I&4PVakn zXXds5@x?c#`M;jqdT>Up;`i9+vyY#9|99H9>{`V=d#a);=bhN2DzBch@rRb_p&tn; zx$ldE>Wi(k&z+sTO+x*9K$3Ev)Wd_TqofroD>(O`IC1?p`@Qqh>vkqvt-P}BvGMKC zUw+ycpV{7Mt!ei)?kR7!uHxTyR}a2t^joj{K}zl|@7i^f)*o@WZZjk7iIcbg?4?i4 zr%v_1rTu)?HO*)D_h!|5Tl5}ZYjd;WefoBz`$cAJ3R*W+%u@F;YKpK@IX~y=npuaf z%Y1*cBxyYREAuQ}D7bOUiNs~UjupzScwEQ1{Pl0YHm6r75_`5kw+w#8qnN?UI9G6{ z#Pb=79mR)o-fj`#N-SEx+@X1iu%?rk&FjAIDN1Hi+m9#o?A`f9F?{FbszVyW6+5aG zCK_FI5@@-bt=p>6H#>jY>o0$WloI#0*2wI?#JVu6^n}B$x3!jo-cV@s{GXkz3{x#;bujjOoN|W~jKPgB?saO< z_vs!C*Pq?}Rpnnb^TnB?hu561~GjCY7-H`XO&kp8-9(@^! z!^{t38gnvis@P*5+Fj+@$m_gkkM+-=K4}}Ksms1AZ&I4Myl&^&X?_XEIu9xp#4jv6 zCU7n94vRz80-FquQtn09HkG~A-d}3i)p~kTzKUV_k`W@wKG+ zcsep`%?!SCwC!4OUB8M))0Mwrd7A`Nt2JLA#Kycg+x5j=eF6nE}YgU>hhCox*gVNjXEwZYj}xin4qT>B=ki@x9g8e}|? zZ2lxRq550*37I(NgtTQdPj8aA(;L>*D1S-n(%p=<$x$*>9k_QNY+!z7Q)oEhJ?Gop z7mIUQ*cr-I)27Us#ruWv@^8lTd2-nenK$;iX`E@V&RC-9JXNlP%f+tY>}36ai%z_& zUu;}ww{POlKTT~DTXUmo#iiC2v%B1}U4L)-%Vxe79?6g2{M@(}ihpX{F;V)*%4fcU z+c&VyJh0&5H0O7mXZ9QnZ)4m4?bynrTAqIu=jL3PbMaFs`#oRQt62&6vi23$^Rq9U zC>#7#no&>w?aSS%38E75tp}1jPF&z9YUIymssE+;T8)$KoY;%BbsLU5zZ30bwbM0t z{dLlD4Xcbzj#~xnHGbVYbMB{vMB|5^d*2=vatb#{S>&f2a7kRl8Io#J;{E>XB-T6s z3fkVC)mE%*i}$&i`*Dr-UemqoUSCDIW4S+ zpI0hw_7T|^=F%3}t@S6uqw2xkV<+FcUis#vRg{^nc;@pyPp1TduPr)fHomR&sy1YO zo$#=t= z`h**cPd`)SHt<^2Dz5aTk>72h&@>G<7oKIiLRyr0`h#p2C{D_B`2Sw!rw7}Kqrdm& zeP+z6XVQAFE-Jrc4Rhz6JH4fqNx^HlHQwHIVA(QZ{@j`^H$U%XjySMbG4{b{^X6|1 z21@yM3LITbSJv<^^weSIpCNy!tvh+r0mEY_H%?DKDDm#6REsB*#gtkDxw@Y3ZY?bx zJ3XE*kmr2%jaBC&Gk3-P0)v!>E&4A^(iVTr*dZ`uk&tEppN`-TwFtMO19#aDeNp@U zM0dt%9)-{Q_~)@+ancw3{o%i!_>q$}HG3MS+>T-5x&1;Yp^x3b&pQ8nfV@(roXfFZ zCMjuN+51x6hhEn{KAQYt%7-7_3uN~=^<}a?J6^WW<8AcS<~^;a*?JBus5vC85j)j8 zhj&4W@@c&-%vHiW9F|RXP}ywbQuW}u#0);qv_}hB>YTf0zC2RD(1=6b;q@{5eeH?+ zb|lV`T*Z@p^OwRojwyURtA(}oG|lB2Za6kO8J|(z)o=eoORhD;|Ifj;__dAsDw=N7 zzdNfrt;%&;*Kv1K(y^6?U%A$AF6aGyPjao#x-~3Ohl|fVV=>peV&2Dm`%m6Q={rBJ ze5hTZ7^qmIpL@nalcld)Ftz!K;IXG^GgK5ZG!@(o-ThXocC8t(sN ztMJ(Ed+HU%ix*z65HB*`cgd!*Zoc&96HkQi`dKpH{&@R|)+eETu4ffoIA$FYnc&Kw z8Bno2&oTJT`pJpR%O)7HB;=;8-yYvC)Z@wR@sH(O)H=zGs-i{TJ&!QGk>qXR-@_+Z zbb^1%p~WtNH+A!PnUuG2`%Nf}>iOhmCijJBWlMsdn{UF0X=SU=lzg0dW0I8Np)UzN z3@J-}j_HLT<@M4R3hwwcWv#aPRqg=63&(lwnmCFp_0FtXHleXvC;L%^nOLx>@g(K_ zTfXbZy=>Dx$E31+7w=Z?EY+k_`Gyz8<=A^>tTsN|Sa7VmC%5&%*^k0@PfVH(#pZu{ zo+hyI+pm;QVr+3f0Sc+>q&w8Mc5P$ixjj{ee@D)d$mC@oy<&gQRA<_l7k`{psg5nX zEP958n)WY^#H|0#4J!3hAGt|6$@CU>RJEK}FA1wY%*S4QhGE|9<(V74&7F~T=ZMhL z2MRn42VxZyXP&Bxf5&<`RrkeCbC&);$C~GVh+&yNxyxO9!s}jT7E`$!wOoDg3p^j} zo_9a_!me@ox(cOyFc;UHox^hJ%Uc(lv>C{iSx=CVOR5-Yn+l zG(W_q7Q16tYtKQpcicVurn&W|ogP^B$n;)Z97lX#(KWQ0j zQm!!FtK=2Azd~>l(|4oA62hm%+p;*XvDU|xSTEl187DMzJL{k6D&N=4w)f~i>^t}0 zmLy5Z^0P60EGHy_?&c2=japxslcx8dBe<4+=m85$OK zua9XSm41=uwcH*&)H`#ZeY5c7Uq*inT2G#Ic)S06Fq7!-`4eN7zk0PmCB}Fj`~3Q# z(hcf||0>;^vQf0@u&%P^&lAZhQ?&n?=Pu&R{WrDTlPlZGzp0tuIMqaX_PT@F@^kDJ zZ*4qWtsd82t;Aw?&8^vH#le~TcPqEevw!#5Uw-}m+Q#jT?If2m!r zz5b$JQTb%nBxe4p1{U1nawp$Ktos}3;v3>N{Si~4?BOhyq)o3D9kkwe*M2)+Skvra zj>EEMxuR2;S?~X@@jJjZx>kq*P^M7oSWuB+8#AJ>7Asg$n z{I%<^q|GuE*uCBLw%E7kxK-26<=?Yv7Ru&xQN6~$;NY5sRXUQ7E^jaREySh#raOGm zj6{wS{gN%yVv@Zg6O_K#}@i_^A_CX71MJR@jZE7JwV4GDCMs+$G3}@7_yBUw+d)Y zn|Z$=aaXZ#tD}|kN}qWL-*!(t{{5kE8@B%_tGvk(j)YI5Y_i9+F2t-(c*W|p@S^h0`jGH-PY=9{X#1f1 zdJnVJ)7R~HTvG(u1V48Ds5D;-eFnNbIxt8h13hj3=Uc2 zAAMVo-zxGdhZw^VGr;t_s8=HZi~ zTj4Knt=rFgMaHp9%li6S9=#{Fk9WzN+^_f^zF^%2SI5oD8@j95jvG`SO6!!~J1^zh zw7$AMhmMNR%DBPup)FeVKEotek9!do%l@C#)2#WY5zdkqp%8o7NGvVoz%S80wVk(E z1$>m2>dlFr<9>|kf7IS;jUMsOmG)(f9N7(`D~x7FD;!>=9Da1Ng672IOY%HrcQRgE zT*IV%Xl+Yf_|$)l=8oJR($6@P6=zys6LNIVb88X3@%!lS9b%W{mVsyOi_Db<@MKsgzr%d`Q&L4S@a_)Ldqo=V2`yyK*iM|Qi ziZ;dXSD5^<`Ej7%_Sb=0MS;EYY}J*jHi`+4nS3_IoI1=b{czhW*MKILGc8ja#Kn@i zI<7iJER$Qmb3@|(6P8PV+fVnHnR;OU6qhZ};-?udy3zOAB)DncP^SxvVp(KC}PU4 z*fVe93)6S9U0fV$RU*D}Zlb7-P}mlm&sR%Bg!YQnPh?)QI_kfpXR*G8$L>8BxD}ij z88--g?{DmG@jb$86!YVSO+%=La{irC>z}MYyS{Ff4ESL4iB)@Q*KVb0pB3glSk1Fg zbT9jl){^tjF8w*CeZyESi&>;az>|gloJDrM-my&6*AX#EH#yz5y}tKxQp1s(4D4({ zino8T+-Xf=NLaCY(ae_HdY_(fS4r@%jM@J*?Nj@7g+&P&9yeDc8!!m4{cg=jJLGY2 z{^aAvJ)QPOg1!dpo=4l-3JEQi6?}KFv_9|pqd69?XN0?V7Ol=#(mr2&DYNjw9BY$0 zu1i@C?l%8h&g^oPU7~8lu*z#%`iCzLORBtNyRH5iDJbn05d6Sl$?ENLXu-XwRa?&; zaMWVV`ttH%fArUuAKp?k7|qnKbnj&HWb$3=*m?WX-$}Q3ttizz_G)k7`qag@;zJG< zYR)o0-T#(}W9jWzK8=Si#0XfvVX8U8q1f`z_Tj6k4O`|o3)~dC$eplj)>7NoBAaa< zMIQa2cy_yMR71)1>#mOvsccz`^ek8YQqtoUM8Y`wY zuVeUI;uBypDKM42VDB%_Cx$K(6T2ghseFlkmngKz+>0qCdx>c3V=sfpJ|A{P#m?}l z<9fSj^ZKuv4+3Ajh~}Qd!TK!0Skq$0i5pQ4oi+watm%%ouK$jf&e)bKlk{<}kWi)Z zLggzW?{+jv-r?8dj?Y!N7vO&P+Ug1R>@zn0;QD!cPSfgL7YizDSF3v6mDM+z+Oy5J z%bT&Nr?+R~%sGaucRkg6K66R>#S2O0*Bv_=CQtbPd(oZ%<2$d8E>T{2@w0+YvYL^O zI@hzm9~N_b*fS$fHkj)JgVj~PWgkzS|IBPq@cvAZsxoHRUmXcy!^Tb%Aaz2Q?0dy0;kablbPB{X??TtIKxWEVjQ?Zk)Jkc=gE14W??h zd=Dr*ur!i#>|VvWE0FEA&~f|S3pU2z{^s5=H=NJl&+C;xr&X-YHeNNOYJs^>;oJ=l zD<-OW>-TbqM!2N+Bt@AyzioN%FmcK4scpiQ z@}GG2R}^gD9$t~V>P?E$ylnRR*e8C=s_m-Lu@qfnj6 zv-Fpz!rvWvarn=DDE!{vC^SWV^R@yg#2qPrs~uX!w`OqMMqZ zxK5qitsEOz(=utH(WlUx#>@y{Od zeD)QK=B#OH<2&*p%KP88Vwu#rDMo8HHEou-$nd;KYFAvrTOePeX=<0Yc@zxO)3{lV9T4_qvnCtf_d>QR$^V4uXcK*9afb@u7*dG^}L*vryE>dEA8 z#&c4OPA}g%lOfwt!@hwpukD&$xBVwugJlNw0+wrY7fR={?7t{rwdjZLi5U4<=L@f^ zTT;T^T+`OB?>KqBQQRe9_r=5W^*7ID`pTG`r6(UCHl;B{FYnsEBQkDL9?1=7Q+KA= zPGz~7|3qkqpaSCscW%`~;-}h#FCF)LFvYj{We{`Iq>Fq4aW|)Al+D!NEM28`&v0Fs z(xSOe9LM^e&h$|hUuRx;FWup@(}aUj(){0rc75hsC4NC7^JB)3W>&*1yk!esuGi|b z+RLDGOYQzzwdqd5^5LPrExg8xi3jSL_C`+hfAZ9gwbnIH);8&_WB2(l_fpMwbDUkm zK4aVS7dwCHn?1hxOs+4p+}75EZ+-8i6a3Ptj$f*I-c?PQvmtB6-PG^8I~E=neijk` zsV*Z&`p}p3jfxtJ^mlM39TDOQjrn=Iv^!6Al5hOZ882SFO-#_MUNvL?)|eXIMFEea zeqX!a;J~Spb3^&qx{~ns6IX}*H1lM&o0Ovw|ERj=?S^m9b7f|T^3H2!aQ$|$gU=;{ z=l|QJ_-XfzxCE`F+(IuNJ)alK8TWftnF5O&+x3eQO-ao$HTx!PVZCv5d;0><8*N{k zZ<%{7ZAgsIwp04SsV6Hm@kmgQ-!|_#7yEu5y<=Z>CGY+Az48ufeu{Ou9ot*CB~%(l z#+97;ki9!|?^l!c+MjtUKlx%F6Srzczz~H*K$A0PcX}vq6p8x4u^zpUBX4ceQG8>;Cw0n}i zxO3h1g_pkv&tnbG>`LI`U^{Wvfn}43!tFe>6IVACZ~pRg?RQld>q(N2y{s1e$>n-$ zq2KVot@Z37=2an^$|L3;g%dbA zUM~J&yWvR2Nk6SUYzHrS%rTK@W0!C&5V&W^7stVO<@7EI^SfLZSWj!o8_bxx#Z9H9 zJzMD3w{MNyQ}dOx%AP1YOf}>$D^|!4-hX1Z$%I;a)|s>Rv3afQ-p^HNa=Scn{_$h& zlb6dREdN}|7(9K`jMJ$b(_{4(`EV@TEz&ye=zSxL#0Mug@1D`MR4iz5ck4F)2;TzF zi>4g!Ob^WbbK{`XlWki!so!|{L8)-V^KH`?9;!F>vS}-vcS$E_?uEY!Tq{`8l#62b zo4c;66}|J&t<;Por{3K9!a4o?8M#YYUv;hBt3Sb+t;wkC`!gZ^%`r#b)hM2N==uK3 zgb%HIR9|%nPP&bEYEP1Zf`Vf?Vnt{@5!hRCrdJwJpBhfN4p| z_M;njo;VSEJ|$UV*{Zea?|6F@c>Id1B`;?lkFuG6;((UHuIJGcXFE$hJ=tY>OF~~k zy*#0@lYMKGHU9lbsA|NlC>?xwMm@)y$&ay~Dc+0Xsz{I`q6+-TjoX%Y(>_v9Z* zRb))tm3upW{^Ul3yR)~Z-A|FPe6ww)Y9qt*8Rd@?YHBTd`nVPsDQ>S>67C^0L5`>0 zkdJ$3>Bonxd?A{CK1qBYhoha}1=(A@mt?s3x++FI`NaMSg)9q2T{ONc9JYVz^+11; zp|)nqXZiB1neX|m?t}cQsI3;2>HU?yX6By)WQ`}q8oa7d zJf;?X$3c2g-yLU$b!QLHj#~WaxBKqO)?EAD%a*#bJy)=v<@$R4Ly<2>oh`x+3BKq! zow54+7qivMd#e2;QaV1x@O~>OtkaE^GMoQEJzd>Oa%W_WEaR_&&Br&%p2GHCYvcnIYQ+xRL{oJRoaE_uc24))(+qOBC$BcItIWkgX^AOyYkRupw9Nf2lQ+HRgJ}e3$nUpO zd!u|OvT;6<|IN8m<5Kc-v31|xR<4fN@M)?-ZH|rUbUT$PrLG-G`#BgNNae={I3K>s zF}plhiJf}_zlNFk!x=~a>c!5u+kZT5Plx4%+p*I&R&~FTV9?E+e0=wT1D#q4I}ZGI z?8r|$8=K(0(3zv=^t-*>SMLXLv7~f%G#sn6EnA+nb863_BO$(Su6mzq=YD$h%j4;7 zC#ycruL>U?s+&FT>OJ%&TEQfLk*ma>ISvaoYH}U6xO~}?y*yc3e2wY#Gx_h!8mDi$ zBjflWukqK;&+Iq9@Bdlx_qI4o(9N(V>LF}@U!--;QfYCYem<9D)v>$3cLd)Nn)3U> z2A_^6@7B#vRb0e#BZygGUr{7Osd8|mLP4SA*C(F@FIhHid@MB2K*Z)&ZmGP2VXs8U z3ZCnM`D8s`e|yI<=IJbtWFk`+NBQJUt6uL?pk(p&l~2~sZ_G+}CcJznsCwYS zBC*}iy93(wDwJ2tFV4x|`PiP}LCk&a1u`j$<{xEuTinV15z1a+U1N2tKmRa?#pVRj zi>Vim?e;TXyPc8V*77YL(f?OjGv+3H zaQGBWYd>;j0dHZ|)qjP%E8ZL5l|C`~L@$TqgKv!Q?w;Zi>r2#rd|ILQk;vLkud36R zC;6T!tUYDE?ZvO}e@|>&d_2RM`*2IjS-aNX0-jag*8UR}JELBHJ#r~}XU?0S$BGK# zPu_bjRw?P(*#F|)GY9o`7nQbca9FrbE>T`QM_`tUz{1rLCrn%PEwh*Z-2VRWxdiEZ zhp+8izxlc5eW3%%?vj&EC_UmzYtP1I&CkksXhX8M%q_0es|kB!!o zFM8HxCS~pW`thmR)BkfG|Nr&)Ywf2Qx*i43mWLbJ@|kPf9NwG8vZwm|yRU11+-P() zc#vrj>XET}o5J_W>l{w)-p1Y5FIHh#<9TWRmI-yAZ&zQtdCnr^&7SHhJ5QXtU%kV1OZ>J! zV&0cN`^@W=e|quGo6k?~RrE>bXs0aOpz|@p6#5N(x?Y<$h4**xy$1Z)4d8 zA?CFFy=v~q->J-fx}fbFa7l-PxjV-tp`3PSF%srZ3i~>K9&V->W~t=HSDl4X#W-W6ds{kye$S z*DhWD+w#NoyAK{t@~nS*#rhdvNa;>3r+d5PPsmPv%*^wk>&fH!t5zNfZ&<81HI)0F z^ZNVp+oSjYu9n`hHvXzWk!s8Ax?+2&MeC0}xwY!3L|W7tscA0Pi;jQY{&H3$^XJ^X zs@LD$S(o_w!GY6ZHd9y=Dg?eT`idzt7#z^Z3Jp5W6;dLNh7$3FH<(-zl;eg94+3CA&+WsB6=eX3z?a~AN zHsObAb<^E0cBbxVJ*M*LU*5rZ;d8b-GtY$uro8$u=T=wG_*i04C-I}fA`w;<=gB-er()-f_LKOQob7#e)PQS^0=?Y zrx!0H;^Gqd21Gh6eXxR;)mx9N{$Y`x%l?fIJEg}FM6GUvZ|d_KHfs=47u z%$~=)POGbS)h0aHlJe-2ep)w=!xW#nEE(T*xu2)3zEt?J|F&P0io>$F8x!(h9Avms z#47rRi7DeAzwA!&j#Jkb-LAVSac(=y9q~11US9TM>)GmEFQpY49_f`=?Q`?vDNucUbWen1;pWUOt{gcV zw>|Mw{cf^qyL8oK20oYdvlD86*BH)Hxb;~>tzxBg)>gxbI}g3z28x{4yP3eItFbNh;q%9;TiSk0$XCbg zuD0KK$y6|CeK)tBtCZlLL^kP#y|WqX@7M_C9NEsi`rd(mj}v8DR_JmEusujR|D&|; z^pOPn%Ln#O(tog|TK8w*c7-IK1L6+*EBww(w&RJ<`@3<=r%%_nZ9DWu`Cdzo!uK7E zy7oPa-ST|GvfFI?om_MtW;d_;%-E;uYO=#RNSk+h}HzpdhxCT^RQ-`vPs=y+V`v-!*F z?v)bG?ZRst-aKtny73_UefImS%ayJ7C9T!oYGW3V8Emj7cefDR-Fcn|s&+mTujIWX zmHYG7^AEZ~IhWohX>f*27rnFV_I@MLo2li`dM4StN(>RN$gen=*3s#p+z`Ke3FnUa zYE7kU|6fVF&>`xw>FHIY+uIY(cWHd8YY_hSrt5me+MlH?5g7@0I(EKfv$-vECvDOy z=}eQ?D;1C3y6IF_i&@US?{99x5~BH`mRK=DW7k)omR`F_2@}{yxZStf8FoD zYsnJjd>nQAtr_nZ>lN*bj7Y<5q3xMX}#@u|A3xkFyV-k~)$6I(5g4-=&p{Gh-)a zr|-Bs?~7LUoyxlC(hbfwYZg2#;<$Iu_UPTVcS-$XMLn;XioG^g8+EKRT6~H3bwnsH zd++l*zrVU_9Q<*l$Z6;8I*B_fQTn>e80OjLHEg$E$NTza`{~>3j~%7_zEjly>_46S_7>ZsYc}grqZ0pH-MmxCEG=(-B3I|%wi;K5N1F;>h} z<{s0UsA+(M>qXTVE+HDDyg#KeqOWQmNRd6AN>Dwp3t=yCmguv+huH8+%l)_pDzcuudJb(JmyDGi!cPdyIX8N!&=yuHbarVO9yT9eS{$AYuxP9Zcj4SJTuRr!m z@ZG*TVp78ceQW#I+c)1k`}jkxOxo1D^WXhFS!Oul!I2N!Z}m;66$)e9Yi$_t&LnEv zqix)Ixx%%{H?wrVekgkFe0v+0YX8iY^E8*7Y!tb(bK~1y#TBp1UCt@I(s>dismicZ zZb`V>J-KkVrT>n$B#P#`7Ig2gJ^7?#&2zP_zk=l}?znB-pLOZ$>mM`LYo@H(FDvg{ z=V_t$!;X*V5!*5;Ps{fcP1FPzKA31Iv9?C9d-jQiFQqP7+g^I`;LZK}`BvBN-}`d# z%fCI#e;4js9KNd0(BbRrSvG(FMB4nEUS~TeAouvYLndBFgtMGJ1+d4Mh;Utc=*su% z>SlL2rvpsNZ(j1P;VV(Fs`&h-%*i`?uetw&lc%2=ZG0ZR!Z>253EwBi=;gl)?mR!x z`@4_D+@q24_p<486nE{PtShnG!f(smi$~W^xN_sgn&QyiA?c;enkN`}+8-ZlSuXtA z$t>b$nO@p;Kc$JEN{%;Z8)+Q2xT9vEZds;yUq`vw>h7Y`E{Z#S1J-%#eOuoC(J@^( z<XA(g2oCjXQ5W^`VmtS@rq24ktg-Hps43yUtST4By|dfQv(IXiR@b=4l-rtm#5 z+IRNdvVhfI0WYuam-FstIUTld^WUQ{L{il9qBnf-b1&NMd4}I+SKZrfNiJ_ctFXV@ z?6h~9?~09Ugm=%Kw&3r9K=lY#@7I_1rOs^=REoTl8@bQw>MuUE%?Cu3QyN8fJh@Vs zEIvV>v6OxLdgpU2#}s#*z8d=P++)6?|7G50&l;vT&tb1-{%bV7R>1vo=#{JBvyV}U>$BcFxtZjYZrgy%WK~(O>q}?u&4aaBo%um{= z?tJsGV~lut`==jbdO5AN3(l%H?|hKZGtcZxuD9BgH_e;AUoC1;U;Ci*Ztq0K6}A7f z6y3h_`M+H|+Aw>y({z$tvuCR^?ksj@;so5gf?O?vmdYi9Y6Cy{co^Bct7U)b9o z$jOkO9_dziy+H5V5}i1w>(_HWgb2Slw7L4t z$|RLL0iPaSpEPaT-Xph@)XZm{Vph=kbwjD#%gHU%{_f!ebKm5*PmLC}sX9{XWPRXU zsLt!%=IeLwy|v45k*xA}F@N!oYn-kp{Vv+|CM4xl+tCg4KhK(Xe%(ip$qifn*GhB{QCWE$|2Uy8=raF zs#+8_`9|IUrMsHvbh6z%X%F|3TPjRzc5XegPXG2QN#pa+T28BNZm)V^Z}h(PVAa!b zVXb$^o(3$xv%>xS&9@JK%Dk)9+GV`Y>(Z)({k3}Lhl&>7KY3Dl+2XR!xA)luI@gMP zeX%HEJ-hIi(tL)qc`tTUgqZGbkJ&1CXsulF+S=;6gtOOdQ;r722(7}ZxY2`K&e>ziPd*i}ojMoUyE^Hho^&(XQs(_Eq=qOU}6~R9kA@VSP^i`i2chH|w^ENRS$yX9p(_z@ zy5t0(7?c}dG7W1 zYvRBE-fp^Hs<}5^v2b7R9kcz$7pDFHnYMTLu9w+`EYj=dANJs~{I$w4aohU;w<5|P zC$Cklu&ub`rF2+GjB!(6^_ha%hc8Plie2+}?S#H4gq%qzDev0ReqyT2m$>br@^63TY)DLc z9435e$B$fTp2Z!OZY+^8vD4Pw@>WT7xe#k{tj_*^n#}HBg^FA=A3w7@{KxvsS=~8i z9XDd@?(*c8^q+mt{Jv1))n2nV+t%|(1+TAY+Pd-cTpn8ic@Nh|_SJfd-+%T!S1P^2 z8F09SS>g#<8s9-yzSPX?W#!Zs@!%m62cWH0+msyKfW0kxKqcZGNS49O8e-f1(qf++BPe4@$i3ZlK$71-*@1b zj@%;aw^P3cFt|vq+GZPnnCaCSUWTxLaV>8rx!(zSf6?Gyz?No**Nk>M9Fpwyr({IQ zxZE~9cbzM?|9HXMO-(ts*Ge#PanJh3V^_22_o3C#Kdn@5x~==J{5IPXO_vk3(lf+@ zZY-{@c=vec-g)~DZb?a5f18c#+ue6s33oU3x_@i%>A%_+zxhq0uusaT1#TQy9vss) zyfnKZ$>n?DXMvhSxi8nIhc2wkjXUyPYyGiv&0D27I775D+gwc_G^qqy$+xDIo?p}( zc*2fl#<3I0$L^=q$IUvuHS70=yR*#nw6`{&EQ(c(Ec{XS+kB4ir;4qwI?YcPyVxXi z7^Xh|^m3i?Zp|4d4@}&3_w%iFLW0GmyFXvKJj-^`^=%DNHjyb=^1o(un8sb%wfl{D zQcmR>UV(-K%4X#Oa{T6(7G2!DJN4boJHPf%n0(DS@B5?O!gs~)y}#gaUhUD(*qaUW z1=4;O8XpO@y|>O;igi|@@ADIWE-N}9Yh;mK6aTYoo`?7KIUXS_cN2cK zx0afl7~C&QUSW4A$YXcVsik+%{?biQl;^VNomcT;lJvK(MSsr8NfrBkf3f4NC|A>~ zyF3QlmZwX%v&S3Rq_=cLyiB)mI=y9brW6C`odV|acOUjk{QNODcj4*NW^e>>`gLxG}<%_Ak_C1si^y&h$+_g-arWS&_VTlQy_*U{vMXYW4V#ArC( zCUU0Co;p4^-I#;LFAa_I>K|Js*!$Z(*(<0oyY#i9?}=6KG(#m#i|vHk?``lta%HK< z;p>lPBpG-|Zo)>C3yZvN)Y=bWAS(>HVT^hb9rzFmCx zllau-p`}m%KU^%j-NF7}y?xL+``69a>mw{`Vh#8Ilb?Up++Xp;wPFSa#@0+{=KxP< zXV@-O28N0`wG(YU4hM*|`Ufvnn#xxuPu1-hS3$?WoEZj@iURc$9()<4cPv=RG z9%<|lllc?5#%hPf>sJr7IGXGg*6I0m=>hq zI?OxL&2;B}wkw=5RkiiUoQgXOxP|PCV#|K^7N1OPOmFMWvGS8q6Z4MMDL2%X*7|5t z=n`mpO1wxu?@!)u5OE>QC}z276U(#-E?i0}R{|YH#TISJUNXbua^;!B z_HTX!Kbdqglu`LOQ&xbYW!(q+AGXn(Elgjku_imb@6N67VQP$BaCO7m_sO^O<}&H|;t48AP!ZhPWU7v;2(W6%7H=1&_BMlYy8 zJ2(2b%yNE*X=z()m}O*`l2uQ|eXl5w|9(4T>Uw=6Rxq9nrC z$0|8LS1&OoKPgqOBDa761Z?ap3KEmEQ%e+*Qqwc@Y?a>c-mj#PnPRIHZt82`Ti~3U zk?B!Ylp0*+7m{3+ootz+WN*i1Q(;w+TacStlBiITo0C^;Rbi_HHrFbz*a{@9ucQE0 zQj%?}6yY17;GAESs$imLqGzD%T9H|1q-4jXU{jQmW)}AAQ`ZCkR4KyTL3o~MK#RtV8!4tvU15!E(JNy z)5TT^WWQBPesX4t6_}Z7Y-wO*nq;Dzl4h2oYm#J;s%vRzlB}DWYG7$$Y+|02m}G`z zlxJRXNn&1dD#)mc+ycGK%oHn2OAAv=3ln2qLkmL_T@y27W8EYJ3v=D%G()4rq*T)s z1G7XVBm9dp(=+oDbC6vHGAboA#mdy!AT`y@$UxWJ%rsfo#KbIFH!;c7TsPS`#Wcmt z&@wgA)C6o)O0tz(eo<~>iLFv*Zen_>enDP3SOOH_R*nIlwn|2N1_+UWoWzo}{Gwc2 zrSQzWl>G8ygj7goZfbBzA}Bl!&CHDr%nVJ84J|A!O^gf?io#NhiZk=`K&BcR=ouS< zWk3;QGBC6J71;Q>*A zRK(bEDL}-6T-@xqZ1ln99H`8L7ziqJXo;cmKuaqW6h3IUQ7kEX8C z;36pmNK!nSx~LXhT!_w8YF>)1Qn`}7ovV%NdfhRPWE6 zRaL>qUwYbB9)6Qm%opVFm5y4w%&euwgZba zkC=kb1OcI>@LOxnZnm~8t#b~&Yj1VtwyiDq43!1v-3uT3DY0cA+W~J_fx8PKMyA$B#Rj z>^iUibL~Wsj)cpbrq$lx78#+<_(w=EmiYkVM9#IA4D1Z+|7ff&Wk_H-P|sAs;&T7S z^XYr8aco{SR+~qpikc~lQsmfZ@E!RTd`!r{m3a*{tSYX{DclXTMdZlCY zZoi&>ZcAF|>8NX6IZYD%06`>$(@ z?VtbpedqSuK_|;I*1lI$SU2TYThOcdQ?K<;elYpI?z1P{CYxTS_Uttj>fgUKL}LlV zfg+g##Q-fa!3w($4i|=Gp0?CR!%2q>7ECGI8}xEXv`(#?=Fjs-e*W8=rb9}Mr_-6O`+3{I>ufOvs(lzgO=RN%<$z{=m^VLUwZi&`; zcQxp5Jnvst!T#R*^s-;9qAzoL)jdVMS9iYX*FC=T(gq#w3ooRi`hGe!{JFu=bVud@ zi;GHAg$>(flZ8`SrU=d9-mxzF)Y)k`l;XRKlAvE6)Ld)p@~dv3o7lY_g2-)?&? z7VIR^>9q02!(B&bJa$nEI#t?GrsS7%<@??>@;@2{9%WqV^z%9Id)7Yo%-OAO8(7Wu zf7liok;`z8?SY-ZSK$K;0g~wq$1GbC8@L&dNif}S58`48l8VY+x?t-xFD-^yf`S|+ zG6(7eWRs4_rOtW#H>|8oilOYr$Jn;yzq?Z-WqS<6v_vOnc)twV_#!bkC3dbXo?-tfHf3I& zNLRFhg~J5{A8s$t&@xZcNtqw7wI%Jb|FLf>Rywy0);f4T>1Gw% zI7j389`)JhpUo@$+`jsJbzpjYjHYFTmgsknm1eV-?Yz0|jiS;kjue5)4L9Tay^XKJmLenA0r5Ea=F*qJg_Zq9xGprKaXWQ->Y~-hyLWrWhsk7)qWH z669-qQS7x+KXYl&ksIxEGnUMjFif0b;KMv~XXOcn3ytr08*#WX{$XzDf6IMGSbs_3 z?P)#}&xqd>>^y!y*SgG0Do|(t+uj=mubUMvvnexeaWk~;Uzz;daNGCS6913wckG+r zpvcl9z`%H9#<}!j%ln^=@)mxuXxJZqA->{T`Q2-8{#?BEuHw{(nC-E-4vU9qdQX?G~EV*5MFw4~3tj-W}crzJL)Ee+|`qhUW3jJI@@?wf=N+z2E%P zTlUQqyYZ*yGUL-ZXUZ7L4Uet67`0wS$#~9_bxgck35&O`+mI@?%SyAu!6iXdfvI&_ z*R_UqG0hW|0v2rjlp>H~I$>*0wTEUZ_hEH~jA%mk~(h2|GM`z0SwFUqG zsb9cv&w0FX!Iq}PSqVqBwtY)qzFfU&((g?B5C2QzAIRmMy&``u&TP*-HMQgIT&;IZ zUA`1C@g9GCGEZ-Z;zHlsg-p7kjx*YHeS(h&dp;B6S{(e`&GuNO&ICu122B?6AgyB^ z3DIVoT5W31w+3-tkaA(M*LeQg;&H+pMGlpgM2CXLZQDd-)S2u*EWH->lzV5;gP-?> zdj3xoI5z!X@t2g-J6A~L^Bz1OXp(%xY)X}};NDilGTnwc1|^x3A&f1CY>5(2c_(g^ znwut}w&Ou+R4>P}+{M`$0(%c@KQNSz)8jsC;lR_D*(jl$$dPw*TV_<)m7+OQ-dd<7 z^GLB=+bi@|e;@nO9JW*12Tz}6K60YdMQ7<3qor3inFz*eooz8QU&S-Fl)mB~GOOa4sUm5a&WrN4D^ zAN{jlb7`G7+rR9NjiDDKlvw@5#1EAy38ry5Klxm#K6$38k+Jcf38xLumrg#S@$^^R znN2>ynn#xgrLH=&Nq~j1)&!1-k4@Z)$q1T)#^k8Tt;yVw zz!0%=>pP#~$EP1_{peJ?Y%X0UbReGd^sbvlbM7`i&-FI`_@lgdrcZxjuco95<1Iaw z?WKm@L3Zui9`YI}eYA>lc=>7n3{l7DAJ}-}3Z>5+G(GXW`-9r~ki99-Tx8Uz`II$o z?%r}q|J@ahB|8fXVpunsHlNSG{WijXzJa{Jp&ttjdfK^;9%|k9ejDfIlxeBL={=rH zIlK;*+p_HIcQWih@R>m%X`{uWi5eY+mwJ??vYDU9+`K5kn}4?@b@nx7Yy0*jJAMb{ z2|_)^N0JO9rm^1MmRQioeQoV=?RPtbx8Ez$UbpYn(HoneCw<}NJ*2(!#JTf_zs6MT z)8FyH^RP+yj=0QR!}yA{@1L$3pZA@UeKAA#_s#|9?m4>b=UO1k5W09~mdIfX_dRQQ zU*3yb6R}Uowzk&e`V)|MG(+MZlqeans@r zVeb!o($06R`g~L&Z^4wg$KRZ6o?-LDpO7W*KV( z=UBC;|Nr;h@Y~t*$}{G-gmE!!;c1$4?N_-+hy9J{Q>W)&m?0T;>b`;QYsSmls;36U zDbBWKdf@w;>HBO^27l%svpsC;S~Da0UdtS6W53tE(Du4RXove!?VPB?O+itI&!0_v za?<_dA9Z^s+d7$L4+Pp8rU)&|T-kZ?V&wLSKWq*BZ@KU2Z%O-t#ikkn~do{t$0dYE<{>1Hs7yea{vC;Ij>GGYGsj}a6{^?ggJ?Cck%9c zrh5HR*Xg*H6eGrS7FuVFmrT(R;r{XK@%_Qx_4=cO7f=9Fk_2zlx|Q}}`CCW~K3>koePuaRgiKE6sgfPJ6+ z;;sL3g&z5ToA$~6npE4`jVvoCRjWUL^mk%KPV4hsJq-IpbmZ6y{_i{Rw@f2xPgCK) z|gj@&%2Ylg_rw1n%rN*J)50>|XZP=JRxan^pCK z`!9>#`18iy@FQR=X!glWvW|v0Xcwc+}z!lxEVoJXj zWZphJr&#&J=}aX>mdQa`ORwD6G3ovayLy`srL#IG8*!}LzIfu2TrNXv)6RRb;mxzf zIvC=o)~BROSZde5d*xfmRCDyfmePggw^KKS=Nve5g7e4c%MCmZ44W5EoS|@S?#x+n zYo|ore(%!%E%Mu&72&^HKQ!t4e-A!2J$p;g{&N=f+b?C=7QS;)3KU}zTK8Phqa@+y z+x%nS%>T-eRKIQ2CttyHs@J8CUmGy@Y?!#k+=Tg*YW?|?iAjB8?m)WVp?X? zthIAhr%e`MT4pf8N5#O-vh(K8NRRvN$?iSdwtbVkU;5j;?3?Z9H&1Tf6uYtIO)J02 zvgC}V_ZSy_FI2qM*U?@b-CwsKbq#Oc$m~cys4I3l&@YW`bNly0Z#Q^VrLvx2mWzEYLqY#HL>H z!pyl*nQz0SSeGc8R`b5oJ= zqgw3++7Gm}=J#vO%P-Yf?U-VEOR%kR+rh*y@Ak1ZK0F{T-GvkVaHvrK6T&s z8+`j{@0#~MS>xQC=J#R@860{7{YN*{T~51G`+aZ4&0h1wf`SEe7W1qZ{q?U>;jlr% zZ8M$24f?7@Kbah1l>pE%Uy`3{(9^9IHw_kpa)=vfOTTTS>bcrjn9 z?V_hkkD#-P+~MfDpVvRUy8Yh4Xd+AI6=vSV!nJ1(O_N|+bb))7h@jx3jTYC|$8sOu zWMF337qqY=$E^9l=LKGsDa(&fytjv4=N4Zt>xPxp(*@RL@){g=$+{X=F|Yg1P2mZx zIt&7jZI&&$Gb8QK>c?K!LR0e1a<~tymz?%hOVApOu}fxJ=>C1M%R}cL<64)E5eE*uTYZps zvCLY-D@DOl+&g8Ko;F!@P~6Two#k-nqU5t?60)`@dgi-krZMe{ZU~#iIxl^-f`@AL zrPU`4%(jc(UCti#w)Ntp^Wnlx-nTF7`2Mk4`s9DoocqdKW5haLl$|&>&5`grB^`QIHVOE_q1~P1j|~M-*&&^ z=KTHQ?y!{S&L5dAQ$ED-Z_JPpkE`K~tA77?$K$8v2~R(X8u%>Edw2bBym>|D7Lz{~ zea+wc_zVO#&CGc_$!n#@8r_@b)|OXyu3Y^-n?3E=T~K~w&AdBn9m@yym=3!z#Yw!E zk2vSov&Vhh6rCXDrlIcqRZf!eLI}T3)OB~8(C;;Y3`-7L9zP|jZD?W8aq(hcN^zt} zH>-x~L%-g{ygxF(w#D*j3$0!28^$=#LD$71N)P8k*L#_MyxB47_<8fZ%%tr?7xksv1cRd{ ztF@)BuaTY>Tg$$z|6QxSc_^<(P?^p*dF7*jZhm$V>=G3Tle>ta} zsBWD-W#JL0dv5J*R}!9be`Z}Kw99FyN}HZT&QB{5v@LNKbI*m~ zQ=;2WCKcxQr=FkNAN414leX3GM?D{_Yw!PNX5HH-p~`z%h)c>~u}9usrq%EMm9E+I zP0u3s?}MJ!nQH09EV?#dpUf0c9o-Kc(Wrq`j8^~v+J2fO8T zE+0CU8~yRu_5F;5U*oE2z;C5Y!JjqzBHBA1SnyqXX(DsmQE&3moHV|j zIbw}d_$1fZTidVS{*A}BE}_b2J1Db$({__qzIihkWh|`Ph#C$uR zX>VM<&w86M$2rU_?${}5-Q`tYy#fEEIfYkFm0rk@a^9w2VLl_HkM`B|TjgFGzIor{ z9bcZki{rrif^+S6k^(E%onEk&<-^ZHRsOl@cfuHdtVo=-x2JgBR=1M3emVQ!n@^CE zId&sB-mz@SnjU4hYpY_dAN}r={r&y>{{Mfs-pgIQRB2b|@-4@DCuSV^=&hP`Qm@sVju*G-sa$(^=#%xm zwyE3q34Uz6%J6uqM;hZA#?Y|Vk41W$w0syDgEG&|x9eh-uM|JF|I7IaH#G|s19YAw zN{Y3GtvQnYZYTTty`SaQ#MUzUoX#mYvBI*&q+}go`-Gid-iJj-Jb3CU&OX7za{Rj zSz0-hZKqo6Az9f)H@_%}WS#gv<@THHTel|O-1O9<>=(;2b#=w1EQ~Ym{m*p?TjPHF z0_)T5tGk$PI6d04%dlP3G;h|6h^>M!%x*MV8))SR)%P|0}m-{av<$mTCTPj=!0> z_kt0F$%!m~-imd<&n&n5zH^ta!r3D&JWbNAidIb9RhA?sW}NqSIJAa&mO-n8m=DJ` zhAob+Tf^?Y=*bY8o4w7EQ@XD#@WeUiT}NNFT@&j(w(It8EB%?X=PZ&-tgH6-rnVJW?YpqT*dEt zxLb<{dUdb-IMS;8O7Pc%sw`O9`wT1OTwRy`gm2Be6(XwY* zuz9br_?o!pzwP`^l-t8>x&eFo)$9y zT3>5=?Ous~OJ<`qQRHn;dQ^X@Bc~54SsK^6R*9s zk8|V6O**&FKEJs6_tB0m@lZpNc5x5CymzmRdrOJZ@f z>sE-@^Wll{=TKa@xh|(gKs1(1SPU(^lf<{5c-^(ztiu|8J)iRXX^`IU9RtZ)VcSyP;d z_-#tczjv$7SSJ}o_bUwVFYJKGhPn1)-`%Wh5Ta7(UubyEGoF1Zed@<%#Lo-WA# z+bXb(ago5$D;xS&Pjr}BrWNePb>PgxbOnI}TYMakgt5*mpK8!!w(7}Bm!;8LCk17$ zeSYA^eUnSxvw3f`eOTV}xp&Q+Kkaun%UH|R$S2u4o385aD0sK>c)%>H=-u0Yo;*44 z@BNxT8x19|6q!H16rQQpw&hAV_vL~m?-wV(e(J%))2uboyL53@$V1J&8w|7d2K2j# z9*A5ZBe^K{?}n1%ASUEFu3WKQF@MZ4=`PTo1saN&#A z(tEkHp3Q#ip^_W9ZGzXq%}Ek_{;s|8;Z?bU;f76OIxpD%d+7IF7XM@{bz+`%BlG`1 z`whRx|K~d8@4T8pp{+ut@8QGH9Z$DSe|$?kzPUnYpUalMXJ3s&r$n!DS^VqzJoOWt zvC|FP=9TatTdrnkZOrW~@q~S!t-1N_rBiFZJUHXBj@3-}_sW~!LfAFWS2q+FuFj11 zbc(e5y{`PPT3OEBuz6ptwiN4Iew0=cxvMhEa=-fa4c%?)Tzf9uzt5i+ZLy`^-sV2@ zW1gK8A7|VzP!zIdE?qRY;GXD;oE?hq=kIVRDv)SB!}F~FZM&vK$B8M94+I32m1b;X zRb;6-->i3=r(u8YmoJxl_H(&>=Q@{sL?SaU;dJx+qX*WlcI?r=a-=}`s1x7LiOC#A z#ZP}GZnB|eHHol=t*`gL)I;7(( z+LJA!%u!aYKk0PXVeKamo^SfF`SR6&Wp4Km1f1^*UESvHey%Gov8L4KL)-?=XR>8E zwu1jIY*}+#G^BcCL_*`Wj`cS?OY?vH-|*+t>;rQpTq0}*=bZ}Sw|iJKV-nZQ$?PBh z+^=Ui_Ay^sZsWy^7dew;-gcVh+}p&;Z~Mb7=jM)`HD8=B-&m69bg5EluKbl*3^N{E zym}Ll&eeBw+b!6dc0ua< zo{x%meqEa0D7^m23ttDf#h!P4n$?%hW(Y9Vy40ND_RY0x-JI?> zef2V1aVsI`@5{Om?g;$+8uuE$$TG2X-{f zeRb&0N9GU9+!jo2(c>1Gmc8`Oy^J>>4bQJ_^5s16dZs`jQ$)$ns4wsL?7H-KJCl@X zAWLgQORJgZDxTU>oh4kZ)(h94$b9W^`;~5h4}+Ie>T-vu=1hgzXWe4XKki(2E_I{N zJL|-i-?)!%i@X?nG2&0N&@0!N4>PVQC{J?uy>5EKVdnRaw?C+HoD&E+FvGNyLG#Id z12L{sOZ!*ujX%Dzf1mijo6avhmQK)rBIwcSqSEE9x0|Q@Zl(CH-MhpcSnsn>xWLb$ z_T?|L@717O%^8C1=WV`+z#Ek;Pz^D<`w6&J3HM(qhni>Y|olmnzriOeoLKWQ_3a# z(!_6`Ri~34w;s!<$ImZpee2p$wj`TZyL81=@7_44TDfN71InBgH!VAU76E*wiyEN)xOllGlqYo0-rf*j@f$Q~dv87whWm zOUYtgCTBdD!ZyhoyMK3l`b^-5oZ&H_wO6Fxva27PYQw{jnP5SrKJ4&SEFc` zsaL=6%a03{TqcE9CmoXE}-z@ zkIgxopQaD!nNLr;i zF6=Ed-&GdVX}nlHVTKyhef48M7w|OM-_cnU{F~|fZc+B!IPaw)0tMxtbh?a%J4(M^ zdz!Q)Zo#pLzZ zS~T&*+09-r&mQ_E|C`DDcW`Ht66Z4J_#0tIzSX`zrobU*CYvq(_zX`C=jM7-vppZ{ z7Zu;l+t78%XQ2)MD;AMmHd|LS2(PnMW5_F$OW*e`b57lp!x_nTEvW}T$M~eHZ~WF| zT5)ytyCdJ$-acRv&7m(9ZN&KXXx!Od844mzdI#O~U3_-!vlpBek-Ttu^tRS+{hciS zwXZqPJT>Y#Ds)KTSegBY^$Z`1Z!+!?y}2h~@vNfi-}i-Ma#H4SD;+u(yZhsVz5EBt z<{ahxEoIP>xq*%0qIX5Y!*h(i7yV6}dnfp9FS?twvE~2&|9^C!J$v?`O0Pq(L&D~| zZn@Y5#!cz|3R|m$mF_ZcJ+x=lbNxW|g4M3f`*i;2Sp=%+-)KAWAZy9BoTIy@?-Sd& z&Th)G`?np@cZ&0@XC$oX@+-@bFrH8W& zm{&gRJt5Xr;4j~jC=n1O^xS6Ilv}gX{=81e;fmUS#^CJKLnanyII8q&IM1Y{@3eO4 z5MsGn-n!0fk)-aiTG45Kmz^BfthuxNnc5`nYl@RkFQ|COqV$w`-^8ln^fzA)U&!cnt+ zMQY&fa6|! zEh(vpY2I_i4>cM~6QabX1Wnl2u3+6h)A+ozgj&+wT7j~ZiODCW%%(@>axva1njjNOVIOUQ~w-FyKK1d>+aUXm@}5!MGC*f)>^me z?-op0BvEl@S6|0J-Z zWMWo!`?XoO1()CD{*!mV^s{YSX~rM*fcDMS6O-;H9FAH&UF$_|Q}=A$xNf5u`xuZ7Qc&XI31%YNg+U{d;oCs9GH|M8ED$tRv{ zQgGW7qEoow#~~;oeD${SGshos>L$cKt44{ra1_0x>#qoTUdYt1MaG zCa~z{ll)8bmc8rWQo+il_`pTk;=`Td6Hh-s&AZ?t(8eIH)-m<`zkr#UJ2nd^d@NIG zzjkfazNv9@xE_V9w^-}OdNreiqv8FbxpIfkEL`4rfZ0&&gu;n09H0L?txRROmwKy= zzwqFjb#*z_FPJw>nkz8%(4~UkGhR(-F}Ho_GEpL?cjv|6g5&qX?V+e$HImT7jv**IY{MJuI`1dnMDF1jSWrncN=E3Hxzx3)>6>0qLmb zNzqOA_RWW`Sb9hv_#UG@G3&jtO!bAc&*sZd{&!OTxy)TjUoOWtY>6}0NA7=q=`_d^Ukhg+ryUGxx{y)EZpv|JtcE-NeX^H0-uPCwR>;wiAOD)P(EhSq6a87p>L zD1OiWzZWGw? zd){w@JxQsDofbT+F*4`zEZ^~ZkO$AJGn)fiBSn_0 zAF%jtdwnkRm;Fo?6N>*OUEUr0KcTL2=VNr8WEi@Acr}ac@E9-8^yxDKO%9H6w z>}8Ydk=s(8vfu1{GQVV zb&7V%)ZB09-h9X9m;WTJY>>jaX$I?*w&&Aw5^raE zh`u#mqkit^yZ$M^?@xZw5xwlI_TAdr{I@UO#m$>Lzgxz>X2#Eb?5DQ{@`xzS)<6Et z{Eyk1cL$?d#NIK){jFJ(c&qJu_S(h;GmdXOUn8OgVRU2!e)m zs&-xWc2W1fn8Lf;ZmxQyv-gGk?jrlMpGTh?dma!^a(=wH7|5`BwT$p!AfmTsC)5N$?Q$DrY||Z zVx6`_>}AcYg014N<}LF|q=Jh#TkQC6X>iU#%ONj~%X#|!mcCHwiMJ{^cbUI&+M?T9 z@xQAmWs$hew^uG}t_8OI?g{-LoBJ$sUu<7Ynw<9JmQLg44|l6FJ&)WTaH9C!`fZCR z`tb%7y?z=|{<>M=aGTpqyVXo#Q}+d36%l`xdi-ikr>OtJ?7w~@MV~eL<}o$5g-Jze z&RE8}e6RGxg{B$NTX$Ytwrtkqm2SRQFMFjnZ(8+EBzW5dZ!US~ki}O7vdkhSg^lOA zEGf54^OJX;Ftcs??DqJu3zh-9W()TAR2*%#U$t}R(UPPkU)KviU$1^}_cAs02*t^c zCSuMy6I;|d&pkW6@nhrngIVv_o}9`ncIv39=kk{2(Yno2dPJoPY4IP0aR| zq>UU0SS?DI!bi5$`l)7C~d|9-bqyf4?h zygQ;#O{%$n1X8u?-K<`0Z2 z;rZ;_bzFpUADq-{sPJW7<|LPAdR;MswPeGDBmCmir;Dy-QJ#A2&kq(izqxJALSJ>I zyFAY21ZAzwz0Ks4@YDDE!t~Ea85(v3`nv{pTw3+0=5tJm%4PSc5GZgkL%32tj!zsh5^T>o09ea#`XN*Q+`I_>hrs)XJ;2J~nmd%GK*`?A&?SbIpS}|NRT<=4Z~H z+xXmge+W|{-({1;Gc)P{(E;U z*yU-y(#^oTygXTN`q7)k&l94iNmj(EX;dv{Pdhd*7nEO~TwA+R{DAzFseU~Z+4AbY zW^YLUK5qh3Zs(hnyszFPkT!JCQwWN8M9#C54$8&i?uO^Q=o4mO3$R zOI5PAY&>y5OQnkKpk$-q)j$o0<|pP?M0efF2;5Ml*V50 z5Bf;Ijn+H3Yqq>Y($A`lfZXP%q6b1UIs&vFwXE8;W}{%a#iCVibr1b6mOcn()^ECc zjdyu9gJT-o(TkHm+)-Mf=ySP8g!|{yOf@;_aL0e`3(Bl>F8`Vvq4RIkx4yoz+kF$> z|16MUpO_)C?zuDHy2HnQ-|NkIzbR_%#YKIByr!lP7oEM8enlwRzfLgy-_z!fRZ2xW zD+`V#Mw^wr-6fD;`$PA|n>R64mzN)#(;GLZnsM5S=?jleo_B6D-@fU4e%i#ch}ljR zY*IMzkC{E@+)RNs!6#|YpR}FZxBlIHxl&MLS>CW!EzYIqZfZo>6vinp-W-sYt5LR+ zo@y4lAtTEALe3}imvfg*j}r7=D-iX_pWBwRde>!%7xD)_K0eNvQE<6UU3AyAJa+Rl zv%bf*hlkv^RCwbMmMOmW_0tVoo7}CL9FiZM(R^`7=hI9}t*4tFv@zZ&TvPeg`rzV| zQ6UPYmQ4&|D>Njn?zNkqn6~=j)O8FKH6-oD`=|2ohTVrO{Z2n~P^+@ASmaukSTKd9bQ= z#l+BG_X76{EU3D_Y2lvM@F`7~+4uD>many+Aj>Y!bI2fJwpdx-{m$R-s~KLtd-rU% z&0Kbu6(+O;K37M16kMrL)hAxGqd|vYQ|7Sn%b* zmm4R+rBYh7&+&$9??s$)Hp?D=((|zGcHVK`@cm14G_UzSIp=aV`m#=^G%vq^>Gvxu z7J8eQdK}l`3O$qi*cVn z2%hS_!WzG20?&H2(~*bQwmP~CH&1-ga`9TPk6QDgD;jrpN;Yul%sSL19nYQTemXGF zwEfVltLs-e&JFXu@cKepoV8g4!$FQPoyLf8dmr_nyuOoSEDWIr5v$InT};nl=>Je@ z5wh@G%2I}HRsWS-F0Pz#>D0S7?boD^UJU+VY@E7>NUbFiUr@|I~Jutm@{$4-dsN#A#3^VN0F zSd*ewPF2`-XH)KEL$+m&y3%G%+=93MI&H2G6cWyevcIq~CMuJP~hZ%VVz9{OIJp|$2ei0ij-1dEolvvj2P+anUA6uL7>P9iC3~kw4FIIn* zbNhPFi6Nl;ozIJp1ua6~Zms^QaqohpYuK#~ElbZoe9R`be_GbQRo5aNr@o*3y46E7 zMq;(d0Uzm?-FXgaUqsH;Jkw{~&cHNN;g-V!^IXHZ+uwif`h5R<&7Cy2FyZ9=m#U&G(E$y3? zr;)Sx^9D9=Q--y7?)T;1K01B>m#0FREZdU5-}FoIeeiQN!yE9L#f;n6uK5{F-|sEq zHa$^_O`Pd;7+>=7X=}OHl}Q+AY`LA0P#CmH(zH#LkMm-;_=>zk(d}{7Uw(Z4v3max zgL(F4B0p>7W}P~I-%B%4Ys!Z2E0-tO{nlC3$x?M~&2g4$IqhIu10h+1xf*X=q$9SL z`ldc!$>e2`9=vqlDrqs(D=Q4b?xmO-O60~id`XNl>+rep(JbRp>Z`t2=ci_Fd$3wM ze(Eb>#jnwiy_*79_be-_p1VOfw?*TiRckcIkF2}%o#)jDFp4;GzuNLabH3IcR?Cuj z(?Ui@H=V|(*Y9=iRKD-}@PV*`u4B(FZpVL4Y*lC1xx7-of9}kx_lzcgkKFj3b9|qj zpufvA<5b5fiP0xgpPk+kcVOeEXXXp4@1C==U*;A3>hqlVB_azBEs*|U@%O5`!S@@- z6AM`H7YlYD*^u}Vo2oN=&!2q{ z-DY`Re;#z`ch^Cwta7c88T#T`Er(j?Jrpz5nX;Jk`r{C5nUMB*;rljkXj(h#_lkY> zR~!46v2S>Eth%7&4NFKGlUBeKk8QkDxQRsb+KAhScdX@zYPOw&Hl$cTYzpK0oEasRN4*_q~^vsD5(( z;Df`TnT{w0Zc!E5@qOR#i`Q@8o^$Ndb8ka4lS#bHJ%@f)F9^NPEp>{Oqx;}WNnJ5L ze~$8d7kJmJ-`%px^p(Yy=ZCnDs`tyx?>YKtZf8aG`H%(I_tYJqdM)1eujqErq?e+l z$zAUwVMgb8mYOsL$wiyzvaQ}y9eKwi*xY{KhP=QFP43IZt&4s4IxjfMIsfat>kALJ z7koHSm-5+CVi{{Vw};S&sVs%ONp(BxmND6_5vmh8C*$_<&SwS*wePll&Hulszu5ok zse#bjf=9V8Vm6D0>2MyioUy@SqC`t5&qg$rGb*svKwE0jo4xB#k!&gn7CAGVft^;8MeE`pWFQof6(KsC3$_x_VcOF-rY^QQNQK7 zzV4#SdcLLZO$rqpJ?}hJgf1qn-9{+Y9?Zzyf_$B zOtq%)e#uByUwY_^1mEAs|J&xswm!b`V2*Q@U0l&$-UvI3D>d`xZBKkw$)zQIH6u}A zQJd5ptF0yrS32c>JUWX(PFE)H#+sYC!dmZ|o@y&az4X-Gs?T#ydD&*G4}UZoK$&EJ zesnVDGOu^JhfI{(5)IaxR)wuOvTCZf`1ZpYxAynEI=w0T-QqZzpNkduU*>R&IOM#> z#XgET{?B>+q^vBVAhru(JR5nZC!Dt3-*)n^|D!AQ|G2xJ_Z^-u+dRqjghIoT)?zEq zYyr&`KRGkb6@H5UFQUTJ5h1-LD8a>GlB~c=J(pkM2Yply>UtLQbHeA9o)|GytCzP!co)p zZvUPzityL1_SqfK4BCo(PBxvS={mGb?yuDkjFuXGN- zn(c24ScImfJ`gS6$96rwIQM7CSyhRL%ht{m6IFZtY^Tp&maMtUBi&-xE&q7(mkoo& zwQsN83Kp_;?Wx)SvgB6G&OBcIbIHfKrmc5VN`xgXg zIApQTR|$)))1I@AkthCY|G84@!fzkXKYTOYJ~B^W=G?|Fwi=oXx3=*#eKKTGc%h)- zZWwT3r=-ET#2IQg{#ddUKR2lSVQs*}c+PT5nCPnB0~YO*7^h4!;1QlvTyU6yaf4=q z^p6B5<>C*TKC(4je(CZZfjiBm#X=q@p4{BndfaAfz(xOslg(dynXS5Kt^M9MNLTEw z=G_TwD|!|!e-*u5W2?Z-7H-+l<~uuY#+_I#lDwk1w0EAe!bS6zh1v1V%ISSgQ=cs` znV1>%GRSU!w3v6j^tUO^3Ogng|C{EaVilqx=Apeb?A?u7{@crsZ8qLKWA0q`*Riel zPUpKFXN^w$(3-YN>kLopu};%DF@k)1wobA5dDTDh*Twn<#fY8fmV_Mge!qu%``r@m zoZE3R5}Z1*+ZRbQw9k54G|P6sV9P9pbBjFKdEF~bT9!KqyDf~gGpUK^evmvnEG47B zp#GXH=cA7- z>G@*)`NNtoHY{or(~rn{^z>p-jPuX@%f-bKw&i?{JPK3W%sA3?0#7a!5Zde9asQ9i zl51}cJSp~1c=hslz%0pjdwbrQ^IOBXRuvhAJ+(+*acWU&kKzX#gJTCQnopWasLZ&g za7@gBovX(6vzser zcX~|ma?L%G^jSQnYO-DR69FYd&eeO_|C;aNyIZ}E-MmNY!ij+U+Y0_^@97WLhz;6% zedlHOf*bt54Mb=vMU+!0a|LxuF z=l0w*=eZ`?z_77H+oMV0XuuSYP7!6VEl)fqrf7Qw`Nedu5(>BUQ=Mud8m>Ai$8yt@ z8`D-!wbqeo@}c+2mflp44%rx@G*+jhLYrAO?MMdu@nWA_fb7ZlvD zW7+vHY{L=1?SH*a`|WXcXt|&+-m-vs)`O>ke||Kw@9*vHEnQN{r>wN)o9xj`3s0Yt zY-41QO#FF7_eSYc-WPj6KmTw_`TL_o&gF+{UXYa?L#96{y3_YX-8^nB6E?8}lKl^w3!xwMmkKPkD zxBj?niuc8-ybVdGnEIA$fHS{=U`I_+%>V>pt9=&fu~1ihbXs zAKNtgZo4dzHoCXt>HGhaYaW02y4x)N)&Ygf5j)=6M(q1pcBFUN=8ULIhi={zsyu4% zK1qq`(pz4efA#+9rJ1O}jNcyMa&KV3ZQy)`)!!9pOBH)!>-lq4?a3{i0|<4hHsN5YxK-+_>-8rBI@(PM$QXIj&_SL zoYHhnD(d--@6*07G~FG*d*AS0=tYJi!NnV2EA;LCo^0`_k3Xs4oru}|dYRYuJNVPy z>fAbE=p*_~NB&UEa!yaK=VnG<+_`ioIy*g1(w9E{#l=ue{P_mc6AKgtRDF-!tyFpa zX-g(-Er4-xhOWFr_I0~0&&v{D{xI#BmHWia$!u1K#N5;898@+Zvcpage3s=eF!Ankl zNhg^(i_Tdee^h?@^y!z}(d%bieCa!RrH|HBedb3`^zVPT#{U1w?)yfdY*n{J`Tngu z!HaK=CY`l8?=bU_uKC?2jXwQGclMAuI~Osi^A&iU-G9ufM>c)#-d%UEeKQNwTjwCn zEa{oy5@A)R%X6$MebIqQZ-SCv9?D>ObdKlNasPyuo3a<={Z+X1kYS1On!O)HE;-6; z$uhYmub;9&qwS)ULgUgBjw8A&68U@6gm<$lW}QuVc!M(_naxQcMMZHbi^Ecf)DV{B zeLPWY4izGIA5Gs_V9k86{oXd|Pa*t2J}oo5+N5;ddF%P*K1W@QR~SF)XgCtxBf@f` zX~K)suLQiK&V?Vm^4z9yb!)Bp{kAWEG%swvf9Tn0Ni87g`1WXUh2Z^d9=1; zf~djti)>B;EN6DSP7q&yup;i^n|T`&R{Tt}TYW5f)s2KE)*RmH2U5y2-|YNwSJ3?` zdk$mp?sc<{Sg9wypP2H-)Y^N~qQ!NSMDDpC@no39;C&-#-tLyS`*PAR-mK@TzV~Ia z#r9uDi>`{l_z@bu_vOd9di^bSNn5<8G#V9q&%XZWQTWAgSJLBhNbPF>j3{qcdG-Q$C$JC3qGGc|L?)P z{5WBA>CI>Nv>rV6?W5b`n~WPQea$XEcDK#zot$z`!k6X2Ct>xCd$z2;P_*zDt0Ry4 zvwKF{mYCW<;$sMC*Kj(~q}X#wWbazt6*ldPjpsf&o_S;c%p`E;x^>qB--Yc@JsNM5 zqjS75^G%ND(r+_FkIR&Mn_S~$zPcoqg|RT?;*`qpB;kgSO>xT@Kjm)=CK*PYJ~?c#p8lKn>Urp`W?$#D=6A!Z?diKWhdWC%O}u&Mj>MjykN@wCyHUSnEysx> z-le9GmT(^NoGJ5q-O8)=F)tlO=Js8iCX-n3>tS`_zv}OYdVZY<>GSaTbEn96wzQyb0vr0c5Fb;T#g1xI?GeC;>y zj`gdr+p7w%T#PbzG~sqC2UQ9EB{B22Bujjr7q6^4@x==XHxEMgF?T(bcx=FUgz@iDehvEXJ)I zdC^DDWL3}UDW)N%KAke=i)R*1<>I+xd)K3a)gpB6^xE~M4HcrBm&`8NHN(1!>Gkuv zj{iU;gjW|CTfCGh$_KTgdPJ!?oxA-S>=FOOC0rB-$0vsrW4LeMY&Iu-x^D z(?3egS(tsS!otM2;Wv-B#a8pP{&9L|%1bKscd>t;cYb@7x924fx4j3GrY#L;sQCF+ z;`0%cH~(h{n5<1>{LHqr=u#B3*W+d8_avs7KjUoPqme1G!*O!RzdiG%!}_h31nwHIm6q~tO0K)|ksYg^&(pQJ@hnZIWvyw+&5sow zEeR*jo%+MA_f_eR-f1?!``T_7c0BHq5P7C;nf*=5?dJ@=wKwOeB%MDm%rJfT#d|r& z^k=QrbyU%^pYKsoR2H}VM187cQkU+mG_HmYgYqw07v30M(a?{0d}>RY)ytFo|CWEw z%vO}UywcQdukVVB0%~3|7X9ir^Fnr{mL6Ggx08j%3#Soj&YWtElsBkAplpPaJR z8cWwFN);A;`jqV#qY$v)+FCnRrTl4S-J7pcpO>9{cD($~6qDK9XT!9+7D@c>mpOXy z@9)>1tWOT5rUkX8y^=FMc4hHRml?C~^sVa2c>Mp`wd38>qq3hw^4-jE6cV1RvnnS- z*yLEiBhv+or<_rVvACkL_gx!%>b^r>0dC|va`xtwU z{jXPamPwf>eqg_*=3``_R-;rmajEYDYsZM64cSXSUVoFZUbOtor@Q%ko<1vHTxWmx z)-4v#i4z36<*h5Z_sTKf6LI_fQ8rvUIqCP(d-X2_#Kgs7kIlUQPrAP0XCcEc%*_R)?r>ybS+|bE+lc98?RZGU%kok*+ zc1G`&lX+H?$a8EH{}BPU_@|2xH9wtL%bqty$>^AbiBxY`e(~?Nd*8mjo;11N+`A>4S)YeR|ELLc58?YE4%e@4yl_R4}p|4o8NLf*HF zzV&IzK9!c}kQ8{l;_d>eZ-uY^S%3JneP2tg`u+v{1x>p$q4Okgf-iP={0Vfnvx zSB$;i<@I%3m=n)*^2EzoUen}P9m#!A`JF*x)uVK_h{|7rIW`6CY1Xnl?aV!F%zvKz zzSplDmLlBv-mKEtt)3^jtY8vv9J?Z~L;cH{D|6rUJY{|6vF4J2-5T?U8|SRjP&gUa z@m5b?XWO*zZx%b69dY<-y*Q`DpzCqwrkQf!ND+H*49e!CRbR_ z2Q7`w&P=yHru^wXRxOjQJ7L*{V+WpCim2@R-QU=8YF*Q2%S!hH3w1Vl-Tl$oQEL3* ztmDm33ij!zMT8eAs8+D`tz5^n$W-Am3)80+7X^2QF_s;i)W!JEBUFiZ+6sopLDMX& zuT^v&DO69@cRi5$nse3fhNnFHHXY$?e|p@?&2-+;2RqmQRh{=|aXr&qzJ+@84j!7v zeB;N%#~wJN;)mZcG`FM@%m2$R7I2+>I$F@>Jd6}KWgFFCY*d@HqSgYmhwVl$UNIP-7I$%e_QIYM2jS8FxT zKfRizUu&c5JD@;;^KG8y&bDjp@;eBWu$5EQ>XWvj57{cD|P1)67LhdCRQaJ^z>6 zHSDeaR+)ZQm1{OLED6&VxOwJs`PVy{Wv}8tUrpYs zESRd)cVX^JwYx``MxNSIXWO<{)A7OaVj0mQ8L!ZJiSHYkBkpZIBg9oMX!6xd_e9G_ zeX;&ePHS8hX60xe;AA~I|J#3;t4T7Mv0)eQoL5QmbTY{B$uytvJclp&W^l~xGc&3j zvs~5Jp6QNHyghxYNPnc7Xy8QlHEOeDXA~=*omliem!*5wNM<>@A`Rdh^esXL@-kdhX8YvMQ&L&D&2Te~Z*OuVy;q)#s;YY>lNJ ze3@I{`1bSi3$JsXvU^*Ps_r>^F6)e+!DP;Ig}QbJ#yO@fd_Ouit!I3pQ?hBBi1mTI zt=Z=<^B4&WJylUTI3wYch)dz_%Xy`{V@qzw%G@g6u(YJ^=xf6lzSgtl&l^r(zOwP6 zg5rh^8yFOiwwyY7MSJ;$JFM0rF;5a@oOaxau6r5~*u0^|*+gv5m8ioRyjdz8t%YU} zb0>t}`=fNV^ikj9*R5SD3A`t_6l!jby54QKZ+3FV9o~;e1B^niAC^qHQ>~V65S>!E zSxGRAY0uON%edZ5k4R5A`(V2d^WjC-!V={UOU-#FUz^19$ouP$vaXG%m#C{8{2o)} z&v)$H?4DB}-^kW?ops;GH?`NmCwR;Aw2fuoWG?mceyO(2`OdrU*M-{x>YP%7w@WX* zyR_`e~oBQosKHuNRTzr@BQVGk{)E_tWYh~EKz2%qw|8uTS z#y=r1yRD7;I2R|VF(hAYvh(%u=z04nn|+eIEYDf@?0eQFnXa!Nec!x!^Oc!%uSQNw zN-PtstQU#RDc=q1uIp9axiC|-%4FA0)5|ZLI!-X;?|AoXgJ0y?9vtMTi}_n`NjZm40*P zPrkf8|JoK=e@l~^%-+e7rY0=6(nsp=m005y@5){qdu92bH>(j;V6=FaQCDO#S?@|g zqvk4>+gTRX1qQ3c$4$-;+psSKoy3yyp?aXOG)tJi#gniik>~I_j)@2 zoqK2VgHV4yTPeLhs+s_AofM)+*TOG!8KzWW=+ zIwt7E_a;icjJtfR*h_%{P?HlXQ$4!@N<-B2B7QnH9Gk4E=!$;+=$Kw4GuPV>x);)LLS>!k4t&E)g ze`+ExzGRp)Px^pHxq;ujBV6Xfp*>eqn`PE-Yu!He{rl&fA+kX`UGty2A5oBdTqdBh zYOeTd`>q3I#HN6h0qTLMEcfuLP*57^i+}h@Y&?5PLN)Hc}ecQKM z->&t|#N7#7+@>v6&|LUQWVQD5joI((PFS?fxZApO@pXmEPgd-Y;5a)YOD|>e@|5@T z(;qzC@*${o*Z$t=`~HPzoZe`>`jpX|=zGoI?|hRxvQJS#!(#c0>a!JZ*3R`{v@UsW z9i9{SFtz4sCQHI=PA&Nc?K};t|t42Htae6{XPGidt13L zNF9^NSZYvy^lNf=x>Yj)7gJMo$ys`sMW#WhdOd^gPIX;|HEg4}RT< z=#=BOznNQi`pTp@!SipqcC^i^-4n7iws&v8&biZ*3{`qFkDaf5yWYU7-D8r(+?$m# zb$7pJY>T>ZE1~o$)3xotJow^T&wV;r_((5DxZ{;thO(QDM`@{E*YWDdhq{^?w#wVJ z8JE{fO*}bqnezdOJAa;;KVGr)+x3)mpN45~(nW45F0A05TKA!x?f*Rky@>s-BA3)v zdV`L&{q>Av4vjl}==H51+@FM&ty>o@b-P+g_S?$qw^eeBW_&u`a1*tET#Aw{H0{QScGMQo8)ER7dlom*_UJK&6?Ns{Km*|`%s z9NZia9q8b=H9@)jQN>wtHC@9c(iN}cwR;+c&=Eo#C20-(4q2 zHMY3?z7?G)CUzkv{&<0bi*lwy`;j-H=1wk!TV=Xm&H0hOfIDhu!urETFL(4d_}=2> zoKey+_5Gbr4~~?`F1Jf8Qw~Y{#kE`X1>U~%{p?w%SRVm4=NYPLPQ2|aZ=3$!5Ucz1 zLQBkp`Tw7&Enmizt<>rCj${cXI9EDjy}Wi=`6a>`;s$>c|2i%nZEE<652`SzVG z#vMkPrplVim$VK`zqxQ_MwL7B6@9m4H6Q1|{T#L5dXDyH&8WC>p!2=to4dRDgS;e? z6ORmo}l+ctf^zn_1$z8&w@I=Rnt*+R-Ci?849dY5{A;l;VmBF6X4=neRj;VM+8omz6fv`QpS+XFz2=Rg`$a^heKs#WQKXj~^ImGxh8ZiL znMt`mPqBA@y6VX16cw&L4O6V^Pf8jt3YfTZZEwM{nG3q+F5A0R{nL_$w#=^2{dLT{ zr+rV@v25b|y_@=tP~D&8t)c4*0h8z0R1} z^Y*8N-S4D_+xJ(={S}|jw#hDR`)`j$EbV+UhbAh!AO3uNf!r;YPVswN|F5u{YH~2+ zZ2Fvu>~C2&cW|B$Khd%GV?M>68N7PWR7q1`v&+fP z*V{Je@kli|Udl$=)JZdso zz_rjvL%giWgDvOeL}UM@_Q$vS%0)AUo(VgkC8=`sGhgwt3>~eafK@ThW*hoWzx#D0 z=UdRc)$10REZS(>)br|A&bO~OR99bY*<9?afQak~2An{(EN{pZ)`Z0f$T=h(d2#_CBbeL-pN%=)&Ud}C_< z73!EtO?WHTVz}ewv}l{u^fzm+*m&Mw^Q}C8k$lXInyI(4+qPy-Gp^S>Ce6BT;f0@< zTGqAm@5<`Dsw?pQ&FyX---{Vr6_yBS9cTP$HK)O6^4aW431j|-Nh*qp${dOlBDgd5 zdnpMv>^Sq}$)i8UTOPQ*n|?=vWpDPMuJsKj&vwO@JWJbH^pNS3jDQLm~>>|*7uL(tu}Nonz?Ys zk|xFDH$qd=9pfIKIB#yc&b2W%W=r3kS^RcKTU0+jvJ?tjsl(BDt52xXd&({4aL#@F zEnZ)OR?DQz?-Jhls#(hLlXm{0ciDMOVuDiLzc+kuD}Ru5sVV2|g6cOcD}MOo7;S#S zVqiA^*#+5E=lnMu4Snob_wt%m+|O&%FPKPn2pwQx|0aK=z5d(b^Ew5d>#$X-Iq_9|GXHMd~U*(T~_}B4tPoL{@C$>THAyLjp1s}U?oOOMNPv}n)hWa`w} zdXj4e|FOHWj|^rn`8Z*&dcnE74?+t3ZPkdr(%i{c< z_t({>c=vJd`NrK7x_@8X`G?IU?fJ#HTaQ;H->#K<7p8UcZZ}i&*B?G>Lpt=VcIFg| zde(D$rn4Dv^;#U9egB)8&YAP=>3Rn(7k|HNEIcFa|NP`N`wwipyiRiG(VI)A9dEyz z_55E}uHBxS6Ae2SNi4p|z{WPQV?m-um-6Q-?z+n&W_73Fk+ z?LviArb4{&O1gzY9~Cd^uY+IbX23NGWi?P3KuN zo#L~X7PxcuMP$7EqIpb(<)L-LqD2Jp-)pDcSFX-G!s6bVUY-))t)g(gc#U0+cu2l%<}LTtHxIoz!^0;9zbe@{MMQa8=$^OL%I)n1@N@4u_ig$y$T zsa^)n39ohfUADw&^?~NNW)!>;4JzYYU?Q7%eqJhv;>OJ?z2RRZ-riGV(f9df#BN*5 zd|KvK!tU#b&EN0mum5tqzGL%pf5(@G)$0t6yWgGM{@_V_J#%$_h4rJf+lEriT3+io zbvoT!n>N|L`LOfMu|-)&SVCi20!@z#Ha^_bdO9FrrT5c@MYE-z;gC0wm9lnc{e=QF3^Z{?pICz1b_){MKiywaH{<*;&N(t%UX@$Sz3 z1}BPV)bUT3-^~*qU%K@+XU3Jp=)R@bcqZsQb+AtK6WXKeD_1S#ucapN`7BFo=^Gus zge;x;zwWRVSUzWTQT7csnZ?;-_=5k}6ql31^1!X(zOyV!$-4HJiQVU)=O1Xt{}j@j zXV1S@q-9FS>|C9DANcmXH2+t9Ms6pU`GP|v)jw*CKUBs6(W9^oLqb}Z}X>92?S%fP$8P*)| z*O9a=R(rgP=f=^{X#Whor;8(wC*EKEkL{Lc&#`x@bI#6+*z<{vW0BCUORh>!cjYbG zkoWA&_K1*^foyMNbLKS^UR{{GEbjL|bA`=v3dgFG-&!0znZ5q7PdZzoxbc32Pu8zx zH+Q^#%pjbX)fAG_V*Pin75DS-=@D0W6mx{H-Vj{o#x4|TCDkjNJNXDlNA8nft=E%z zz8wFo09y+%M{V}?7bmt?pWShHpN{9FuzBeQk$r#J`6?=WIhdN$*>^UdZAg|r+a_qr zdduKW!j@w*H>ZDiZ}(CC$E~^l<)WpflXq>Fdw=xJ&y(?oO6~tgXS}y&at=8s{6nrY zSYy#Sv&{xm7Ve5zFMF)`Rqne|Ca;~IJUM!YR@Wt!JPQeR&VR=m?BsPO`nXfn#OI}l zC8Pgr^$p=SOusZ}?BFI{C7o}KK#9t&&?GZ&Tji474Nb2xk#s%+!?ji2VYgLvH2l-p@8>q zqI~h)$}{KAK0IvN zu5K2t|6X43mc3pyqwLh$>OAJN!VLM>P93bhD0yU)7e~yoqjBA0|BM=cBu?(y-xYYy z>dpR{d+K*?c)3!tm~-_CfhlKZgmkxFopZxMRJzCe{)Zz+nWu}M+_GWn+eb=8txd6#@^jCc0XcsIL60$%BgiHTd|Z}xu@B(<4mT{ zKb#Pf?>eV$Uiy^TJLrbpZ<|fU`imwmzp-@(k2Blm&6{uR&;Q?I**SAgNzKdup3H)? z6drksyqm}I^+3K_iNpsP6W;}(YRR&9amayxvECYXKNrYx^YHw8c5}aDo{805y-gQ8 z+M@q{TYv8h->-VPedVXzX3HI1blk)`SM=ya0Vk&k4l1b+m_AQ8tgM#3!L;V0W+u}* z+ngew|$W{^xo*YuAbKt6s1wSb1@vHprZHLS|!>x7vCKmLe&@ObBp;10{B5k{Aqrmi&1i4!^9 z6`A_~No=>Mh;Q%f-HT_WaL?~9aNcxj=9IMsH-2(YT>Vq+q^fYiQKr?wX~L1!b)1Q7*oFPRYru*wKH?hZMdsc{qN7~=jy&sd%sy27u<=FSd#9q=qtM9l!1`*nX~5~ z-*`Gbxon&DLSKdNyR(>XTwZNz^I2QazQg*bGs}{qJ;zP2UaJ$xF;HWeTzP0=-!1K! z8U1?}%CDdHKy#z`de7|M&(F^*2TPh=yT0Q7?YtK{`EEUuR=#GJ54W!nyB2Rb+5PwT zrEahMR8%(UG#f6P6uW-oIRnRn3EF0UyCyKNXuKF#blHHd;!)@E4^P+EaDK0OESIx> zE#onV<_kN&o!#;9@qg2A_rK^#1Vlc(b++#Cwl_PM2nTFD?{ze-%<^MG+&NtrRqfTR>EDVx62jpRC&?lNl3Y7d$qo zyV$%d!MQwvmU~xyd~?(I$E)!72kw5q*Sq$sX@+fI#oE*Bk4OJI_`fgKeSJ~hdM2|s zW;<>=Zf;#yQMcLAdu5jMywgw9Z++bt$a83+lE&xk_=;B_`OeNzl?ipJUHrO_Tk-NX zkFYBV`%+GFC++4rHFah3OTC0?pG>wD3q9`c-5(z#?zh^j+($%<*+y}SKse*p)SXNo z3k8;f(jfyt%f^mL8wzAKbRvg4O?`>6Jj%@8_93m=xF8`QF*Y z@c2^O`Me$at^OOoxw`K?z3*z4^TdN?`O-}+YC@6GJ}i9ypl|)X#)GO!+^# z9@zN*+xg>N6+(Ah{eDZCNKYy5l=iE9)_H8hlj93lO?nr@bARjd2Qfx(ZB7~cdo`&> zu039?etOyE71cLSXtebSn>>4_sA^fPe{c zt-?Kzfj2p|Ev2O564%@7J?kTxjZEgPJ|u0!Hsy}9wWZv}b@yL0dM&=2b(kS-!`8V{ zi`_sY*kxAFdakL-_AZ!usIiv)u#jJ$!~?%u8P=R;iR}+FOXt-6G}%}6JbdH6U0jPz zCxuBTU01yGBmQ6h4ErjkRS_|d4G+aRhdr|E(~_JvaaHy8>}!rU9%M;|b*@P2YhAo0 ze8Hsjz%$=%cGSe2;|dpaP}w0l`_Z+_J_*5_{d^`_&wo(NJDWw^iad`Qp=)?cT=;=Qpk zN%tYkg4LeNYQme|bHtXlsYQqQHyrf-F+u(KtJ1Z(Ym}w=Hr~DMCUgA8om&xxQFCXi z&3?J@a^ca1i;wfIiM7yoYi4|;!pF_@Yr{=Hab58*kL1i1r)KbPlKAqw;>||+2d&TN zu?jk>aTa;Z`SYT_ZSVDeEG+_hB1hAe7cIJY>!9)d%?}G^f7B^jLd zHnDGt=zDH_Y=@o6KDjxuo3_NxjLiylWqRtulxLnGo}SzE$zJ=um(;zV+0$gEvb#$K z|G0CY*n4a2M21f$$FFt!Gv8h<@j{SA@R^wS#vL0NGPhn(D>a>bMDyX{AiI(?yZ+71 zT0P4mjbYJd=St&;8;`KCU-VqX=D1R0hw)-5NsS3Db3@siO?(Yy_%3FcO-Qetw)~~r za?{UmOm6!0&*jT1y>)WKeaCsJ69QW<7Fg{3{o$?tTow_5t7{_JSZXeGAHV-D_p$N( zpC_wwm!7E!Pj+h-OEVNlUMV$u3srNqnS13WS8A* z*W~l}^3H1W-4zT@cWV%PyZ=+t2mQc}2U&VUS#)fs-8k_6=a~ew!FSHQ~SKv zt>lKAe%kt5?v)g7G*wBio~d=xL`mT^w-JMLh)4`KOZE%3o0~FS*1c*-yJS1(O2UJ> zWiek5dR|x-^8mM8!Jb?T_@Vqfd?#b?gzC*-sIU_DYC4oz#OUb|6d%|j$g!rgscPqWlZ8;%w`{Bu}6%X?N7OLzlJ1+KW zbI`AEF{1Lb54Jv^vhtbBq=SFwyhs;UPv$gv+_hzi@7Cbtv*)F9W?p71y}fp!N7v4E zI;(Ya(j<#*PI^8w(3!!yJt1B0s@|kJV`kIuv~Rbw2@q7JJa3C zJ6l*e0(X2~TxImCEX~11;!Cvzue;Xipc5L)z>`R_wM##p(CBrWw7}ZB`(~cG!t*Dp za{s$M71O$B25c1-Z|_}n)PDZY+35w(mQFW#^ZjDZ_QoBZ$@0HSb>hl$Mdx&NYg{gE zIdsVO)Q(NYodw-q+RgdaO){d=VH1*>efyeI7pk(coh&R9Pj}S}ahm7wRL678?M>Tr zU9NVYh;+?o-lr91emk(>MZn8b=iOKoG~b#oE;PJsq|-26K&D%}DRYshKgZ=L-5bZ5 zH_zW@y?>S{TiCt!&3Ad4b#z(Mw(Op9@_XTroIaPSD=b)VGrY*pW%5eAzwfUE&$f$w z!f$TwwRtzm*}F^az^_FDC1Nw?vEQ}Q@>vGyT?n-_C7aWW2T-nHZ?5oN5 z$?+bNiW%v)`)(GPxCpsU2ud=L;A8F7)og{7U>9%RyA#s8gi&jsXQ47@yupkm3tN84 z9Q%LC`cNBVJs-2lq?Df3%o4oq5?iNj_}=@T#nn*geP*pHgSExAGoF*hR~~9ES<|5Q zS-Q6rgOW{%kBQPg6S@-hO$;6 z@7I2iDBtShY^t`*pK(Jz?$;YF6>PFn9Lxr^ox9pIV-qYtOz^gip@G z;+`V6t_brxgRDmehgtHZ4Y+tb_g!E)ktK9RY>DFRxl`x<)ORv@E2YCxo_jFyK;c@a z-;o_guhS!MoetU7H)q*NPsIWy_~YL8gIW!m5vhA3mD4&pQ)a&Q+;lq`Lrn)Cy1^|6>d+;I=iw+Q0_k8>-|$Te&u=omB`~Yv$*1z|KwzAn>ie3$SAdnh=@6~ zu({pf^4qFA!SCNM%v<)&xJ>Xei;>1ciZ?ajOUmCmP)W12=@;8nM1Rh~Eq= zf4TGaj$xpwV(LeIM)t~<~o?E1FK;GW0v53^WW#z}dRPW8@Eq>O0 z-rn+U&a&ewcdmDUmxUj3lg`P_SIkp+ELJI$x4N{n@Cwhxp4YC2_4$~#1Q{6Uu}*#X zgq>gJz^6|}EP}uO%1xMe?DY3~$=~-sq`lD4)Xv?|kU3qgGylK%@=R-)lV7$eSuQh5 zZ*8enUbRj)*K4a*hFaZAiB%h4Pdi*Bb4l#b-Za@<{b_G1_`c_#K5F{bS~buyx#`YL zk^85fJC`5$dV(=#vWd5Z2Kz_L$sLBFleVqDddt+@b*jdiE&aA@^aE}tit1Q$@0@yW zUQT7m;(bT%Png=;)EF&dF;(+-W&Ts05UUmewwb3sep!6~X!-lUY*w2$XP8ABG%NDS z+3_4K41DbDW~X=b@(S@6*<}~3&qQzt$Cy|8ebS!FaK=2dBLB=2Mf>PS(EQab+XwJDFE_3Z1t#lVjyGengVF+_2MjM7 zgCrNK9B!Y^w)52SRgyAM2{$U|sO)%l#M9*V+rp$%ZWiCy>OX!|+;3eHr*}Mw+xcvZ zYGrB9qvvJ^BeWZ5{M@Co>Dk4wGXHBIdiZy+Mho<&9xW)&YtA~k>CLLHBjTGM=--U# zC^y)5sPkLG79VRDHuakg^JlM_cl%J;w$-OgN*89@g-@D#F#4PoJNInPB3(g?FVj|? zvU9BT()q^!|4!waC)NIToIzDu_YN7)JX75I)_C~^4?oe>{qyo0lf{OOPqqtRY}n&>`oHB> z;h|guFrC{>-v7}9mC142NSZ(=N;Z{ zmK!sb`Sre&=}+&(%@*c=lb&WBmbWu^p>edykwZ&+rPnsvxURnIwD_h|eYW)5GIr_L zt8d)9;iAKGui&nXuZyj?Zk>Pl%pI9U7HtbvuHWX1Pt}|e>F${n(>6zT)$J#ddMm2RSob-o@o%|x`s?HbwZmNTw+%V- z3$Og!yX|_@s@;Zn+-}{w|9aD$qdpIB$wa)kv_VqZyia&d+{3$)5+<3Qa-8+@n?$T+ zlk)1sdfk{e-;H#TK2wsmvHE-7o2Xm8wRg_9l^xiVb-(_%ta#$mRQKq1o9A}#?sy89 zRh*FB&{|SeaY#wO@Ty+WwSNVtl+;SXI5Y%)e26Lh!p8h%+x7`*n&;+Q@2>rLXJ$CV z8vn^>zud@76V`uoZ?1~xrI4LYDvLj!ap~A~S7*>$3m&{uos6ScfbC$caurswH=>6w));+OZMIAv-|t?#*I!#ti1Vxx%BI9 ze$QL7O6kD8IHMI4%Ud(!N&{m~wUw8vE@5X?z`*Z{l%G{-8oUsT&u-OZoGGv zZVubs+uq;10p#S64Tui<@7+?mI2@1@Et9_A^oLev{d|6i@WV_N1Sm zdsP14>iW*}b-yN8e3{t3aoaw-JjFSy&e!%WcJF`iHh;h9=HlX`J?@MDe{tUN|NDPI zy?r0P%-FkhwZfE*ju!V1pNM>#%e-K{!UQdaPzCO<2WFp+@Hq1?PBQ%U=`z(axuo?c zCo=u|d87T9S&>;q_KscgspU^N6ILZ{zP~}`=x+UWd}rTIJFUVM?s?ED*o<-7X3@7< za~R)UTH(tk!zOYj?LfucsdK|UA9_}9e3HETqS41bd+)`(JneVZL@a-sG;7nP%*XS^ zMME521^wn$39jE$!nOFKfVTE?$BiyNEvwhpl_ArPq|%SZ$vk0U`bnuznYNi-PwY`t zd~zzL+z*@%1>J;$l=_m7c=mXBJc)Aju-wV?sdAl3<}1!M>()IIuK&ha^S=82(bjJ9 z4g2=-DYANWa5|s+XdkuK?B375@`p#ZUhkdC(y`!^Om_dh-sAQ^*(KJ@)z+?Pc6!zF zGAlA>e!1ARQ>Xvu%?O(zJEu5mlkMUaGr}WYZAxk`F*uPiMcgfQ5m!fzLB2IRW4Pl@ zwj|q5SHG!2o8Qjb;l(ih=5u2)?SsK=bq|f6&yi@~b*e_`_=M@IHaD&xo$HW$=$U88 zLD?_Sr*pHFb47)VmK7{u3@({-WTD5WHwr%{XWuzjtEBw8<&ydz3ipt|!K*GA$Q2WW2`QzEZGq+CZQFfHz z|F~I4pM!}*dU31Rd8Y2UUYd7G&&U3Fr_8_5TxP-j*NZRaJi4>9_{1fXnuVLPU;Ict z{&C;;z4F!5raQWvxFlkAzTn|J|Hl*Sf1lq_`*5n4{c3?ypU6p?xlN2v?S7ZzqJYZ1N>g#b-j(_TA znQx_=Pxky~`nXp;+QKC$q3nB|%)Vc|H_BfaNS#&l5Hh+SdI4$MtC zf97R>np2~zaDd7Dmq))cXRq73B3|0&;mixi_D_#hd;20G=(^~Fd90p12cCTsJ2%(1 zd&x}~8TH2t*H1XVcV6=Ylbd_Q*e{-TdEsj0wE1e|Dba1)w;#U{>XA41e45(Ba|S0q z^YGjJVEFe+|G&)haJ_`&T;9rANy*8~-|v3+owL8-VCwY`u7c5m?t=Hep1b|wvivWD zZ}09}Zxg#9wfLUdx%)q#SA60B&%Va?Kg*U&s#B6D_ar%<^*T1CZ)QS}?lImL)xbVh zx1$Qy+&3d`9Ix0syDWxxf3e+mL%r%VcKex`H#!9wX>IkDI;FjAX}V#O@C}d9lj}n& z+g9(0QDe-uJTTY(VNkbl;K}A;pQ!ct*Lw@ED~q&B-X7ANANav>=h=(r*ldq|UhMY7DTi;ZSu#apsdCNRb?XyXUoZZczPxLd-lmz~c?!zv+%=FkLtQpw-Ys)3nx}o-TYzSyK462o@Y7dt;Ir% z^va`GcwJF_JF`{$+?vhLvnFR9IU(}x`^xWiH;znPnU#KQ-}APMOLR34s+sIAIbC`$ zXM4C>eeQ(3wa!bO_f)*%iL3dQdFD*X#NMEs+}wo1M8!L$62b4w=CCBa+Rk{WE!iZ| zO=!Bol3KCJ;Hs791e!l7w4`r82{gJf<+kXJ13YPhYXdWzZUzg@ zi%!?syU?ck^_zq{VpGGecSncZK5{%YV#-SPu-_8fq#s5h&Fyddo9Er`|It5=*_J>4)A~6%wo)l2l1ou_(L=Fq^XepKFQ4z2o_X`8 z{6jwJS+VZhHf;XjqoiHL_~26iR<T5mOS|^dEmvy45qf3 z*5)5|r|MpGl)i4)(7#8hsQ2WSLSK#A9r4B$0To;q|7~miICcF)uh%!;t+>*i{QdbE z>)8vu)*1(@8me#GoIh7(y2a7Qt8}|X80MyTOj0x3a_rdW^oePbZOx1t*LVE8^;%2U z`TN>AS3!w6F7({V&u_L}%t*PUv(!fW%jpx#=g$0f z&i5y)sl-xEyRSR_lZ$gj&xT3g{%e<(ze{%d{?F+KG5Z_Tc^m?HP6d70X7=%GeLZ_# z{qx<0e>R|E5Q?|ce&#rL7<{dkl8iP54Q~8$ntS(B}+qA`2K2VkS zbX@aF8ISgBUJg4tT_nT%)Qm+7nI+0o%`X0`DmXXiSXsh1wwoL(%6n483KO-Nc#9cW z6j{H$yBjX%;uvi2^Mb+2p5HQO7H6>pi_k<)6*Xt;^JP8khRo|8ty;Jt_=TUbvc2Z7 zES9ZlogdEJw`uO3+I=CpHGJ*VsLO8l|El;KE~k8!l66_~Xi1`(+4TwiK`E7H)8g4< z=G9(Uym!Y;vmf7@`5&BHUn5yL&+!;%#&yRze@^5t+Pj12=B$H{&b~jkv)Z0}Zd{95 zvVG6{y8pW^s@_N}5turwiFb=*6~6TwZ5M z-_M%LDz>TD?1YNqvZmxb_E$AAM@_H(U|Mm1;fJSQZ$$uX^3b?`HR0IO=MedwkhWBc^Jebv%j^feOzL8s;@DV)=Nc=jGh` znNl}r#NE%^+FjW@{cGjZ2kc>v@62oiE4Hg$v63i?Hu>+oR#kXaKuf^(Q13Qjnaez{ z+A^M~S~fNu`s&xYy{dmoSjCIo{Z2;&HM}RLMoxQv^RG)uBB;7sZPjDQyjIk7mhOuf z#Y~esOa0ih`J6e@&&@fw-0tV}6PrZ5vR8OKIKp1f`}z1f*=SSq+dDql|B?uM_n*s1 zlF`a_-t&qNjqC-7rSlGaOrCBjexbnPNc#RCm3uxMe!gMnPQ!Iey0|AUVw0-oe|)0a zzUy%QZ-z42olJq7Ia6IET~4l<}Uj}$pRj>wYFUb1>-r!QNBwYg^Ly&HGfR@5!K`TSwDoW!<(tj7~V zYr>XAO?%F|+o)lJsCVz4Ckf|cD+{%+uWMMASgaL$1FBE z58iEg%Q~m_r|1(eN6p@I zqT$K!&u%}=5xFbmoUCo*QuF=%>F{r0iD<+Z%syUQP%*MGgfal;OdjAqCB z2LJkh#y?)k#ve40ZDeWWIVjOQb9LU4d$aGiF5dpvCXGLq@n!~NQ>5`?t_3?+S_#?d zPkeGH?$qQJ8@ZTlUi@z7-SltL^10JLGzD#R3F;9)w%kcC=BdaPn+~!3@>MZ2&ar*D zw7UKLgor;Inig&27C5>;cjD{G8a@{@J&O{J_JylRmd;d9ocG4~?WQ|kSz8OU#bhPw zd#0>T55JYiZpZGI)-y{tD$=s~;xj3;Cmd6>&zwEi>#47H<)*@d(r;N>CKmFmv`w3L zrSvG9b#rcGeG|KoGigSf9^>Dczg}OsC+)Z5aKS(B^}Obd&*LiO(&H-R0v9u?7_hw3 zT>Sq3zhkp1_p%?z+*J9tZ~EuJZBtWMp8Pzgt(kG#_H7sPwgp`F{Itp`*+j1Li{PE& z>vMN(sFHK?nlV!~=Ig}!ZpoSPoc#wFddsBM>wZ0ssDD$pB9Y(f^n^aQABWQITL1q3 z_E6mJPoPR+)BAr9s(-vmx9j};{9NCDjzZ?7^LBH7_}8(wudA27)qQ%wj>w?uopbiD z{jv7%=F*)$DWV~kXRj%7TP9Z?%gM;)f1Q8+<&I;QEp?`L&Mfh9IkRcjf}=Nlf(pEu zZvTw1lw!PoEV3f&d*H>~hK)ORcpEJD@-BLLyRE@y{T23{qDLtl^CnbA9!!tlS?KCC zxoP4tVRx6D$Mg42-&pW?#@hlNZr@EVa@|h5{dRv=yMOeCgthb~iM8t$`h;Da9G6S> z$=SuM=-zx#e2+>Z(+1&m$2V7ETedJ~Z+YQ;Hoqr*qudVZzy%Kur|c@}eduN#z32L| zpgXz#53Kv`coda07EgR_)BpI#LY2%tO=mB@wqx*Hd4B!fjSIJ)az7lX*WxfQ-DB+> zo{S=I{)7wi59U?BKltsNSj&_Ek%u?h>txyU>)4e%RdtN+-B)ODx(ZyNuhu#UBKYpP5-ZlHDLCWHnJUevT z@*g|vXz5EFyvU`tI?0nMMphx&=?Y)=lvOUz!Y}cuX*$~dWT+~uTcw%GTD5yXKT_qu8xT_VjJ&DZql*6E$Q||Z2z>q z&(2TWVb$<9t-*^?Avv}$F)i=gH>Z%S%Q1fL(&E=XKew!0chUN@%_Ivak)sMqC2464 z0&a^%?pHohyi{7-S>^35CfwW-gqVKV9yILYC8Nn+{ZFPrb*+hg&AUy%Vc)c;CB z%B|3b$?@=_w!}EI$m{MkI|Xp{q=(-&%s!u>p9zkllN`@?zP}w>BIi~i0?<%Dp<&< zM;L8gmZ_vN<;>AwTepN@E|s%lQFG09ad*EcNh_#(%Czsx(euf9mHK>fg{pG@4<<|S zuyJ_lwaOSb&;CF8arK1;9>#nP`DMm&+n=0oc%a_N`FY8#E|XU|R-Y!%$&U?~d;Pmy zJx}0fPNjqk@?T1)*?TzcvjLxSWVO%y#4ZP^nV zOo9*pc|Ld{+k!F9pw)sDA=r6D|W)@-!;`k!BTi$-p>&Xswt9XtEbo%#AvHqY| zcGhc~LFPl{qpNDQ`_E5q*ed&$;RR;l8Fn!xf{?UQg3=FYK@2`>$V}FQ!vOINLNTc)0 zfEA}sb*=id@B7{A{neebS`s^EpH9@R`F=uhOLUUmxj=4FA;--(UmS~Y)mNGJ@|n{Y z&R>st&t$#4EMcU?aQS%9vg`lql@A_ryO+DScEk0yWyOnLxxc^hH6ZqP?AEHe%jf?T zb2@pX`kYj=!1Df9-}=orbK?G6hKC;CXmBecTUUS2huA|3FOEy8O_O&8;I{eL|+ zeevCsO9Ga$hHNjdl9@Oo{gjJ?dX@5=&FAcw9cK>w{^sme{>@yG?Z0(%iBa0L zZTFc}?h3nvaa=g+Ke4d*onT~X>z0k*WHxEe-dh@w%44i@~?ekamSu@R*$vWH^(#yi8r=?koT6W|w|z z|EgF%)0FR&)2&i`?BGfAX(r1+(*mXD6Q@oaXlP%V+h7Quh-(Pd;a7>scJJ z_G(qdtTXz~Qh~p0J3i}me)?YI_FmO?zxa`FZZa3GRHM$X>r1fxnSWhg%Dm>@%H1lR{{#XBho#xAmpcDVyI1DwGPLVil`~B|uX(w0C z%YFRhzuotx`XBBX`v+%V%lM_ZyY5lELE-0zF4t$zG~>yx*30~OD$OC2dzHnJ8*9rS z`@UPS&BlLqpz@b!m&X3S$7b&2865yRT_g{C4Q4(&qNbZCxwnCZFRAzqDC3KSKV_G~1kI zf4tYvUv$P|O~<^H^J{|4N-YI!Id6ZQrMcbrEBh{8lNTn6yUH_92z+`el3^5-ntWZp zvOo@&u0;H4-l-mM^SdZYZaZqEH(xy=*2b~EZ<63+b9cEodkrgKgP!-cyJzkCd( z_x7LBKX1ipc6TG!jdz)=_*tjc-oJFpsQ!z3y@y0whU~^&Q7f;8ukPP_A*Qybc+<^2 z|2FF>K2^Q`(eJ3*y*2@@z`KY)qM>}Ot~`y+%ChEndC%$gKj8H@ z*jYMZbFr_R+IHbq#-yiLYyT0-7ouAid?k$mA&ElA{C+{fVQcs@TxGCtXOyunUBAc$<-Lv_Pq08H)9G8~O4E>twy<^I2b?3#` z?@gQgTVKOB@3`!J$HQikJ1TlEO_MJ0PE~tftNz^n`}7$Wi!y6#_D_w-TW|dA&BL%w z!p^(i%+Njam#fzP_5Zp)rq^?(=lZ|dRm+_0Qx(IwX}5XpKK;8AY>jF;($XS14Ny1#{A-Lex5~~inYd}Q#f@x@T-Hn423v~tnQwn< zxX5Dvd3|Tr=_~1amvXKN7M{tdnL9PVc9MAioF%5^tvj~$^g6G(IwL|oZINV0aNsaW?<<(4vzpLNnjZ5}LhDlqcKQ zGi6iMrAJcR_a47?bMF@gqfCuxE8Z3Jwp@%eY<%-kBskZ$;<&SJa7xJS?`o?5WOZ)k zUsw^!5%%ojR<6eThvFj-1o9n|NYaVh*kf+e7q0O@lzqZcBd47%R)==D?)fCJZt<>G z(KVH`R{DJNH~Sirrlx+m_>|x5v}yL2ZG$Ji_59tU(kSYn)oQ-0wOGHFIag;@L`uSY z*&f*nZsYj>JdS(4{3;`oU&QsCG3&U;_Sx( zW$2pDo_lqR*UT-oH5ER0tyouA_tP2k`C0CjD$n*b-v9M#nFao zObGFK89F_DN6FKoOF6gnr|kS`Iq%0MaR-%o8TXFpow{sZ@=?IZl_`f`{D4$oe$^ez zMRJRFFn`wQ3=m4skTAA5bK#nF#+mrXe}>E3|#j`*e-Io@Bw; zSH_wP9+aftb}&CV|EYP9hEFO_YA`bqb4%wCSPG!4)SU>0B{*qbG4u$?nlYP5g;>`2T-i4xSpNgJ76YOi&;$7sn zTp&+w$&s_78ohpoh4-s9^7eC1J)Imd_t~Vcey=xO*m(EYoR!I?s}{VzyV|Gr-KK2) zjd9Hum!Ihvdzrn~*iy1WPhWAbjo8T}bNQ8J`menbTKD*o$IW+&Z&&Ja%YWV6`f{$p z5w_iW`A5F5xqWrx>-~Pe`t;ae@RnR?>NU>%Wy$^J_m6kMacSu%KRhw^FaCJPvgjz2 zrGC2X)3DXur~CgZOxp)4-S*vCcu-+gh`qW%yUh8|Ny!zDUi*LOW54fbH=Uj3xSz~% z7pd!|oKbeS<^L$eE!^_#?Nz(2TsyakPuv^A=6hl99mi)PdM@7=3h4Yh#T35px2az3 zTVs=RvdZhiI~E&gdU+|ywpu?h+E6>=Qpn7;<@xCauQ~iK9+WN6%-3B!CFSWYu0Vl> z(X(cXuQ&dDNc7e7@D3?KH|ds!n%dUl|1a-vDtX1Rz2<}X%sp@A<|OU(J~&mBZAFj9 zfs^wd9F6+y+q>HOQ{v6Ne`cKBa&poKKev<#q3g;tQ+^-eQ~96QSv&vMBb~KREuZz< zo<8L5FBr4GLArfGa*IeyV#DhlSDLM^rim)DJPn$8V!hx|!z#VD&q7OWY|bwZ(YhR> z*ZsUNc;CY?uiM{^w!F{lntVI(+^p?oVn)9E73Vev1lygNdbiSP!#0`OZaOKdFE<@u zthd+Pi{YnGvvnSmj#{6_+Z(4JTrrdKHojq@)RUZL<}q!-Em^-DpR^o@OUswdSag1! zSJfw9t*|DAvDcvSkOo5q=`%Pj7HxBT^}TZG+9B70?M zc=M}Ir=GL3wfk)fxDU==Z>%<1T>FxJ?)PzBoaAXF7#Pl>v<=CIH91> z^3THE9MhQ2+0?g%+x-=~K5t(GFHfM%;w@<(Z|ZOQbt|yU?vL=DPs01X3TwELc~MYWvwYwfnx=FlnL-;!1Z_KVB+^j>;WHi7S0*SeZHddwjk?zOnRLX}v^FU`ZhUU43|zxiP2JNdeAOC0snFaO@~jaRN_Z{qWx-qS5A z|D^UbXmDk2jrwZ9^Y7Quw5xv+V`@fb`pM)lw1;`}bKmSKo`3eOQ+a4xNmtw`+c<>bwq z&a8B|KeclIuh>7@=>~PO!tN1?8zR{FdJ2EU+a1_l_k6F+KlO6My3Z`mkDZ@WsCH@yC%3jW1`^$ zk%&WXQ=bZ-FZ^d*f8@{P`O7NbS#+f`1R6_5ubkAtb0C5`)QzRt5oTU z-lvi`ERTHH78r7GVTfL!hIpau^f}XyCw+9DpS9Jga>1MxU!+32>UyUd>u)UjrxKVd zw>;pGE}z2Es9>$MX|Cp*6gJxm$CR0CYHI~ZKI~NZm@NEu(R!Jq2d?lP%d6&Qj?Q=S zaLq29b~Al{gCW~>!50=!eq5ZMu`TM&?yq4fS_@wn3BT|z`4ZnFVmsrNRrJi>D@oEP zr{3rI^zQSI`=?*j&+X2UKM}x{wD#wn>H7|xe0;!#9<@71gCy;lB9P3$4hoyQ0m>zO`nw-k_@6O&k zUpJQK)OBQQ0nw`MNjH`LX%G=<%;JEWR)l-sZK?oiZ^}UR=qzyD#vzR($Gp8J9!X zHEzz`pKQ$Qv$T6sTJE8XZ-1v8i8|bw-oM9hGP4Evm{lDgN{<rHSEuX{+j>)T_6)1k@oz^mD?<4v#QJ{%)EIob7gtv|le))vF z^fi?B@vxP*Hnu)}-}aMa55xJh8>3ck@mV8ZYngSmF5vaOw9P-=ckz7t?0DhV+C|ZF z-->nyt-kog{@>C0n`>{I@ifhOoV0Y&p3l!xnodmGC3*R{p1#rTy}vJhZ5GRJjOuF$ z+k5Eh^Z5_nES6tb`nJ?(bK6Bjj_%p#4Qv1Fz5D%MKIM6{b>SyHw&wnR7ll9;77i9Y zJvlkOJSQD>1(8#$%JytLw2`aPDbh38gG&F5V+36Rg^mBqlCCIqmXNjm?tlO>W0-c*{0>?ahme z=W{#ke>0o+b9%yDZIhYLRm>h$9QpNheO>gzTB%;cS@|}feU;W~iga@*`pUR$J~m7L zufp{`z7lWcU*0k^5xHs56?1;~_0vyJ-8!;q)1EUsH>YzRW>6H3t8CHzZgb|xz2>=Z zzkVr^Pp=5PSsZuzS4-;W;2`ejS68nu{`JxR`Kxd{&pkDBR|NXTSs$7ttzYnA`n#uZ z_y6N7yIaY8D%3+|k?)7714oZKK76RS#^K_#9F7f#9!)Y)SLWID_Y4nPH)EpU+svb% zZMNOt*1K?S@|APz7x`?;&Fo!R_SPn=V$R3C?LvAA*;+Frea=L!d~xQN^YWKzER2zn z1!8wSQZJ}YmYX%zo!jBXgkwL2V}6}d-}&o_a>s_&*E?h%#d|m|QRWJEE!&sP|NY0Z{CbkD|tQF3wEs%cv z-EWawtc$1MHl{^xE;5;0IysrtpXtZymXMzLz^Ha!qAVB`Uoy`tZO}O-=pRfzYI6qs+rc zPx3z4bWh{iz3rQSMCyl5DP`JFn_zMAbItC3W#_kSo_Ly};O8sRe~177trlTt`%pXo z)Tf};S6BSsdgi&EwKN;JTloL`tdG$?n$LYi*vyYx-J5(`oGW3ap1yjke|Ab`%U=6$ zr$vr0zn-8n_hgTFHt$mYM|ZcHGYMp${q$Ph@@HrL`BNLyImFjJxIT%&^dZ+VKL3x~ z>Obqf`!%y#;>IkN^{V?-v<%tKJj;q|6ypp}Zgq|7Y;G2u6>;RPoAN}nLe&n}9(O_j0idjcR;OEfcn^o8!vUXSl6e-pg|C%cCjXi(fqx-4s0G z&ChDHZ0%gPUFMg&-}N(kzu6vP^Do!0{@MShzc$A!tXU_}DwrsfxK!0XA|az{%H8+7 zXa3z^!T!6h%-;F8TYxj)E#tR;7eD!@5t9BZJ74MHg9ndF@0Aqhn@ zW1qX$zLm!XeikvVYO~<@*sS1bAj)<8*o~=?QeUNhe$4#zRB_3a*syrN{*&qXwr7kk zt8Jb=#VsPmcUE=pWZs0aJfwI`m6d; zx&M|g?tS&>S<2?hzv4Te`N;TsE>~JolTlKWWYXjG(mZ;u@25K-EUN1tg%@x?J?Cj+ z8@tSaza;t7qV(PSHuEPXJ?pbSe)G89sZ*!#FR?72YQZHKr0{9dNA~RnALidZ*!cbK zIS0d^Rc;bnE@TJ_tMjm}vc0IWaMId}lI5JLXOC=~Dbu=zvwyNikZ_KRf|aYd&c+VM zNVYP*MeIDEkEbgzxLa8`y#7_mR(98^u*lluW+8`w?aPH~%1RwZedp%#*6+I8zqvgo zxB8l`QL9-*?6Xss=Rdym`2WOP+3p!@)(N;U?u?mNqv>CnG~wdjv@%% zC(oRGljoV88Dra?cTFK&X-%lXS}UV(l5%p-`kc3K|7mkkmqp-jk8!U2^#=1<6)%$c z4@+&|ye_cAyrA@5rb4azF1z!qS66nGR+~RRxBr~{Kl^$Ifo&OEXO-2JZM(H5^#6yY z3x59KuiAS%$L#-!>te@eAAIC-eW$3SX3kG9kH(O$Pv30seE8tM@Dp=vL1enH-RE1U zoa8&+9m*;>@>P7_!I$U%7_L^Iue>Jgf|c7Yp>m7!S9X_ec-(Amv|;a&7e^wJW-H!$ z$H3&XyRo7|ww{5JL)%KdtRX_hiSc}ug~gJ!YGP8&Z#&pyVpur;s7=gB?3g>_p{;Yr zro(qGN;X{;J0@|cs`b|)p2yqoIoq6m z;=>GgY?^oT2h82+@c7s385fqvXnowqe!nkhrp~o>$2L2@>-|y9va@PPB!w{)2k`iL2h?8?GfC-1e&X^|2TKQ_sCvdNyry<=^RZ z^Gb5mmRdc#{`%>Lt5ymuu1lu~TuOZO;r7jc)4o4=@@cNqEZ;M4ZfrV{w{*e@hYYK} zon=p==lr@-zo6=s>!B*qr7{6ckIr%C{dr(_=PzHB>lAkOnRg6Z1Da;AaCxhXZr5c! z&?Hv)DM|2T{X~z{OS$JbS~IpEd!q7Q{gdBB4uPEA9Lsq%XLcnmd2O(*dX7QQ3b|-U zg^z#L3R5R~9PhbXBw-#OvH4c`%(t~0_w78<6Jx1ebZO1b)aYFc%@}fZ&K{LKXZtPi z*}k6=2j8U5>a|Lg*(&IA`b(|#&cEXCp7q7=ncX>Cz2FmHBS%K3Sk#M@P0ov2-yKMc zI`XzNZ>@^z_X{Pnww?2t@UmvIjLEfs94tW|cO0iryzO3?f6n;#th+JG6g_d>^UJ^myq^VGn~=0r2UjmNpuxdI*6_Q!uY+xjwe!`HIOI@7d%eXv|~p5>CM{ z(muAecUiCXPY^q8zW*;z{qGm)8X{d5>)co0T-CPk|HkQuuPv{a$hw=hxw7~`=Eo^T z^S57<6AHSwMCQ1w$1?dJ4AFdd`wQ-v?r<(yFO^c9cIoBv;#=mkekPwUcz4l$Y2`x} z$6C>3o?B9PPC9P;U;f_Z?t%}^u2Ym}-mp4)r7zRQ#^&|b<+GMNS-PQLh|hBN;RV-) zOk90@?)r0>Zg&enolfF+$-gxBgv3Y(Sr%EMm8J>BeD{L}tw#m9HA8O}^-EfIGk(?1%!K*B? zbgud0JvHr*z23)~JzqZk-isZ2DSQSiO@qSLPIH>(#36IsvC=Z7u;bX&%`Ma84o_@q zbedOg^M#MA_0TW9&F6e~%5!_pzp!~;nqt+53+pCqt`qj#KUePeF@w1ki=W+4_jW(< z=a5bPmx=a?m4$-Iyb(>mUcD+j|MlNl(fvDj-OMpt|6YF1vnsLd`(_3`ajD zm*uaW@o_Kv#GtjTyj@=}?|o?*va~+h>aS3`{9lcKM}=9odRgbYC>`&5^W*GyqmS?Y z>cmxWhBt0gG{09Qth`wHq+gH60|j>WRMB+>p1~zbP9?urt67_F;+_B0iq)u^%l`;d zSCg)S>!$9>ex?&UE@Xs6t=agbtw^NZE5@>F=BceuUDmBl{^K@vZTUXg?GdkzsFeR` z-WH`lTW6-LeGt3Q%*G3wez$7Af4W|$;Op#u95VCPW|-a*vtK!vM0>S>(&#J z(-0NiVWF~NNm)|YW!1Jksb%|aEh(#GO`KdU-!Ax~?QwD$)0PqHw{3Z?|vmecd+i*r8*rd$t>0Y{%nT*Po}A>pKJ2;ZK>4Xn5P-C^=ini{7=8G%cp*np6{x2K4GgGhw~zf zBf1rDYX954`@MDhrmq*axwQGZ__Sme>nPkx>e!*o#&LU?>^2$D!&a|irU5wi7{*bf((g%ja)ovZkzMsA3HbpP6nGhjsY1VX$ zX|2K%lfB$i^|wW*ns1r0thDRQ`|xR9FIGE=Wp7&`bh)orz~gx0!>!6LQ(e1SWu692 z-2HCP=G^GZ{BqUGC)O-Ku>N$%#=CMhd%FzoEtt7MP~WA$`G7Qs=&u!*Bd-lXdMp(!nzxe-a(&k^U_=9_Imk3mBF8LeNx8iB|V~cH-nud-Zl||a? z7VlD8u=z)2`Yprk=#PDzmjAD$M^^mG7ffW{f77RH$8w3v^KX6jKR0-yV#Tu}u9kO- zqS&;9mjss9Xx^MIsK?f==C@43$tPvSx$ww2u?d-(jQ78%Tdm%~$ZPTR!>S%>B&j=WBQ8FOHBq)@G+J_tW@L_`X)j zTZc~cZck!ZZ_{+qaO-PvhJzQb&Gk60%B3vkZ*%_Y`Z}&>dXF^KGbcr`wVlqXyv}#; zQ*?fE%5jY_M;8z89}*^(dzM_h(K5Zuvtm}sD-S*nO?hF}Q^wqvym~xXSPpsh7#uNs z_ra{Mv|#OYpDBk*rqo?JwJkN^ikP*Eua-cak>oC+_s?Xi>wc#7T-B+`o%SqCI8$}4 z+uV$2N~*t8pBehte7P**roOSGFGH#KT%XVPzG*K!Yu_$a4e|)~Y!sB+mCN^Ps=LI! zYU{7u>xCYD__T3)Wb9faGqbL(ZA+KBw3wRN&3kED%VW8@e&b%=ROW*YWs(_pRW1oD zPx$MWJO9GgHJU44Bp9__Jx^5onLji5w<2w^uRu2~TauL*9SWGWu-c*xyjHV4zX{a;M3&;Kj* z@l@#_H|0)NjU7|+=B0htx9yRbtnv8adOZQtRUZ64DH76i4+v|1%rDH9Rx@h5x!QP+ zZDrfeosx?b6qMYyCzVV&km1CYqM0diHtN#X7Lk*`W!raV8^>roJGr~^Sec(u?c*>v zH8+V5r*d!jls&rk=$ohA)ZqNx+1Bj;pT^4kyg#p%OCx(m_0P;@@9O2(UR7OJ`*Xcu zUF$UKj!tKmfb}|tzYk6BIK@-7)9J>l$GrXtIy(FRaozv9_dla>>zyyb`%ld)|0AOP z+|S_iQ~w8HX_Fspws7<6{J>&flcC>U_tZdnx0|4npve)XV~!7R$Z)lHtWa+8knY~V zw34+qs<|tkadLsaqT<)5p{JfEcKJ2RRBq|fe9B(X9>X+=_tTYNzsRf8e2!OC$m;oS zxw&!5_pXZ(K8sjHCVhJ6`0ej!W)9Veilk`;rYb#5GRKc*hHOmVe>!R1ktfXW)y<8z zs@Wy(O|HnQT>N5Md-uH5TPiz49-P>^!7P{ca(<=$_4!pi_akQc&gY)4Z)j$9>dYOP z`Tu773$Q5u{&x4&@B6>&Y|h_Kc=e*N``vP(*IR$Qx32B@cPi!L^T|itF8j^zXq1!C z?K6%4|IFOt=Pk|Xwbxr-?`rrmd+ROF>@)E)Utd4ukM6ylW0t?}b!xJYa^E6G#g@$l z&n&Fp)s|mZO0F{S{@K>ICETGnvyXfJe~GoLpJ(XmFIp_|QZpye@T32Gwf)5+iLyG= zejN&Z(%|UH$v5RV+oZGgtA)4n2y9h4CsW@W-oM{zZtk`3SU`oS+!bL<3yqCvU^)6Ti1QgJGRa5!J`X{T66SQ zFPj{3tA-_^cj>e6$hfFw`$87)yrhujy2VF$vi~u*w;5|%j~;cMQdkhh^-?oLp>ygn zUCSp$m2Jn|PKXyh>8fmFYu7j>)TVOm;I^GxuIOo$-d@Ign3JWiMB~1}5nlUJVMpyJ zuf+8paZQhKU!$l0*yQz!D(0#BM*ptyKYYS1J2k3o-HDZX`&J7}s2dlodu#U7r`l2K znz@D9(GT-(uZXpDkCA!w!dri1Zq+RP`lqM&d^p6t<&W6;`d)3I-!&)@Wlytw;s>uYuGWS;v~-z5LN`*=JeE=nXp zQ>1HI)XbeqI{segt6MF8EY!}MJ?HG~7qf!$c=m*I?2NVaa=o?T^FjUx&$#E>2u^im zyVUWhWd5^5=Jv*5nhj-r&DB=;_h)eWzy%FJGa%Ug-5UhXuJFX-T*J5?CI3Ez!Pi!D_y7f1oA% zYTjil9V1evsFeKFonN)}*rPj4$0F`Dwa+fLUbTA03SnuTz$d3GmEwz^-WI<&(T(BX zC7yX+Iq!O}?Fb6Gv$Oxv4>7&EuakRbg(WFSw!V0%>+^Phw+4^J_oe;9an{|>HBw|Y zefqV!;%sWx>Canc@fOAPDe!6Dw>cGE_jaw%{cXIODq@!}UO)MbZ=!xpQqrHc^Pm10 ziJzPE{A=*@8P@f4pUza((iV;C4O_J1@~jntg4diMxw*(3Z<*--g5Bh=+SaJ4x3Z?X zt#z#3>XuqJ^XO`BopZVY(JK{`rh0V6wu%O9V7+5@UpesP9OV-y&Z`D_aZPsp6kOS) zI={f|z>!&Qd#4>(o!EUK-*MfE1JmY8JS^eVTJmOIQPtb*Yp!A`6I3RDT>rVt_0Q4B zrc+7_8(&{vU-;_C={)1pnUkS?S+uG?w9U6)@)w;((uCXxQ`5b zjb7gKT=qS?gZG5o?zVGtZAvGduX}d6tgy2~-T9Tc zCV%$iv$J0ad0oww*`Kg>=k370aNA$Jv$~C+u(?}B>^eC|;xbc1>#e88F+YE$e|)Yd zynQ&rV6R2vs}?Oo%j3K=9t|D zoU&Ob8cS5n%p~k1cTTtLG?l!&)vr&_%xm6)i=6k;Z+Ed>Hi}SpJHjN=a&42;u{l*= zMN4FgPwW1^VYZ7oRoKwUHT**^cjm#;m~Hl3CM(Y`S-C%I;R8{FK%df7N%i?lqQpK~ zKHK-HP)pywcSh}8r<2O_rBe;MBLAEdx3sqM%ubzmRD7RTV@H~?LllR$XqbS8wx*cZ zlTVe)%JZLZyKi@9+wU?Z*HgQ1m=#R*;cMjJV4D9^oBK@6KCiV=i=$$F=d4cd@a;LZ z@<_bj1Y~ZzZH4KX?S#dGcx3p~P)0?VyCY}B<&2!t^ z8+}qC8Vile9JW2)l54obY+{PLR?3%chGqZn#QCi=iL|lmSK3$@H*0>PgMIs#qAACg zYrNgb+!7;xa#B~&rekwoIxWBL*WLSN)(xe(EkUfa4TZ`xWY*g_1w=l1_0&7$&svL9 zj_qwH8=1DtTO2uZqoUrh;jB}<=F9u(mp7ZsJAS#W|2$60}|MRb>6nx1E{m#L( z?rhw1eY=n0zb-xPzEo^0^E46J`z!Ws+w;l!w0HirALi#x#of!itdb8@ z%N*B~c*#-zi*4KeGIOua(vy={s)QcV^{fB4e#Xyl;+;~fBa#E=Iq`_!_;vpN$!Xi= zvh?M&Y@!!zE0}re=;H`!1s0xOp3T3n*?RbI+O*@)<@i5p#n;yfvKxAI>v;G~Ns&6y zk}ucN4GCM1vavaJ^XeYkelo7xZ%6l*V6_j@vOH?@&u^|S;;+uzHL><~-c!Cx z{_3ZRc@wN>mZ?Q1b#|>)5a8kC7usUNeSdGC!=s&YN1Y}voS3-n&IaBj-z#eb_0CQx zW_h~N$o`kH{Ijp&{=qY6KRoq0-ucYjWeT+u0v=aYit>sSMg zkF-d|OsMS4XyOz8xp{VZAyexnKDVqK>yMEdjX_-=?pt2@{xO)z@mwrDlhtnNL!rJR ztKU8^jtZUE~sgw;^y(ZwsuJ$_*3Zg}KgcVoI zid88u-kiE;dbxjsd86U94MzSk@v3XWKeQd^i00*b9DQ?tHv9IwyZW2i`Pcn-+Uqju z?Ne`-e2L3@^0;12cXrq{nyWmgijTQ;C`rPtMG9DjsrdU8=e)@7~Gvf6uKiejoilF{P^M@^L?*>#r9$ySckp zyil)`$>mwU_m9!Fh)+9Z*1cA2NqGIcyzuw>d!GAZ4k#LK;NiS@d=XM%={ir^+&Hzk zj}#vHk^6na-?jE#rfm;5dVb@1y5sx1-IDUs@15TrJ2m|!Y%M@{Uh}rNNBiT2(!`oK zOPh4`rkvipBVxL5YlQs2%XQToHyu)r|1-y~@Xw4rWgl&R)-Y!4*1b3{tvWwnXYHSV z7msEAI2?1^EOCqZ&8K|)vE5p$=W|D`on748Bz-1U(D?ZL^y|&?Z)W5!+xDZ+$D%X) z_`Kznf0@kuro?Eye{|R6_sFn#3HVlN~Crd7fHHtexEU_*Uu5+)JmHtl;X97CcpW!*FN! zZN7K@J7xtaJ0ILL(|HQ3d3Upj>`(8SxHPX?YfyFAp!xT)75g^%T;VxcDfd|T zaZg|0hllmQ67#IL%#Yf8@ZRkFq#UEhly}t+?9~3F_^!YnRL&J}x%|89h`scB~9rHK+EgNjEoli1uoM=qV)yOJ{pb z@LsjoG5>(Di;~-n7Dqv`Ej<&hI41^cxyu|qd11NZ6V^f*Wv50imAr$hCXPmduGv8b z+!>i2uXIbapG{qS+_L1jY)`*m$u#fM=s*plKa*5v25jF~&AwV(JEs1P(XN%8hbJ^K zL`E+t`;#elZ28Px&to;NzdbRBd9T>oyM_VhR`hR;Gj2Pp6ufdNZ^Kl+X!#2J-S@sR zE;3LvYumZ_z7j{xw9>`7=WeR&tnHS0#oT=J-#3HoZpUr*;gfs!o^?u*?O0ddS@M|m zir3n-`4#VG{k7Q8yac_^x(SLYIkPlnJw#m!HY zi;NzoNvX|Tz#@^nF)-RzOgbk;_{14cC8N80rvI63%Au(#=Dp`LGrzHwQPb<4HzcM6 zteB%>W_YPlv27v;S5iY}I(PROeb?ix4t~Aqvhmqdo1&jG+y5MTd*|1|zY*sJ zIyELrZud2sK5bgX*Bjb8XZ0Rkk9uJ-lV^?D+coo21h1ZYBFE|fXqVi)*NRINt{E;; z*?1`_S}ao~P(tXZqDSKi&JVg_(H~e2O+L9K*yG(|116>J+2sbeN_+zL#`HC5ZKy6W zU;NWBYS~Ry5s&F9)^Rzh?U$}F{F|z_YSxPDGEb9w(kd1-yl<}%zI~Fnf9vcJwHE!k zNmX^}ms@VUS-8JkKAJO22=7e)2&OAUC+MQzKMd^%P9=*)EcbFuq>*eAvC zPhM7%b@q(+`3L9Y4jnPvxN*lk@4Vv{llf&_s<@ncvb!3Nc1S#8xhkG}EPSWl)TpU5 zwT)SLK*UvDQpyKzKVhfTV%!?ChUqt8lb za{%ZoAg?}!%d|zFsb)x5< zr>A@P_=B~?b}yfnQ{lHhx;TGx#Pff9CT2UZMZHdM-LP--*ZsHV$FB^1``Eu`rKz!X z^cvkzm17Uu?T#jCmc_hZ)AL1r%ZAy#X>UV!RPNPu_giTvWg?|7kvwbNmNT`l3#aMN zJ0@{CkhQh0d+KKOj#r{Rh7s8YuI(r1*Kj|zz0A2#chR>`^A9C;NSQub(Wj$vWrGu+ zN0#H%uKi6qr;hL{uv=Zb(U!S?o6a$n86CaCpW;(Iav~?3nByZ7+WI6!|4xfYn3rPg z)GNQgg)G~u#+U4qV7SlCQcLlu>JC?aU6bi=Dra4>W?hsPmeIx5I#J1*@1DcDDa$A5 zKl1E<9ll<;)iAc`I^V_J-?Z(De@ZRy+wYaTvg!E_5iZuQR;6*97DS}CkPbGMmu#P`A}&03Zb%!S5I$E8*ZE5$!y*)-$FzL#M=-%KaUFN&UZ zqQB#?#mtz76a5CaRQ@F%N@!wPz2%Y+YvLj%ANBTWjW^0BEUev~|JXLa-u%0Lfqt`d z>KY@RjVChWQX3fEj!5JO@_%@Iul?q#ZE6N-x9iU(71~T+$-eC7w|lWC<{bJu>Et;# z!)3cXzJ3XOWjuYuwX&loOG?9*PJBG`xBg1=?9TU{JoZhUd=>w-n};ojI!tu}!o#ouqgTN99ySSNFxX{Q9?&`~J4(E0|32N)1~ry62#b zdF_j^Z#5PA+cJcYr?Dt1u8+4puDxC^xw3MiMvua#lSjnYAN(71;>qu6Cxcd(sPw%~ zP-@=5q&~fYecof$#6s7`ZBh$w^KsAf5zANR?o-Xn%t;BXR9|_iFv!3)P;J8V7bg6+ zU(8NDH8L~fP_^26WqB*Bn*^(l9^d4oNe*lwrKX*w8#?Qy*SYST^lYZpMK2G-_(P#` zmd71k?KYk=ta-e);%CiqdEQ;B-<54fgkn?_GL_UOT9!+-C+SK}W+~g8_((wO(urqtT*OrT&Urqt z%q?s^+_;>be;$@cYDV;FqMClQR)7_`% z*!|L)dQ)_X_T)@=wLH#F*9i_*T8+nJ8cio0c0O^0-_N~p`3=icj$$e{UK z!o|EAlbyB^ErJ~Z2Y^zCHVV{YyrV%AqHy=>iIHQDH8XU^NFN!Mm( za{bb}y~&b$Z~S8aBM06*+Vl5^^8C18xA*@H30BzlJjUNkv#?0cFzw-1;p6{G-u;?t z|M%9Ns}-A@a?NJ{&sxX2_-%s7yxyhx3#mme~?akc}sOp&BU9^{ug(A_`mV{ zvW=Tkuh-tsf4ld*rRm+DXN%AKZrXiP?d}whiQ7C+PDzp8q-(h`)zx5<1>2;W!lna^ zlOzmU4saw%l-VeF$hdDyl-{)Vgs`TUm}*eYO3$vGP3mR)=f&@@dpx&Y>fDC*nuz7E zuGQvn{S;6atK`3svFH1%Yip}lpNp#gd%gaL*(4>`i>_i^=l+Y&UsPQt>1lOVL($B> zrOhef{k7~R7J=EbtOS^lVox!xS$4g|v*M!+lX>ldT6Zrk-ACqjoerxT9 zCvROu6slU!T#<2DK7Vs|`iX9tmmC+>!tQW}z18G*n+i(Yz`jO3yBqubkukJ$Byhi!x$863qHFe=Y0&#{bodE;qmRVZB5B+VfB6S4=3D z-|sMaWo4SKX!*8xAO39Lcl6pZwn<-}_xP$DbGQ~fIcT!GB*F507_x;4;4vDJ@T`&5U zU)A+3x05?xsW)-)Pp3XU_0-<&mv3KL`#tJ__8!T^=SOpoStq~Rbf~(2>$JM%&R1Ei zrpqb5)_-*CyTzH8dk&dcew#P-&mKOVE$i)PpO*aOIs2;zms~;ev|W;U=WhPt2!69$ z^V|O0dQYu87~e14>iKeSu+#q8zl*E)7C*lGrT^be{Wms$TlEzRmfe0iLx6eWi`;2@ z>wbS*yWjHO-QUvst!YIud;4aeeZRMDa*|E%9qy|cmu82g)~8l3+&;nk`?;&)EAsZ8 ztN5+A?_)_-Y?XaQ>t*|oD(fyQcjX5w$IjMXTs}qL{mtHwR>!Jqf;As&X0uKgQ`vHB z#scq5r4G}#>aOZik9(??q!z2Y`g?z#8phCNmwxYG_2daFz8PJMXge$@t{<25@W`TF z!b?0tr`o)kw`hxV*&nfcRc)Ck4t(?QoYB%LRpOTTc&GJ-i3Uj@OV9pf*ZX)Pxj$je z-sdXZyQ6p4Jbroq;qCbP#VTcT$?m$m$&mHmgOBR zQd+w%J>+}6=J@Uk8!=}!$-Dd2Ozn*`i558q z|K|C&>~w!2`CgLenJ4SQxot**b|F0xI(IIf*{Iz6Y7kmX!JBvNnl(!xuIBMi@qg2^jDFsa&p7pJ zN0zMl?E9Oq-<42X-c!3ws`p*bvB^o5sfOIU%Xe3o-#fedW6Kn!UY2Whj}FiIvC#eY zjRfbcx37f-Zdp7^$X5GZp7HJ5%J$^Yt+SoKR!%b#6+Kq4Vr9Xif(UoT#W!tlS+Oj6 zHo?YVtiMaQzHdMX$<6E}P-_!9a)wSJu z7Z-jr?Y$E7b0hoCA1_ZY>9fn{XxtuG*FF3C`qev^2`6==RGwp>|I6a^^01x1P8GWd zcci*V9qc^J;(UkSgL&KZ#3-(EuV0^UWlUr-D__!AbxM+F-^VQ7ke7VQ%M2DzJZ`kW z(BhJnDTjZ}3(njxivpAbAMSW^`$Y!x!YkKprx|9?S>jyoCh+mmPPuzCEBCP4D0aJW z_Qc(2PgF8#e4)Ja^ocbA{%ULNzA*0c)^`8)H8|MMIQ@d9Z|~e)F&4%BKB?y#<5?z2 z$m!T)F13C;J%mmKrxJ6XKwbHY~^U9nsV z-YXl!64Sct)o1RqTFs{7r<6IxAns9##BiCko0E(d1SlqH2@733@!Tp&DwBWG zuG>2c-?HtVy_@U0x-KNvFJ~d@~K7GfB#nU_XdiXXU-Be!OUmm~TEi`n- zp))eVa(^y7UNa}|@z41GvabRz`A8*oNoaco_Ho`WJu=PnnY2IG3%@hfQkN&Ni0)%M z$g((R^NQnpw@m2p7Bt?#W>fXwP_^>=jzKm#CTDiq zpSR>?iOrsPTg=Z!NzJaNB>!qA#IelecbNdis;njS~-)!zJ$2vrU$9 z%*xR+&Y(t(yyaH1*qb|cZso#Tg4;4rGO9^U>U>pimbW>};8uo{O60*E zhl3Z1RPFJ7D`?)w{Izb@%{w>hysa{X!sBaO|0VUaUz1xPzB{31R@Vd@@u!Y)cYceV zxBKmzcX!9hpz_vkbv>nX8CGdbuX(QSP+>d2M5pt9V=G5!WZ~Q1?K?_etEp(Lo)owK z_|5inh8Ei!BAnY2>#OIR$5o2jXBDV9?>WXEQ~9Mfrt*v8yx*6u-?)80#4SAgm#S^E zsgnfj*Dh|SSt}w}p446Ue2V?VkhuA~I#W!i9pvBpZnKba<1(X5EZHG{G}Q!inb_GU zGymQAip6pNv6S3hnO%ag@zy2t`O_biow4BPyR%~IrNE*C@3*b4>`%SO(=_|H%#ts=d)(jKN-mvp9CTBA~pPT#IH@5z0$DgY=PR7?J)|<^iTzG9Rim>rV$GiJn6gqMKSofUS8-J{gIeZd$26tG z5{nO|hxu9@mAGUvAxKF|RD05`L(;-4vrNrpy;nt>*50gp-*>blYHjy*9huaLs`F~! zMXuZTW!0^7Yu0YqwCzy-`r4Vl&)J+=n=O53XKDA7#Ny)SqL@puZzg%@%#kpNh*I(6 zyD^)`Q&DJETcu;XSLeffjOOd_FPIk+k-hQSqshy^A7HqCHMs7v^t%0D`Pgs&u6mU3 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"BackgroundCat", "rory-flat"); break; + case 3: // teawie + s->set("BackgroundCat", "teawie"); + break; } s->set("MenuBarInsteadOfToolBar", ui->preferMenuBarCheckBox->isChecked()); @@ -424,6 +427,8 @@ void LauncherPage::loadSettings() ui->themeBackgroundCat->setCurrentIndex(1); } else if (cat == "rory-flat") { ui->themeBackgroundCat->setCurrentIndex(2); + } else if (cat == "teawie") { + ui->themeBackgroundCat->setCurrentIndex(3); } { diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index c44718a18..ded333aa4 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -386,6 +386,11 @@ Rory ID 11 (flat edition, drawn by Ashtaka) + + + Teawie (drawn by SympathyTea) + + From a5051327dbbb0b225e6badd05921d445d3022c7c Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 7 Jan 2023 03:42:15 -0500 Subject: [PATCH 18/37] feat: add spooky teawie Signed-off-by: seth --- launcher/resources/backgrounds/backgrounds.qrc | 1 + .../resources/backgrounds/teawie-spooky.png | Bin 0 -> 183698 bytes 2 files changed, 1 insertion(+) create mode 100644 launcher/resources/backgrounds/teawie-spooky.png diff --git a/launcher/resources/backgrounds/backgrounds.qrc b/launcher/resources/backgrounds/backgrounds.qrc index 7ed9410b7..87e709355 100644 --- a/launcher/resources/backgrounds/backgrounds.qrc +++ b/launcher/resources/backgrounds/backgrounds.qrc @@ -14,5 +14,6 @@ rory-flat-bday.png rory-flat-spooky.png teawie.png + teawie-spooky.png diff --git a/launcher/resources/backgrounds/teawie-spooky.png b/launcher/resources/backgrounds/teawie-spooky.png new file mode 100644 index 0000000000000000000000000000000000000000..9c57103e00832e2c2c676f3852f37733c7086265 GIT binary patch literal 183698 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ʪ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 z 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 Date: Sat, 7 Jan 2023 04:13:53 -0500 Subject: [PATCH 19/37] feat: add xmas teawie Signed-off-by: seth --- launcher/resources/backgrounds/backgrounds.qrc | 1 + launcher/resources/backgrounds/teawie-xmas.png | Bin 0 -> 200137 bytes 2 files changed, 1 insertion(+) create mode 100644 launcher/resources/backgrounds/teawie-xmas.png diff --git a/launcher/resources/backgrounds/backgrounds.qrc b/launcher/resources/backgrounds/backgrounds.qrc index 87e709355..dc16e7889 100644 --- a/launcher/resources/backgrounds/backgrounds.qrc +++ b/launcher/resources/backgrounds/backgrounds.qrc @@ -14,6 +14,7 @@ rory-flat-bday.png rory-flat-spooky.png teawie.png + teawie-xmas.png teawie-spooky.png diff --git a/launcher/resources/backgrounds/teawie-xmas.png b/launcher/resources/backgrounds/teawie-xmas.png new file mode 100644 index 0000000000000000000000000000000000000000..55fb7cfc6455c3f996d5fc266c875141155a8f47 GIT binary patch literal 200137 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 @I_UG@pH4F33%$#xI?Wx68vhDG|tKRH-q+s_+ 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 Date: Sat, 7 Jan 2023 04:38:26 -0500 Subject: [PATCH 20/37] fix: make spooky teawie load gimp fail Signed-off-by: seth --- .../resources/backgrounds/teawie-spooky.png | Bin 183698 -> 204756 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/launcher/resources/backgrounds/teawie-spooky.png b/launcher/resources/backgrounds/teawie-spooky.png index 9c57103e00832e2c2c676f3852f37733c7086265..cefc6c855789b3bbb325dece0664542d64ebf025 100644 GIT binary patch delta 21242 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 L2jf-`Ca<#qJkTT% delta 25 hcmcbzpJ&o+?g`41gM!qXdxF|~f*7~=1TlG>1ptf~3S0mH From f5955a4738ee5164c5c391086f1c4c0dde6d91a8 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 7 Jan 2023 04:41:09 -0500 Subject: [PATCH 21/37] feat: add bday teawie Signed-off-by: seth --- launcher/resources/backgrounds/backgrounds.qrc | 1 + launcher/resources/backgrounds/teawie-bday.png | Bin 0 -> 190586 bytes 2 files changed, 1 insertion(+) create mode 100644 launcher/resources/backgrounds/teawie-bday.png diff --git a/launcher/resources/backgrounds/backgrounds.qrc b/launcher/resources/backgrounds/backgrounds.qrc index dc16e7889..83096aef4 100644 --- a/launcher/resources/backgrounds/backgrounds.qrc +++ b/launcher/resources/backgrounds/backgrounds.qrc @@ -15,6 +15,7 @@ rory-flat-spooky.png teawie.png teawie-xmas.png + teawie-bday.png teawie-spooky.png diff --git a/launcher/resources/backgrounds/teawie-bday.png b/launcher/resources/backgrounds/teawie-bday.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ecf247cba21002a7510a8cd0020f3415e58575 GIT binary patch literal 190586 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 z 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 Hr-UW|^(t0$ literal 0 HcmV?d00001 From 9de6927c3fcdf813957dd6885b793a2c54100513 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 7 Jan 2023 19:18:22 -0500 Subject: [PATCH 22/37] feat: add CC BY-SA 4.0 info for teawie images Signed-off-by: seth --- launcher/resources/backgrounds/backgrounds.qrc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/launcher/resources/backgrounds/backgrounds.qrc b/launcher/resources/backgrounds/backgrounds.qrc index 83096aef4..e63a25b5a 100644 --- a/launcher/resources/backgrounds/backgrounds.qrc +++ b/launcher/resources/backgrounds/backgrounds.qrc @@ -13,9 +13,17 @@ rory-flat-xmas.png rory-flat-bday.png rory-flat-spooky.png + + + + teawie.png + teawie-xmas.png + teawie-bday.png + teawie-spooky.png + From 0481ae187acf3392aa158af9e6e287f8695d54ad Mon Sep 17 00:00:00 2001 From: DioEgizio <83089242+DioEgizio@users.noreply.github.com> Date: Sun, 8 Jan 2023 10:34:45 +0100 Subject: [PATCH 23/37] chore: update windows msvc to qt 6.4.2 Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com> --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b6e179e19..51b5a81d3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,7 +61,7 @@ jobs: qt_ver: 6 qt_host: windows qt_arch: '' - qt_version: '6.4.0' + qt_version: '6.4.2' qt_modules: 'qt5compat qtimageformats' qt_tools: '' @@ -73,7 +73,7 @@ jobs: qt_ver: 6 qt_host: windows qt_arch: 'win64_msvc2019_arm64' - qt_version: '6.4.0' + qt_version: '6.4.2' qt_modules: 'qt5compat qtimageformats' qt_tools: '' From fca40c1c6b336cd4231852737fa817e1dd958c01 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Jan 2023 22:40:41 +0000 Subject: [PATCH 24/37] chore(deps): update hendrikmuhs/ccache-action action to v1.2.6 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 51b5a81d3..406d079c6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -143,7 +143,7 @@ jobs: - name: Setup ccache if: (runner.os != 'Windows' || matrix.msystem == '') && inputs.build_type == 'Debug' - uses: hendrikmuhs/ccache-action@v1.2.5 + uses: hendrikmuhs/ccache-action@v1.2.6 with: key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}-${{ matrix.architecture }} From 7fdc81236e36a092dc1cdb9e7237e50d705228c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jan 2023 07:54:22 +0000 Subject: [PATCH 25/37] chore(deps): update actions/cache action to v3.2.3 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 51b5a81d3..3c2ede8ea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -165,7 +165,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v3.2.2 + uses: actions/cache@v3.2.3 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64 From 78bbcac0eaf1bb9df1ac87dafffbef659116fd80 Mon Sep 17 00:00:00 2001 From: TheLastRar Date: Mon, 9 Jan 2023 19:36:31 +0000 Subject: [PATCH 26/37] ui: Let Qt 6.4.2 handle dark mode titlebar Signed-off-by: TheLastRar --- launcher/Application.cpp | 16 +------- launcher/CMakeLists.txt | 10 ----- launcher/ui/WinDarkmode.cpp | 32 --------------- launcher/ui/WinDarkmode.h | 60 ----------------------------- launcher/ui/themes/ThemeManager.cpp | 17 -------- 5 files changed, 1 insertion(+), 134 deletions(-) delete mode 100644 launcher/ui/WinDarkmode.cpp delete mode 100644 launcher/ui/WinDarkmode.h diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ff34a168d..9d528d7a5 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -62,11 +62,6 @@ #include "ui/pages/global/APIPage.h" #include "ui/pages/global/CustomCommandsPage.h" -#ifdef Q_OS_WIN -#include "ui/WinDarkmode.h" -#include -#endif - #include "ui/setupwizard/SetupWizard.h" #include "ui/setupwizard/LanguageWizardPage.h" #include "ui/setupwizard/JavaWizardPage.h" @@ -1353,16 +1348,7 @@ MainWindow* Application::showMainWindow(bool minimized) m_mainWindow = new MainWindow(); m_mainWindow->restoreState(QByteArray::fromBase64(APPLICATION->settings()->get("MainWindowState").toByteArray())); m_mainWindow->restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("MainWindowGeometry").toByteArray())); -#ifdef Q_OS_WIN - if (IsWindows10OrGreater()) - { - if (QString::compare(settings()->get("ApplicationTheme").toString(), "dark") == 0) { - WinDarkmode::setDarkWinTitlebar(m_mainWindow->winId(), true); - } else { - WinDarkmode::setDarkWinTitlebar(m_mainWindow->winId(), false); - } - } -#endif + if(minimized) { m_mainWindow->showMinimized(); diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 8b5c63ffb..57480671b 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -937,16 +937,6 @@ SET(LAUNCHER_SOURCES ui/instanceview/VisualGroup.h ) -if(WIN32) - set(LAUNCHER_SOURCES - ${LAUNCHER_SOURCES} - - # GUI - dark titlebar for Windows 10/11 - ui/WinDarkmode.h - ui/WinDarkmode.cpp - ) -endif() - qt_wrap_ui(LAUNCHER_UI ui/setupwizard/PasteWizardPage.ui ui/pages/global/AccountListPage.ui diff --git a/launcher/ui/WinDarkmode.cpp b/launcher/ui/WinDarkmode.cpp deleted file mode 100644 index eac68e4f6..000000000 --- a/launcher/ui/WinDarkmode.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include - -#include "WinDarkmode.h" - -namespace WinDarkmode { - -/* See https://github.com/statiolake/neovim-qt/commit/da8eaba7f0e38b6b51f3bacd02a8cc2d1f7a34d8 */ -void setDarkWinTitlebar(WId winid, bool darkmode) -{ - HWND hwnd = reinterpret_cast(winid); - BOOL dark = (BOOL) darkmode; - - HMODULE hUxtheme = LoadLibraryExW(L"uxtheme.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); - HMODULE hUser32 = GetModuleHandleW(L"user32.dll"); - fnAllowDarkModeForWindow AllowDarkModeForWindow - = reinterpret_cast(GetProcAddress(hUxtheme, MAKEINTRESOURCEA(133))); - fnSetPreferredAppMode SetPreferredAppMode - = reinterpret_cast(GetProcAddress(hUxtheme, MAKEINTRESOURCEA(135))); - fnSetWindowCompositionAttribute SetWindowCompositionAttribute - = reinterpret_cast(GetProcAddress(hUser32, "SetWindowCompositionAttribute")); - - SetPreferredAppMode(AllowDark); - AllowDarkModeForWindow(hwnd, dark); - WINDOWCOMPOSITIONATTRIBDATA data = { - WCA_USEDARKMODECOLORS, - &dark, - sizeof(dark) - }; - SetWindowCompositionAttribute(hwnd, &data); -} - -} diff --git a/launcher/ui/WinDarkmode.h b/launcher/ui/WinDarkmode.h deleted file mode 100644 index 5b567c6b0..000000000 --- a/launcher/ui/WinDarkmode.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#include -#include - - -namespace WinDarkmode { - -void setDarkWinTitlebar(WId winid, bool darkmode); - -enum PreferredAppMode { - Default, - AllowDark, - ForceDark, - ForceLight, - Max -}; - -enum WINDOWCOMPOSITIONATTRIB { - WCA_UNDEFINED = 0, - WCA_NCRENDERING_ENABLED = 1, - WCA_NCRENDERING_POLICY = 2, - WCA_TRANSITIONS_FORCEDISABLED = 3, - WCA_ALLOW_NCPAINT = 4, - WCA_CAPTION_BUTTON_BOUNDS = 5, - WCA_NONCLIENT_RTL_LAYOUT = 6, - WCA_FORCE_ICONIC_REPRESENTATION = 7, - WCA_EXTENDED_FRAME_BOUNDS = 8, - WCA_HAS_ICONIC_BITMAP = 9, - WCA_THEME_ATTRIBUTES = 10, - WCA_NCRENDERING_EXILED = 11, - WCA_NCADORNMENTINFO = 12, - WCA_EXCLUDED_FROM_LIVEPREVIEW = 13, - WCA_VIDEO_OVERLAY_ACTIVE = 14, - WCA_FORCE_ACTIVEWINDOW_APPEARANCE = 15, - WCA_DISALLOW_PEEK = 16, - WCA_CLOAK = 17, - WCA_CLOAKED = 18, - WCA_ACCENT_POLICY = 19, - WCA_FREEZE_REPRESENTATION = 20, - WCA_EVER_UNCLOAKED = 21, - WCA_VISUAL_OWNER = 22, - WCA_HOLOGRAPHIC = 23, - WCA_EXCLUDED_FROM_DDA = 24, - WCA_PASSIVEUPDATEMODE = 25, - WCA_USEDARKMODECOLORS = 26, - WCA_LAST = 27 -}; - -struct WINDOWCOMPOSITIONATTRIBDATA { - WINDOWCOMPOSITIONATTRIB Attrib; - PVOID pvData; - SIZE_T cbData; -}; - -using fnAllowDarkModeForWindow = BOOL (WINAPI *)(HWND hWnd, BOOL allow); -using fnSetPreferredAppMode = PreferredAppMode (WINAPI *)(PreferredAppMode appMode); -using fnSetWindowCompositionAttribute = BOOL (WINAPI *)(HWND hwnd, WINDOWCOMPOSITIONATTRIBDATA *); - -} diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 01a38a864..5a6124727 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -28,14 +28,6 @@ #include "Application.h" -#ifdef Q_OS_WIN -#include -// this is needed for versionhelpers.h, it is also included in WinDarkmode, but we can't rely on that. -// Ultimately this should be included in versionhelpers, but that is outside of the project. -#include "ui/WinDarkmode.h" -#include -#endif - ThemeManager::ThemeManager(MainWindow* mainWindow) { m_mainWindow = mainWindow; @@ -140,15 +132,6 @@ void ThemeManager::setApplicationTheme(const QString& name, bool initial) auto& theme = themeIter->second; themeDebugLog() << "applying theme" << theme->name(); theme->apply(initial); -#ifdef Q_OS_WIN - if (m_mainWindow && IsWindows10OrGreater()) { - if (QString::compare(theme->id(), "dark") == 0) { - WinDarkmode::setDarkWinTitlebar(m_mainWindow->winId(), true); - } else { - WinDarkmode::setDarkWinTitlebar(m_mainWindow->winId(), false); - } - } -#endif } else { themeWarningLog() << "Tried to set invalid theme:" << name; } From a113ecca8b86a0aa9a448795b49c9bb841ddc59a Mon Sep 17 00:00:00 2001 From: DioEgizio <83089242+DioEgizio@users.noreply.github.com> Date: Tue, 10 Jan 2023 15:00:39 +0100 Subject: [PATCH 27/37] fix: just use github runner's openssl 1.1 instead of installing 3 on macos signing Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com> --- .github/workflows/build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9d75a4574..e0a80f20e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -342,9 +342,8 @@ jobs: if: matrix.name == 'macOS' run: | if [ '${{ secrets.SPARKLE_ED25519_KEY }}' != '' ]; then - brew install openssl@3 echo '${{ secrets.SPARKLE_ED25519_KEY }}' > ed25519-priv.pem - signature=$(/usr/local/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.tar.gz -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) + signature=$(openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.tar.gz -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) rm ed25519-priv.pem cat >> $GITHUB_STEP_SUMMARY << EOF ### Artifact Information :information_source: From 1b80ae0fca5e41d8caaa7d77d19faa9826752143 Mon Sep 17 00:00:00 2001 From: Tayou Date: Sat, 22 Oct 2022 19:43:04 +0200 Subject: [PATCH 28/37] add theme setup wizard Signed-off-by: Tayou --- launcher/Application.cpp | 21 +- launcher/Application.h | 4 +- launcher/CMakeLists.txt | 6 + launcher/ui/MainWindow.cpp | 2 +- launcher/ui/pages/global/LauncherPage.cpp | 110 ------ launcher/ui/pages/global/LauncherPage.ui | 166 +-------- launcher/ui/setupwizard/ThemeWizardPage.cpp | 70 ++++ launcher/ui/setupwizard/ThemeWizardPage.h | 44 +++ launcher/ui/setupwizard/ThemeWizardPage.ui | 336 ++++++++++++++++++ launcher/ui/themes/ITheme.cpp | 40 ++- launcher/ui/themes/ITheme.h | 36 +- launcher/ui/themes/SystemTheme.cpp | 9 +- launcher/ui/themes/SystemTheme.h | 36 +- launcher/ui/themes/ThemeManager.cpp | 6 +- launcher/ui/themes/ThemeManager.h | 3 +- .../ui/widgets/ThemeCustomizationWidget.cpp | 135 +++++++ .../ui/widgets/ThemeCustomizationWidget.h | 64 ++++ .../ui/widgets/ThemeCustomizationWidget.ui | 182 ++++++++++ 18 files changed, 982 insertions(+), 288 deletions(-) create mode 100644 launcher/ui/setupwizard/ThemeWizardPage.cpp create mode 100644 launcher/ui/setupwizard/ThemeWizardPage.h create mode 100644 launcher/ui/setupwizard/ThemeWizardPage.ui create mode 100644 launcher/ui/widgets/ThemeCustomizationWidget.cpp create mode 100644 launcher/ui/widgets/ThemeCustomizationWidget.h create mode 100644 launcher/ui/widgets/ThemeCustomizationWidget.ui diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 9d528d7a5..3e64b74fe 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -66,6 +66,7 @@ #include "ui/setupwizard/LanguageWizardPage.h" #include "ui/setupwizard/JavaWizardPage.h" #include "ui/setupwizard/PasteWizardPage.h" +#include "ui/setupwizard/ThemeWizardPage.h" #include "ui/dialogs/CustomMessageBox.h" @@ -846,10 +847,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv) }); { - setIconTheme(settings()->get("IconTheme").toString()); - qDebug() << "<> Icon theme set."; - setApplicationTheme(settings()->get("ApplicationTheme").toString(), true); - qDebug() << "<> Application theme set."; + applyCurrentlySelectedTheme(); } updateCapabilities(); @@ -892,6 +890,7 @@ bool Application::createSetupWizard() return false; }(); bool pasteInterventionRequired = settings()->get("PastebinURL") != ""; + bool themeInterventionRequired = settings()->get("ApplicationTheme") != ""; bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired; if(wizardRequired) @@ -911,6 +910,11 @@ bool Application::createSetupWizard() { m_setupWizard->addPage(new PasteWizardPage(m_setupWizard)); } + + if (themeInterventionRequired) + { + m_setupWizard->addPage(new ThemeWizardPage(m_setupWizard)); + } connect(m_setupWizard, &QDialog::finished, this, &Application::setupWizardFinished); m_setupWizard->show(); return true; @@ -1118,9 +1122,14 @@ QList Application::getValidApplicationThemes() return m_themeManager->getValidApplicationThemes(); } -void Application::setApplicationTheme(const QString& name, bool initial) +void Application::applyCurrentlySelectedTheme() { - m_themeManager->setApplicationTheme(name, initial); + m_themeManager->applyCurrentlySelectedTheme(); +} + +void Application::setApplicationTheme(const QString& name) +{ + m_themeManager->setApplicationTheme(name); } void Application::setIconTheme(const QString& name) diff --git a/launcher/Application.h b/launcher/Application.h index 7884227a1..a79386293 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -120,9 +120,11 @@ public: void setIconTheme(const QString& name); + void applyCurrentlySelectedTheme(); + QList getValidApplicationThemes(); - void setApplicationTheme(const QString& name, bool initial); + void setApplicationTheme(const QString& name); shared_qobject_ptr updateChecker() { return m_updateChecker; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 57480671b..74b7b212d 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -683,6 +683,8 @@ SET(LAUNCHER_SOURCES ui/setupwizard/LanguageWizardPage.h ui/setupwizard/PasteWizardPage.cpp ui/setupwizard/PasteWizardPage.h + ui/setupwizard/ThemeWizardPage.cpp + ui/setupwizard/ThemeWizardPage.h # GUI - themes ui/themes/FusionTheme.cpp @@ -922,6 +924,8 @@ SET(LAUNCHER_SOURCES ui/widgets/ProgressWidget.cpp ui/widgets/WideBar.h ui/widgets/WideBar.cpp + ui/widgets/ThemeCustomizationWidget.h + ui/widgets/ThemeCustomizationWidget.cpp # GUI - instance group view ui/instanceview/InstanceProxyModel.cpp @@ -939,6 +943,7 @@ SET(LAUNCHER_SOURCES qt_wrap_ui(LAUNCHER_UI ui/setupwizard/PasteWizardPage.ui + ui/setupwizard/ThemeWizardPage.ui ui/pages/global/AccountListPage.ui ui/pages/global/JavaPage.ui ui/pages/global/LauncherPage.ui @@ -971,6 +976,7 @@ qt_wrap_ui(LAUNCHER_UI ui/widgets/CustomCommands.ui ui/widgets/InfoFrame.ui ui/widgets/ModFilterWidget.ui + ui/widgets/ThemeCustomizationWidget.ui ui/dialogs/CopyInstanceDialog.ui ui/dialogs/ProfileSetupDialog.ui ui/dialogs/ProgressDialog.ui diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index e913849d5..331ca0e1f 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1346,7 +1346,7 @@ void MainWindow::updateThemeMenu() themeAction->setActionGroup(themesGroup); connect(themeAction, &QAction::triggered, [theme]() { - APPLICATION->setApplicationTheme(theme->id(),false); + APPLICATION->setApplicationTheme(theme->id()); APPLICATION->settings()->set("ApplicationTheme", theme->id()); }); } diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp index bd7cec6a2..69a8e3df4 100644 --- a/launcher/ui/pages/global/LauncherPage.cpp +++ b/launcher/ui/pages/global/LauncherPage.cpp @@ -286,75 +286,6 @@ void LauncherPage::applySettings() } s->set("UpdateChannel", m_currentUpdateChannel); - auto original = s->get("IconTheme").toString(); - //FIXME: make generic - switch (ui->themeComboBox->currentIndex()) - { - case 0: - s->set("IconTheme", "pe_colored"); - break; - case 1: - s->set("IconTheme", "pe_light"); - break; - case 2: - s->set("IconTheme", "pe_dark"); - break; - case 3: - s->set("IconTheme", "pe_blue"); - break; - case 4: - s->set("IconTheme", "breeze_light"); - break; - case 5: - s->set("IconTheme", "breeze_dark"); - break; - case 6: - s->set("IconTheme", "OSX"); - break; - case 7: - s->set("IconTheme", "iOS"); - break; - case 8: - s->set("IconTheme", "flat"); - break; - case 9: - s->set("IconTheme", "flat_white"); - break; - case 10: - s->set("IconTheme", "multimc"); - break; - case 11: - s->set("IconTheme", "custom"); - break; - } - - if(original != s->get("IconTheme")) - { - APPLICATION->setIconTheme(s->get("IconTheme").toString()); - } - - auto originalAppTheme = s->get("ApplicationTheme").toString(); - auto newAppTheme = ui->themeComboBoxColors->currentData().toString(); - if(originalAppTheme != newAppTheme) - { - s->set("ApplicationTheme", newAppTheme); - APPLICATION->setApplicationTheme(newAppTheme, false); - } - - switch (ui->themeBackgroundCat->currentIndex()) { - case 0: // original cat - s->set("BackgroundCat", "kitteh"); - break; - case 1: // rory the cat - s->set("BackgroundCat", "rory"); - break; - case 2: // rory the cat flat edition - s->set("BackgroundCat", "rory-flat"); - break; - case 3: // teawie - s->set("BackgroundCat", "teawie"); - break; - } s->set("MenuBarInsteadOfToolBar", ui->preferMenuBarCheckBox->isChecked()); @@ -404,47 +335,6 @@ void LauncherPage::loadSettings() } m_currentUpdateChannel = s->get("UpdateChannel").toString(); - //FIXME: make generic - auto theme = s->get("IconTheme").toString(); - QStringList iconThemeOptions{"pe_colored", - "pe_light", - "pe_dark", - "pe_blue", - "breeze_light", - "breeze_dark", - "OSX", - "iOS", - "flat", - "flat_white", - "multimc", - "custom"}; - ui->themeComboBox->setCurrentIndex(iconThemeOptions.indexOf(theme)); - - auto cat = s->get("BackgroundCat").toString(); - if (cat == "kitteh") { - ui->themeBackgroundCat->setCurrentIndex(0); - } else if (cat == "rory") { - ui->themeBackgroundCat->setCurrentIndex(1); - } else if (cat == "rory-flat") { - ui->themeBackgroundCat->setCurrentIndex(2); - } else if (cat == "teawie") { - ui->themeBackgroundCat->setCurrentIndex(3); - } - - { - auto currentTheme = s->get("ApplicationTheme").toString(); - auto themes = APPLICATION->getValidApplicationThemes(); - int idx = 0; - for(auto &theme: themes) - { - ui->themeComboBoxColors->addItem(theme->name(), theme->id()); - if(currentTheme == theme->id()) - { - ui->themeComboBoxColors->setCurrentIndex(idx); - } - idx++; - } - } // Toolbar/menu bar settings (not applicable if native menu bar is present) ui->toolsBox->setEnabled(!QMenuBar().isNativeMenuBar()); diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index ded333aa4..65f4a9d51 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -6,7 +6,7 @@ 0 0 - 514 + 511 629 @@ -38,7 +38,7 @@ QTabWidget::Rounded - 0 + 1 @@ -243,155 +243,9 @@ Theme - - - - - &Icons - - - themeComboBox - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - - Simple (Colored Icons) - - - - - Simple (Light Icons) - - - - - Simple (Dark Icons) - - - - - Simple (Blue Icons) - - - - - Breeze Light - - - - - Breeze Dark - - - - - OSX - - - - - iOS - - - - - Flat - - - - - Flat (White) - - - - - Legacy - - - - - Custom - - - - - - - - &Colors - - - themeComboBoxColors - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - - - - - C&at - - - themeBackgroundCat - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - - Background Cat (from MultiMC) - - - - - Rory ID 11 (drawn by Ashtaka) - - - - - Rory ID 11 (flat edition, drawn by Ashtaka) - - - - - Teawie (drawn by SympathyTea) - - - + + + @@ -575,6 +429,14 @@ + + + ThemeCustomizationWidget + QWidget +

ui/widgets/ThemeCustomizationWidget.h
+ 1 + + tabWidget autoUpdateCheckBox @@ -587,8 +449,6 @@ iconsDirBrowseBtn sortLastLaunchedBtn sortByNameBtn - themeComboBox - themeComboBoxColors showConsoleCheck autoCloseConsoleCheck showConsoleErrorCheck diff --git a/launcher/ui/setupwizard/ThemeWizardPage.cpp b/launcher/ui/setupwizard/ThemeWizardPage.cpp new file mode 100644 index 000000000..6f0411349 --- /dev/null +++ b/launcher/ui/setupwizard/ThemeWizardPage.cpp @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ThemeWizardPage.h" +#include "ui_ThemeWizardPage.h" + +#include "Application.h" +#include "ui/themes/ITheme.h" +#include "ui/widgets/ThemeCustomizationWidget.h" +#include "ui_ThemeCustomizationWidget.h" + +ThemeWizardPage::ThemeWizardPage(QWidget *parent) : +BaseWizardPage(parent), +ui(new Ui::ThemeWizardPage) { + ui->setupUi(this); + + ui->themeCustomizationWidget->showFeatures((ThemeFields)(ThemeFields::ICONS | ThemeFields::WIDGETS)); + connect(ui->themeCustomizationWidget, QOverload::of(&ThemeCustomizationWidget::currentIconThemeChanged), this, &ThemeWizardPage::updateIcons); + + updateIcons(); +} + +ThemeWizardPage::~ThemeWizardPage() { +delete ui; +} + +void ThemeWizardPage::initializePage() +{ +} + +bool ThemeWizardPage::validatePage() +{ + return true; +} + +void ThemeWizardPage::updateIcons() { + qDebug() << "Setting Icons"; + ui->previewIconButton0->setIcon(APPLICATION->getThemedIcon("new")); + ui->previewIconButton1->setIcon(APPLICATION->getThemedIcon("centralmods")); + ui->previewIconButton2->setIcon(APPLICATION->getThemedIcon("viewfolder")); + ui->previewIconButton3->setIcon(APPLICATION->getThemedIcon("launch")); + ui->previewIconButton4->setIcon(APPLICATION->getThemedIcon("copy")); + ui->previewIconButton5->setIcon(APPLICATION->getThemedIcon("export")); + ui->previewIconButton6->setIcon(APPLICATION->getThemedIcon("delete")); + ui->previewIconButton7->setIcon(APPLICATION->getThemedIcon("about")); + ui->previewIconButton8->setIcon(APPLICATION->getThemedIcon("settings")); + ui->previewIconButton9->setIcon(APPLICATION->getThemedIcon("cat")); + update(); + repaint(); + parentWidget()->update(); +} + +void ThemeWizardPage::retranslate() +{ + ui->retranslateUi(this); +} diff --git a/launcher/ui/setupwizard/ThemeWizardPage.h b/launcher/ui/setupwizard/ThemeWizardPage.h new file mode 100644 index 000000000..10913d1b1 --- /dev/null +++ b/launcher/ui/setupwizard/ThemeWizardPage.h @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include +#include "BaseWizardPage.h" + +namespace Ui { +class ThemeWizardPage; +} + +class ThemeWizardPage : public BaseWizardPage +{ + Q_OBJECT + +public: + explicit ThemeWizardPage(QWidget *parent = nullptr); + ~ThemeWizardPage(); + + void initializePage() override; + bool validatePage() override; + void retranslate() override; + +private slots: + void updateIcons(); + +private: + Ui::ThemeWizardPage *ui; +}; diff --git a/launcher/ui/setupwizard/ThemeWizardPage.ui b/launcher/ui/setupwizard/ThemeWizardPage.ui new file mode 100644 index 000000000..b743644f9 --- /dev/null +++ b/launcher/ui/setupwizard/ThemeWizardPage.ui @@ -0,0 +1,336 @@ + + + ThemeWizardPage + + + + 0 + 0 + 400 + 300 + + + + WizardPage + + + + + + Select the Theme you wish to use + + + + + + + + 0 + 100 + + + + + + + + Qt::Horizontal + + + + + + + Icon Preview: + + + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 193 + + + + + + + + + ThemeCustomizationWidget + QWidget +
ui/widgets/ThemeCustomizationWidget.h
+
+
+ + +
diff --git a/launcher/ui/themes/ITheme.cpp b/launcher/ui/themes/ITheme.cpp index 8bfc466d2..22043e441 100644 --- a/launcher/ui/themes/ITheme.cpp +++ b/launcher/ui/themes/ITheme.cpp @@ -1,19 +1,51 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "ITheme.h" #include "rainbow.h" #include #include #include "Application.h" -void ITheme::apply(bool) +void ITheme::apply() { APPLICATION->setStyleSheet(QString()); QApplication::setStyle(QStyleFactory::create(qtTheme())); if (hasColorScheme()) { QApplication::setPalette(colorScheme()); } - if (hasStyleSheet()) - APPLICATION->setStyleSheet(appStyleSheet()); - + APPLICATION->setStyleSheet(appStyleSheet()); QDir::setSearchPaths("theme", searchPaths()); } diff --git a/launcher/ui/themes/ITheme.h b/launcher/ui/themes/ITheme.h index c2347cf61..bb5c8afe9 100644 --- a/launcher/ui/themes/ITheme.h +++ b/launcher/ui/themes/ITheme.h @@ -1,3 +1,37 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once #include #include @@ -8,7 +42,7 @@ class ITheme { public: virtual ~ITheme() {} - virtual void apply(bool initial); + virtual void apply(); virtual QString id() = 0; virtual QString name() = 0; virtual bool hasStyleSheet() = 0; diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index a63d17411..d6ef442b3 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -62,14 +62,9 @@ SystemTheme::SystemTheme() themeDebugLog() << "System theme not found, defaulted to Fusion"; } -void SystemTheme::apply(bool initial) +void SystemTheme::apply() { - // if we are applying the system theme as the first theme, just don't touch anything. it's for the better... - if(initial) - { - return; - } - ITheme::apply(initial); + ITheme::apply(); } QString SystemTheme::id() diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index fe450600c..5c9216eb6 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -1,3 +1,37 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once #include "ITheme.h" @@ -7,7 +41,7 @@ class SystemTheme: public ITheme public: SystemTheme(); virtual ~SystemTheme() {} - void apply(bool initial) override; + void apply() override; QString id() override; QString name() override; diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 5a6124727..a6cebc6fc 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -120,18 +120,18 @@ void ThemeManager::applyCurrentlySelectedTheme() { setIconTheme(APPLICATION->settings()->get("IconTheme").toString()); themeDebugLog() << "<> Icon theme set."; - setApplicationTheme(APPLICATION->settings()->get("ApplicationTheme").toString(), true); + setApplicationTheme(APPLICATION->settings()->get("ApplicationTheme").toString()); themeDebugLog() << "<> Application theme set."; } -void ThemeManager::setApplicationTheme(const QString& name, bool initial) +void ThemeManager::setApplicationTheme(const QString& name) { auto systemPalette = qApp->palette(); auto themeIter = m_themes.find(name); if (themeIter != m_themes.end()) { auto& theme = themeIter->second; themeDebugLog() << "applying theme" << theme->name(); - theme->apply(initial); + theme->apply(); } else { themeWarningLog() << "Tried to set invalid theme:" << name; } diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index b85cb7423..0a70ddfc3 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -41,11 +41,12 @@ class ThemeManager { QList getValidApplicationThemes(); void setIconTheme(const QString& name); void applyCurrentlySelectedTheme(); - void setApplicationTheme(const QString& name, bool initial); + void setApplicationTheme(const QString& name); private: std::map> m_themes; MainWindow* m_mainWindow; + bool m_firstThemeInitialized; QString AddTheme(std::unique_ptr theme); ITheme* GetTheme(QString themeId); diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.cpp b/launcher/ui/widgets/ThemeCustomizationWidget.cpp new file mode 100644 index 000000000..0830a030a --- /dev/null +++ b/launcher/ui/widgets/ThemeCustomizationWidget.cpp @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ThemeCustomizationWidget.h" +#include "ui_ThemeCustomizationWidget.h" + +#include "Application.h" +#include "ui/themes/ITheme.h" + +ThemeCustomizationWidget::ThemeCustomizationWidget(QWidget *parent) : QWidget(parent), ui(new Ui::ThemeCustomizationWidget) +{ + ui->setupUi(this); + loadSettings(); + + connect(ui->iconsComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyIconTheme); + connect(ui->widgetStyleComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyWidgetTheme); + connect(ui->backgroundCatComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyCatTheme); +} + +ThemeCustomizationWidget::~ThemeCustomizationWidget() +{ + delete ui; +} + +void ThemeCustomizationWidget::showFeatures(ThemeFields features) { + ui->iconsComboBox->setVisible(features & ThemeFields::ICONS); + ui->iconsLabel->setVisible(features & ThemeFields::ICONS); + ui->widgetStyleComboBox->setVisible(features & ThemeFields::WIDGETS); + ui->widgetThemeLabel->setVisible(features & ThemeFields::WIDGETS); + ui->backgroundCatComboBox->setVisible(features & ThemeFields::CAT); + ui->backgroundCatLabel->setVisible(features & ThemeFields::CAT); +} + +void ThemeCustomizationWidget::applyIconTheme(int index) { + emit currentIconThemeChanged(index); + + auto settings = APPLICATION->settings(); + auto original = settings->get("IconTheme").toString(); + // FIXME: make generic + settings->set("IconTheme", m_iconThemeOptions[index]); + + if (original != settings->get("IconTheme")) { + APPLICATION->applyCurrentlySelectedTheme(); + } +} + +void ThemeCustomizationWidget::applyWidgetTheme(int index) { + emit currentWidgetThemeChanged(index); + + auto settings = APPLICATION->settings(); + auto originalAppTheme = settings->get("ApplicationTheme").toString(); + auto newAppTheme = ui->widgetStyleComboBox->currentData().toString(); + if (originalAppTheme != newAppTheme) { + settings->set("ApplicationTheme", newAppTheme); + APPLICATION->applyCurrentlySelectedTheme(); + } +} + +void ThemeCustomizationWidget::applyCatTheme(int index) { + emit currentCatChanged(index); + + auto settings = APPLICATION->settings(); + switch (index) { + case 0: // original cat + settings->set("BackgroundCat", "kitteh"); + break; + case 1: // rory the cat + settings->set("BackgroundCat", "rory"); + break; + case 2: // rory the cat flat edition + settings->set("BackgroundCat", "rory-flat"); + break; + case 3: // teawie + settings->set("BackgroundCat", "teawie"); + break; + } +} + +void ThemeCustomizationWidget::applySettings() +{ + applyIconTheme(ui->iconsComboBox->currentIndex()); + applyWidgetTheme(ui->widgetStyleComboBox->currentIndex()); + applyCatTheme(ui->backgroundCatComboBox->currentIndex()); +} +void ThemeCustomizationWidget::loadSettings() +{ + auto settings = APPLICATION->settings(); + + // FIXME: make generic + auto theme = settings->get("IconTheme").toString(); + ui->iconsComboBox->setCurrentIndex(m_iconThemeOptions.indexOf(theme)); + + { + auto currentTheme = settings->get("ApplicationTheme").toString(); + auto themes = APPLICATION->getValidApplicationThemes(); + int idx = 0; + for (auto& theme : themes) { + ui->widgetStyleComboBox->addItem(theme->name(), theme->id()); + if (currentTheme == theme->id()) { + ui->widgetStyleComboBox->setCurrentIndex(idx); + } + idx++; + } + } + + auto cat = settings->get("BackgroundCat").toString(); + if (cat == "kitteh") { + ui->backgroundCatComboBox->setCurrentIndex(0); + } else if (cat == "rory") { + ui->backgroundCatComboBox->setCurrentIndex(1); + } else if (cat == "rory-flat") { + ui->backgroundCatComboBox->setCurrentIndex(2); + } else if (cat == "teawie") { + ui->backgroundCatComboBox->setCurrentIndex(3); + } +} + +void ThemeCustomizationWidget::retranslate() +{ + ui->retranslateUi(this); +} \ No newline at end of file diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.h b/launcher/ui/widgets/ThemeCustomizationWidget.h new file mode 100644 index 000000000..e17286e16 --- /dev/null +++ b/launcher/ui/widgets/ThemeCustomizationWidget.h @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include +#include + +enum ThemeFields { + NONE = 0b0000, + ICONS = 0b0001, + WIDGETS = 0b0010, + CAT = 0b0100 +}; + +namespace Ui { +class ThemeCustomizationWidget; +} + +class ThemeCustomizationWidget : public QWidget +{ + Q_OBJECT + +public: + explicit ThemeCustomizationWidget(QWidget *parent = nullptr); + ~ThemeCustomizationWidget(); + + void showFeatures(ThemeFields features); + + void applySettings(); + + void loadSettings(); + void retranslate(); + + Ui::ThemeCustomizationWidget *ui; + +private slots: + void applyIconTheme(int index); + void applyWidgetTheme(int index); + void applyCatTheme(int index); + +signals: + int currentIconThemeChanged(int index); + int currentWidgetThemeChanged(int index); + int currentCatChanged(int index); + +private: + + QStringList m_iconThemeOptions{ "pe_colored", "pe_light", "pe_dark", "pe_blue", "breeze_light", "breeze_dark", "OSX", "iOS", "flat", "flat_white", "multimc", "custom" }; +}; diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.ui b/launcher/ui/widgets/ThemeCustomizationWidget.ui new file mode 100644 index 000000000..c184b8f3f --- /dev/null +++ b/launcher/ui/widgets/ThemeCustomizationWidget.ui @@ -0,0 +1,182 @@ + + + ThemeCustomizationWidget + + + + 0 + 0 + 400 + 311 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + &Icons + + + iconsComboBox + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + + Simple (Colored Icons) + + + + + Simple (Light Icons) + + + + + Simple (Dark Icons) + + + + + Simple (Blue Icons) + + + + + Breeze Light + + + + + Breeze Dark + + + + + OSX + + + + + iOS + + + + + Flat + + + + + Flat (White) + + + + + Legacy + + + + + Custom + + + + + + + + &Colors + + + widgetStyleComboBox + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + + + + + C&at + + + backgroundCatComboBox + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + + Background Cat (from MultiMC) + + + + + Rory ID 11 (drawn by Ashtaka) + + + + + Rory ID 11 (flat edition, drawn by Ashtaka) + + + + + Teawie (drawn by SympathyTea) + + + + + + + + + From 49d317b19aa61fed056e0f14c12eb1997f68982d Mon Sep 17 00:00:00 2001 From: Tayou Date: Mon, 9 Jan 2023 16:54:10 +0100 Subject: [PATCH 29/37] UX tweak + formatting + added cat to wizard Signed-off-by: Tayou --- launcher/ui/MainWindow.cpp | 16 +--- launcher/ui/setupwizard/ThemeWizardPage.cpp | 39 ++++++--- launcher/ui/setupwizard/ThemeWizardPage.h | 1 + launcher/ui/setupwizard/ThemeWizardPage.ui | 26 +++++- launcher/ui/themes/CustomTheme.cpp | 31 +++----- launcher/ui/themes/ITheme.h | 12 +-- launcher/ui/themes/SystemTheme.cpp | 12 ++- launcher/ui/themes/SystemTheme.h | 8 +- launcher/ui/themes/ThemeManager.h | 4 +- .../ui/widgets/ThemeCustomizationWidget.cpp | 79 ++++++++++--------- .../ui/widgets/ThemeCustomizationWidget.h | 1 + .../ui/widgets/ThemeCustomizationWidget.ui | 5 +- 12 files changed, 127 insertions(+), 107 deletions(-) diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 331ca0e1f..a921e3781 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1652,16 +1652,6 @@ void MainWindow::onCatToggled(bool state) APPLICATION->settings()->set("TheCat", state); } -namespace { -template -T non_stupid_abs(T in) -{ - if (in < 0) - return -in; - return in; -} -} - void MainWindow::setCatBackground(bool enabled) { if (enabled) @@ -1671,11 +1661,11 @@ void MainWindow::setCatBackground(bool enabled) QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); QString cat = APPLICATION->settings()->get("BackgroundCat").toString(); - if (non_stupid_abs(now.daysTo(xmas)) <= 4) { + if (std::abs(now.daysTo(xmas)) <= 4) { cat += "-xmas"; - } else if (non_stupid_abs(now.daysTo(halloween)) <= 4) { + } else if (std::abs(now.daysTo(halloween)) <= 4) { cat += "-spooky"; - } else if (non_stupid_abs(now.daysTo(birthday)) <= 12) { + } else if (std::abs(now.daysTo(birthday)) <= 12) { cat += "-bday"; } view->setStyleSheet(QString(R"( diff --git a/launcher/ui/setupwizard/ThemeWizardPage.cpp b/launcher/ui/setupwizard/ThemeWizardPage.cpp index 6f0411349..4e1eb4889 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.cpp +++ b/launcher/ui/setupwizard/ThemeWizardPage.cpp @@ -23,31 +23,31 @@ #include "ui/widgets/ThemeCustomizationWidget.h" #include "ui_ThemeCustomizationWidget.h" -ThemeWizardPage::ThemeWizardPage(QWidget *parent) : -BaseWizardPage(parent), -ui(new Ui::ThemeWizardPage) { +ThemeWizardPage::ThemeWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(new Ui::ThemeWizardPage) +{ ui->setupUi(this); - ui->themeCustomizationWidget->showFeatures((ThemeFields)(ThemeFields::ICONS | ThemeFields::WIDGETS)); connect(ui->themeCustomizationWidget, QOverload::of(&ThemeCustomizationWidget::currentIconThemeChanged), this, &ThemeWizardPage::updateIcons); + connect(ui->themeCustomizationWidget, QOverload::of(&ThemeCustomizationWidget::currentCatChanged), this, &ThemeWizardPage::updateCat); updateIcons(); + updateCat(); } -ThemeWizardPage::~ThemeWizardPage() { -delete ui; -} - -void ThemeWizardPage::initializePage() +ThemeWizardPage::~ThemeWizardPage() { + delete ui; } +void ThemeWizardPage::initializePage() {} + bool ThemeWizardPage::validatePage() { return true; } -void ThemeWizardPage::updateIcons() { +void ThemeWizardPage::updateIcons() +{ qDebug() << "Setting Icons"; ui->previewIconButton0->setIcon(APPLICATION->getThemedIcon("new")); ui->previewIconButton1->setIcon(APPLICATION->getThemedIcon("centralmods")); @@ -64,6 +64,25 @@ void ThemeWizardPage::updateIcons() { parentWidget()->update(); } +void ThemeWizardPage::updateCat() +{ + qDebug() << "Setting Cat"; + + QDateTime now = QDateTime::currentDateTime(); + QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0)); + QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); + QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); + QString cat = APPLICATION->settings()->get("BackgroundCat").toString(); + if (std::abs(now.daysTo(xmas)) <= 4) { + cat += "-xmas"; + } else if (std::abs(now.daysTo(halloween)) <= 4) { + cat += "-spooky"; + } else if (std::abs(now.daysTo(birthday)) <= 12) { + cat += "-bday"; + } + ui->catImagePreviewButton->setIcon(QIcon(QString(R"(:/backgrounds/%1)").arg(cat))); +} + void ThemeWizardPage::retranslate() { ui->retranslateUi(this); diff --git a/launcher/ui/setupwizard/ThemeWizardPage.h b/launcher/ui/setupwizard/ThemeWizardPage.h index 10913d1b1..6562ad2ea 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.h +++ b/launcher/ui/setupwizard/ThemeWizardPage.h @@ -38,6 +38,7 @@ public: private slots: void updateIcons(); + void updateCat(); private: Ui::ThemeWizardPage *ui; diff --git a/launcher/ui/setupwizard/ThemeWizardPage.ui b/launcher/ui/setupwizard/ThemeWizardPage.ui index b743644f9..95b0f8053 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.ui +++ b/launcher/ui/setupwizard/ThemeWizardPage.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 510 + 552 @@ -309,6 +309,28 @@ + + + + + 0 + 256 + + + + + + + + 256 + 256 + + + + true + + + diff --git a/launcher/ui/themes/CustomTheme.cpp b/launcher/ui/themes/CustomTheme.cpp index 3ad61668e..198e76ba1 100644 --- a/launcher/ui/themes/CustomTheme.cpp +++ b/launcher/ui/themes/CustomTheme.cpp @@ -167,8 +167,6 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest if (!FS::ensureFolderPathExists(path) || !FS::ensureFolderPathExists(pathResources)) { themeWarningLog() << "couldn't create folder for theme!"; - m_palette = baseTheme->colorScheme(); - m_styleSheet = baseTheme->appStyleSheet(); return; } @@ -177,18 +175,15 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest bool jsonDataIncomplete = false; m_palette = baseTheme->colorScheme(); - if (!readThemeJson(themeFilePath, m_palette, m_fadeAmount, m_fadeColor, m_name, m_widgets, m_qssFilePath, jsonDataIncomplete)) { - themeDebugLog() << "Did not read theme json file correctly, writing new one to: " << themeFilePath; - m_name = "Custom"; - m_palette = baseTheme->colorScheme(); - m_fadeColor = baseTheme->fadeColor(); - m_fadeAmount = baseTheme->fadeAmount(); - m_widgets = baseTheme->qtTheme(); - m_qssFilePath = "themeStyle.css"; - } else { + if (readThemeJson(themeFilePath, m_palette, m_fadeAmount, m_fadeColor, m_name, m_widgets, m_qssFilePath, jsonDataIncomplete)) { + // If theme data was found, fade "Disabled" color of each role according to FadeAmount m_palette = fadeInactive(m_palette, m_fadeAmount, m_fadeColor); + } else { + themeDebugLog() << "Did not read theme json file correctly, not changing theme, keeping previous."; + return; } + // FIXME: This is kinda jank, it only actually checks if the qss file path is not present. It should actually check for any relevant missing data (e.g. name, colors) if (jsonDataIncomplete) { writeThemeJson(fileInfo.absoluteFilePath(), m_palette, m_fadeAmount, m_fadeColor, m_name, m_widgets, m_qssFilePath); } @@ -197,20 +192,14 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest QFileInfo info(qssFilePath); if (info.isFile()) { try { - // TODO: validate css? + // TODO: validate qss? m_styleSheet = QString::fromUtf8(FS::read(qssFilePath)); } catch (const Exception& e) { - themeWarningLog() << "Couldn't load css:" << e.cause() << "from" << qssFilePath; - m_styleSheet = baseTheme->appStyleSheet(); + themeWarningLog() << "Couldn't load qss:" << e.cause() << "from" << qssFilePath; + return; } } else { - themeDebugLog() << "No theme css present."; - m_styleSheet = baseTheme->appStyleSheet(); - try { - FS::write(qssFilePath, m_styleSheet.toUtf8()); - } catch (const Exception& e) { - themeWarningLog() << "Couldn't write css:" << e.cause() << "to" << qssFilePath; - } + themeDebugLog() << "No theme qss present."; } } else { m_id = fileInfo.fileName(); diff --git a/launcher/ui/themes/ITheme.h b/launcher/ui/themes/ITheme.h index bb5c8afe9..2e5b7f25d 100644 --- a/launcher/ui/themes/ITheme.h +++ b/launcher/ui/themes/ITheme.h @@ -33,14 +33,13 @@ * limitations under the License. */ #pragma once -#include #include +#include class QStyle; -class ITheme -{ -public: +class ITheme { + public: virtual ~ITheme() {} virtual void apply(); virtual QString id() = 0; @@ -52,10 +51,7 @@ public: virtual QPalette colorScheme() = 0; virtual QColor fadeColor() = 0; virtual double fadeAmount() = 0; - virtual QStringList searchPaths() - { - return {}; - } + virtual QStringList searchPaths() { return {}; } static QPalette fadeInactive(QPalette in, qreal bias, QColor color); }; diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index d6ef442b3..24875e331 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -34,24 +34,22 @@ */ #include "SystemTheme.h" #include +#include #include #include -#include #include "ThemeManager.h" SystemTheme::SystemTheme() { themeDebugLog() << "Determining System Theme..."; - const auto & style = QApplication::style(); + const auto& style = QApplication::style(); systemPalette = style->standardPalette(); QString lowerThemeName = style->objectName(); themeDebugLog() << "System theme seems to be:" << lowerThemeName; QStringList styles = QStyleFactory::keys(); - for(auto &st: styles) - { + for (auto& st : styles) { themeDebugLog() << "Considering theme from theme factory:" << st.toLower(); - if(st.toLower() == lowerThemeName) - { + if (st.toLower() == lowerThemeName) { systemTheme = st; themeDebugLog() << "System theme has been determined to be:" << systemTheme; return; @@ -99,7 +97,7 @@ double SystemTheme::fadeAmount() QColor SystemTheme::fadeColor() { - return QColor(128,128,128); + return QColor(128, 128, 128); } bool SystemTheme::hasStyleSheet() diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index 5c9216eb6..b5c03defb 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -36,9 +36,8 @@ #include "ITheme.h" -class SystemTheme: public ITheme -{ -public: +class SystemTheme : public ITheme { + public: SystemTheme(); virtual ~SystemTheme() {} void apply() override; @@ -52,7 +51,8 @@ public: QPalette colorScheme() override; double fadeAmount() override; QColor fadeColor() override; -private: + + private: QPalette systemPalette; QString systemTheme; }; diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index 0a70ddfc3..bb10cd487 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -35,9 +35,6 @@ class ThemeManager { public: ThemeManager(MainWindow* mainWindow); - // maybe make private? Or put in ctor? - void InitializeThemes(); - QList getValidApplicationThemes(); void setIconTheme(const QString& name); void applyCurrentlySelectedTheme(); @@ -48,6 +45,7 @@ class ThemeManager { MainWindow* m_mainWindow; bool m_firstThemeInitialized; + void InitializeThemes(); QString AddTheme(std::unique_ptr theme); ITheme* GetTheme(QString themeId); }; diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.cpp b/launcher/ui/widgets/ThemeCustomizationWidget.cpp index 0830a030a..eafcf4820 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.cpp +++ b/launcher/ui/widgets/ThemeCustomizationWidget.cpp @@ -36,18 +36,40 @@ ThemeCustomizationWidget::~ThemeCustomizationWidget() delete ui; } +/// +/// The layout was not quite right, so currently this just disables the UI elements, which should be hidden instead +/// TODO FIXME +/// +/// Original Method One: +/// ui->iconsComboBox->setVisible(features& ThemeFields::ICONS); +/// ui->iconsLabel->setVisible(features& ThemeFields::ICONS); +/// ui->widgetStyleComboBox->setVisible(features& ThemeFields::WIDGETS); +/// ui->widgetThemeLabel->setVisible(features& ThemeFields::WIDGETS); +/// ui->backgroundCatComboBox->setVisible(features& ThemeFields::CAT); +/// ui->backgroundCatLabel->setVisible(features& ThemeFields::CAT); +/// +/// original Method Two: +/// if (!(features & ThemeFields::ICONS)) { +/// ui->formLayout->setRowVisible(0, false); +/// } +/// if (!(features & ThemeFields::WIDGETS)) { +/// ui->formLayout->setRowVisible(1, false); +/// } +/// if (!(features & ThemeFields::CAT)) { +/// ui->formLayout->setRowVisible(2, false); +/// } +/// +/// void ThemeCustomizationWidget::showFeatures(ThemeFields features) { - ui->iconsComboBox->setVisible(features & ThemeFields::ICONS); - ui->iconsLabel->setVisible(features & ThemeFields::ICONS); - ui->widgetStyleComboBox->setVisible(features & ThemeFields::WIDGETS); - ui->widgetThemeLabel->setVisible(features & ThemeFields::WIDGETS); - ui->backgroundCatComboBox->setVisible(features & ThemeFields::CAT); - ui->backgroundCatLabel->setVisible(features & ThemeFields::CAT); + ui->iconsComboBox->setEnabled(features & ThemeFields::ICONS); + ui->iconsLabel->setEnabled(features & ThemeFields::ICONS); + ui->widgetStyleComboBox->setEnabled(features & ThemeFields::WIDGETS); + ui->widgetThemeLabel->setEnabled(features & ThemeFields::WIDGETS); + ui->backgroundCatComboBox->setEnabled(features & ThemeFields::CAT); + ui->backgroundCatLabel->setEnabled(features & ThemeFields::CAT); } void ThemeCustomizationWidget::applyIconTheme(int index) { - emit currentIconThemeChanged(index); - auto settings = APPLICATION->settings(); auto original = settings->get("IconTheme").toString(); // FIXME: make generic @@ -56,11 +78,11 @@ void ThemeCustomizationWidget::applyIconTheme(int index) { if (original != settings->get("IconTheme")) { APPLICATION->applyCurrentlySelectedTheme(); } + + emit currentIconThemeChanged(index); } void ThemeCustomizationWidget::applyWidgetTheme(int index) { - emit currentWidgetThemeChanged(index); - auto settings = APPLICATION->settings(); auto originalAppTheme = settings->get("ApplicationTheme").toString(); auto newAppTheme = ui->widgetStyleComboBox->currentData().toString(); @@ -68,26 +90,15 @@ void ThemeCustomizationWidget::applyWidgetTheme(int index) { settings->set("ApplicationTheme", newAppTheme); APPLICATION->applyCurrentlySelectedTheme(); } + + emit currentWidgetThemeChanged(index); } void ThemeCustomizationWidget::applyCatTheme(int index) { - emit currentCatChanged(index); - auto settings = APPLICATION->settings(); - switch (index) { - case 0: // original cat - settings->set("BackgroundCat", "kitteh"); - break; - case 1: // rory the cat - settings->set("BackgroundCat", "rory"); - break; - case 2: // rory the cat flat edition - settings->set("BackgroundCat", "rory-flat"); - break; - case 3: // teawie - settings->set("BackgroundCat", "teawie"); - break; - } + settings->set("BackgroundCat", m_catOptions[index]); + + emit currentCatChanged(index); } void ThemeCustomizationWidget::applySettings() @@ -101,8 +112,8 @@ void ThemeCustomizationWidget::loadSettings() auto settings = APPLICATION->settings(); // FIXME: make generic - auto theme = settings->get("IconTheme").toString(); - ui->iconsComboBox->setCurrentIndex(m_iconThemeOptions.indexOf(theme)); + auto iconTheme = settings->get("IconTheme").toString(); + ui->iconsComboBox->setCurrentIndex(m_iconThemeOptions.indexOf(iconTheme)); { auto currentTheme = settings->get("ApplicationTheme").toString(); @@ -118,18 +129,10 @@ void ThemeCustomizationWidget::loadSettings() } auto cat = settings->get("BackgroundCat").toString(); - if (cat == "kitteh") { - ui->backgroundCatComboBox->setCurrentIndex(0); - } else if (cat == "rory") { - ui->backgroundCatComboBox->setCurrentIndex(1); - } else if (cat == "rory-flat") { - ui->backgroundCatComboBox->setCurrentIndex(2); - } else if (cat == "teawie") { - ui->backgroundCatComboBox->setCurrentIndex(3); - } + ui->backgroundCatComboBox->setCurrentIndex(m_catOptions.indexOf(cat)); } void ThemeCustomizationWidget::retranslate() { ui->retranslateUi(this); -} \ No newline at end of file +} diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.h b/launcher/ui/widgets/ThemeCustomizationWidget.h index e17286e16..653e89e79 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.h +++ b/launcher/ui/widgets/ThemeCustomizationWidget.h @@ -61,4 +61,5 @@ signals: private: QStringList m_iconThemeOptions{ "pe_colored", "pe_light", "pe_dark", "pe_blue", "breeze_light", "breeze_dark", "OSX", "iOS", "flat", "flat_white", "multimc", "custom" }; + QStringList m_catOptions{ "kitteh", "rory", "rory-flat" }; }; diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.ui b/launcher/ui/widgets/ThemeCustomizationWidget.ui index c184b8f3f..9cc5cc765 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.ui +++ b/launcher/ui/widgets/ThemeCustomizationWidget.ui @@ -11,9 +11,12 @@ - Form + Form + + QLayout::SetMinimumSize + 0 From 6daa45783894fc7517917d6f6df0deaac1a41ba3 Mon Sep 17 00:00:00 2001 From: Tayou Date: Mon, 9 Jan 2023 16:58:27 +0100 Subject: [PATCH 30/37] Implement Suggestions from flow & Scrumplex Signed-off-by: Tayou --- launcher/Application.cpp | 7 +- launcher/ui/MainWindow.cpp | 22 +---- launcher/ui/setupwizard/ThemeWizardPage.cpp | 27 +------ launcher/ui/setupwizard/ThemeWizardPage.h | 16 ++-- launcher/ui/themes/ThemeManager.cpp | 35 +++++--- launcher/ui/themes/ThemeManager.h | 9 ++- .../ui/widgets/ThemeCustomizationWidget.cpp | 22 +++-- .../ui/widgets/ThemeCustomizationWidget.h | 50 +++++++----- .../ui/widgets/ThemeCustomizationWidget.ui | 80 ------------------- 9 files changed, 97 insertions(+), 171 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 3e64b74fe..f2cc7bfb9 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -498,7 +498,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv) // Theming m_settings->registerSetting("IconTheme", QString("pe_colored")); - m_settings->registerSetting("ApplicationTheme", QString("system")); + m_settings->registerSetting("ApplicationTheme"); m_settings->registerSetting("BackgroundCat", QString("kitteh")); // Remembered state @@ -890,8 +890,8 @@ bool Application::createSetupWizard() return false; }(); bool pasteInterventionRequired = settings()->get("PastebinURL") != ""; - bool themeInterventionRequired = settings()->get("ApplicationTheme") != ""; - bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired; + bool themeInterventionRequired = settings()->get("ApplicationTheme") == ""; + bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired || themeInterventionRequired; if(wizardRequired) { @@ -913,6 +913,7 @@ bool Application::createSetupWizard() if (themeInterventionRequired) { + settings()->set("ApplicationTheme", QString("system")); // set default theme after going into theme wizard m_setupWizard->addPage(new ThemeWizardPage(m_setupWizard)); } connect(m_setupWizard, &QDialog::finished, this, &Application::setupWizardFinished); diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index a921e3781..ab80fb805 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -111,6 +111,7 @@ #include "ui/dialogs/ExportInstanceDialog.h" #include "ui/dialogs/ImportResourcePackDialog.h" #include "ui/themes/ITheme.h" +#include "ui/themes/ThemeManager.h" #include #include @@ -1654,20 +1655,7 @@ void MainWindow::onCatToggled(bool state) void MainWindow::setCatBackground(bool enabled) { - if (enabled) - { - QDateTime now = QDateTime::currentDateTime(); - QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0)); - QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); - QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); - QString cat = APPLICATION->settings()->get("BackgroundCat").toString(); - if (std::abs(now.daysTo(xmas)) <= 4) { - cat += "-xmas"; - } else if (std::abs(now.daysTo(halloween)) <= 4) { - cat += "-spooky"; - } else if (std::abs(now.daysTo(birthday)) <= 12) { - cat += "-bday"; - } + if (enabled) { view->setStyleSheet(QString(R"( InstanceView { @@ -1678,10 +1666,8 @@ InstanceView background-repeat: none; background-color:palette(base); })") - .arg(cat)); - } - else - { + .arg(ThemeManager::getCatImage())); + } else { view->setStyleSheet(QString()); } } diff --git a/launcher/ui/setupwizard/ThemeWizardPage.cpp b/launcher/ui/setupwizard/ThemeWizardPage.cpp index 4e1eb4889..cc2d335be 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.cpp +++ b/launcher/ui/setupwizard/ThemeWizardPage.cpp @@ -20,6 +20,7 @@ #include "Application.h" #include "ui/themes/ITheme.h" +#include "ui/themes/ThemeManager.h" #include "ui/widgets/ThemeCustomizationWidget.h" #include "ui_ThemeCustomizationWidget.h" @@ -27,8 +28,8 @@ ThemeWizardPage::ThemeWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(n { ui->setupUi(this); - connect(ui->themeCustomizationWidget, QOverload::of(&ThemeCustomizationWidget::currentIconThemeChanged), this, &ThemeWizardPage::updateIcons); - connect(ui->themeCustomizationWidget, QOverload::of(&ThemeCustomizationWidget::currentCatChanged), this, &ThemeWizardPage::updateCat); + connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentIconThemeChanged, this, &ThemeWizardPage::updateIcons); + connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentCatChanged, this, &ThemeWizardPage::updateCat); updateIcons(); updateCat(); @@ -39,13 +40,6 @@ ThemeWizardPage::~ThemeWizardPage() delete ui; } -void ThemeWizardPage::initializePage() {} - -bool ThemeWizardPage::validatePage() -{ - return true; -} - void ThemeWizardPage::updateIcons() { qDebug() << "Setting Icons"; @@ -67,20 +61,7 @@ void ThemeWizardPage::updateIcons() void ThemeWizardPage::updateCat() { qDebug() << "Setting Cat"; - - QDateTime now = QDateTime::currentDateTime(); - QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0)); - QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); - QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); - QString cat = APPLICATION->settings()->get("BackgroundCat").toString(); - if (std::abs(now.daysTo(xmas)) <= 4) { - cat += "-xmas"; - } else if (std::abs(now.daysTo(halloween)) <= 4) { - cat += "-spooky"; - } else if (std::abs(now.daysTo(birthday)) <= 12) { - cat += "-bday"; - } - ui->catImagePreviewButton->setIcon(QIcon(QString(R"(:/backgrounds/%1)").arg(cat))); + ui->catImagePreviewButton->setIcon(QIcon(QString(R"(:/backgrounds/%1)").arg(ThemeManager::getCatImage()))); } void ThemeWizardPage::retranslate() diff --git a/launcher/ui/setupwizard/ThemeWizardPage.h b/launcher/ui/setupwizard/ThemeWizardPage.h index 6562ad2ea..992ba2ca3 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.h +++ b/launcher/ui/setupwizard/ThemeWizardPage.h @@ -24,22 +24,20 @@ namespace Ui { class ThemeWizardPage; } -class ThemeWizardPage : public BaseWizardPage -{ +class ThemeWizardPage : public BaseWizardPage { Q_OBJECT -public: - explicit ThemeWizardPage(QWidget *parent = nullptr); + public: + explicit ThemeWizardPage(QWidget* parent = nullptr); ~ThemeWizardPage(); - void initializePage() override; - bool validatePage() override; + bool validatePage() override { return true; }; void retranslate() override; -private slots: + private slots: void updateIcons(); void updateCat(); -private: - Ui::ThemeWizardPage *ui; + private: + Ui::ThemeWizardPage* ui; }; diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index a6cebc6fc..44c13f408 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -31,13 +31,13 @@ ThemeManager::ThemeManager(MainWindow* mainWindow) { m_mainWindow = mainWindow; - InitializeThemes(); + initializeThemes(); } /// @brief Adds the Theme to the list of themes /// @param theme The Theme to add /// @return Theme ID -QString ThemeManager::AddTheme(std::unique_ptr theme) +QString ThemeManager::addTheme(std::unique_ptr theme) { QString id = theme->id(); m_themes.emplace(id, std::move(theme)); @@ -47,12 +47,12 @@ QString ThemeManager::AddTheme(std::unique_ptr theme) /// @brief Gets the Theme from the List via ID /// @param themeId Theme ID of theme to fetch /// @return Theme at themeId -ITheme* ThemeManager::GetTheme(QString themeId) +ITheme* ThemeManager::getTheme(QString themeId) { return m_themes[themeId].get(); } -void ThemeManager::InitializeThemes() +void ThemeManager::initializeThemes() { // Icon themes { @@ -67,10 +67,10 @@ void ThemeManager::InitializeThemes() // Initialize widget themes { themeDebugLog() << "<> Initializing Widget Themes"; - themeDebugLog() << "Loading Built-in Theme:" << AddTheme(std::make_unique()); - auto darkThemeId = AddTheme(std::make_unique()); + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); + auto darkThemeId = addTheme(std::make_unique()); themeDebugLog() << "Loading Built-in Theme:" << darkThemeId; - themeDebugLog() << "Loading Built-in Theme:" << AddTheme(std::make_unique()); + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); // TODO: need some way to differentiate same name themes in different subdirectories (maybe smaller grey text next to theme name in // dropdown?) @@ -84,7 +84,7 @@ void ThemeManager::InitializeThemes() if (themeJson.exists()) { // Load "theme.json" based themes themeDebugLog() << "Loading JSON Theme from:" << themeJson.absoluteFilePath(); - AddTheme(std::make_unique(GetTheme(darkThemeId), themeJson, true)); + addTheme(std::make_unique(getTheme(darkThemeId), themeJson, true)); } else { // Load pure QSS Themes QDirIterator stylesheetFileIterator(dir.absoluteFilePath(""), { "*.qss", "*.css" }, QDir::Files); @@ -92,7 +92,7 @@ void ThemeManager::InitializeThemes() QFile customThemeFile(stylesheetFileIterator.next()); QFileInfo customThemeFileInfo(customThemeFile); themeDebugLog() << "Loading QSS Theme from:" << customThemeFileInfo.absoluteFilePath(); - AddTheme(std::make_unique(GetTheme(darkThemeId), customThemeFileInfo, false)); + addTheme(std::make_unique(getTheme(darkThemeId), customThemeFileInfo, false)); } } } @@ -136,3 +136,20 @@ void ThemeManager::setApplicationTheme(const QString& name) themeWarningLog() << "Tried to set invalid theme:" << name; } } + +QString ThemeManager::getCatImage(QString catName) +{ + QDateTime now = QDateTime::currentDateTime(); + QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0)); + QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); + QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); + QString cat = catName == "" ? APPLICATION->settings()->get("BackgroundCat").toString() : catName; + if (std::abs(now.daysTo(xmas)) <= 4) { + cat += "-xmas"; + } else if (std::abs(now.daysTo(halloween)) <= 4) { + cat += "-spooky"; + } else if (std::abs(now.daysTo(birthday)) <= 12) { + cat += "-bday"; + } + return cat; +} \ No newline at end of file diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index bb10cd487..4f36bffa4 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -40,12 +40,13 @@ class ThemeManager { void applyCurrentlySelectedTheme(); void setApplicationTheme(const QString& name); + static QString getCatImage(QString catName = ""); + private: std::map> m_themes; MainWindow* m_mainWindow; - bool m_firstThemeInitialized; - void InitializeThemes(); - QString AddTheme(std::unique_ptr theme); - ITheme* GetTheme(QString themeId); + void initializeThemes(); + QString addTheme(std::unique_ptr theme); + ITheme* getTheme(QString themeId); }; diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.cpp b/launcher/ui/widgets/ThemeCustomizationWidget.cpp index eafcf4820..5fb5bd4e3 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.cpp +++ b/launcher/ui/widgets/ThemeCustomizationWidget.cpp @@ -20,6 +20,7 @@ #include "Application.h" #include "ui/themes/ITheme.h" +#include "ui/themes/ThemeManager.h" ThemeCustomizationWidget::ThemeCustomizationWidget(QWidget *parent) : QWidget(parent), ui(new Ui::ThemeCustomizationWidget) { @@ -72,8 +73,7 @@ void ThemeCustomizationWidget::showFeatures(ThemeFields features) { void ThemeCustomizationWidget::applyIconTheme(int index) { auto settings = APPLICATION->settings(); auto original = settings->get("IconTheme").toString(); - // FIXME: make generic - settings->set("IconTheme", m_iconThemeOptions[index]); + settings->set("IconTheme", m_iconThemeOptions[index].first); if (original != settings->get("IconTheme")) { APPLICATION->applyCurrentlySelectedTheme(); @@ -96,7 +96,7 @@ void ThemeCustomizationWidget::applyWidgetTheme(int index) { void ThemeCustomizationWidget::applyCatTheme(int index) { auto settings = APPLICATION->settings(); - settings->set("BackgroundCat", m_catOptions[index]); + settings->set("BackgroundCat", m_catOptions[index].first); emit currentCatChanged(index); } @@ -111,9 +111,13 @@ void ThemeCustomizationWidget::loadSettings() { auto settings = APPLICATION->settings(); - // FIXME: make generic auto iconTheme = settings->get("IconTheme").toString(); - ui->iconsComboBox->setCurrentIndex(m_iconThemeOptions.indexOf(iconTheme)); + for (auto& iconThemeFromList : m_iconThemeOptions) { + ui->iconsComboBox->addItem(QIcon(QString(":/icons/%1/scalable/settings").arg(iconThemeFromList.first)), iconThemeFromList.second); + if (iconTheme == iconThemeFromList.first) { + ui->iconsComboBox->setCurrentIndex(ui->iconsComboBox->count() - 1); + } + } { auto currentTheme = settings->get("ApplicationTheme").toString(); @@ -129,7 +133,13 @@ void ThemeCustomizationWidget::loadSettings() } auto cat = settings->get("BackgroundCat").toString(); - ui->backgroundCatComboBox->setCurrentIndex(m_catOptions.indexOf(cat)); + for (auto& catFromList : m_catOptions) { + ui->backgroundCatComboBox->addItem(QIcon(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage(catFromList.first))), + catFromList.second); + if (cat == catFromList.first) { + ui->backgroundCatComboBox->setCurrentIndex(ui->backgroundCatComboBox->count() - 1); + } + } } void ThemeCustomizationWidget::retranslate() diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.h b/launcher/ui/widgets/ThemeCustomizationWidget.h index 653e89e79..d450e8dff 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.h +++ b/launcher/ui/widgets/ThemeCustomizationWidget.h @@ -18,25 +18,19 @@ #pragma once #include -#include +#include "translations/TranslationsModel.h" -enum ThemeFields { - NONE = 0b0000, - ICONS = 0b0001, - WIDGETS = 0b0010, - CAT = 0b0100 -}; +enum ThemeFields { NONE = 0b0000, ICONS = 0b0001, WIDGETS = 0b0010, CAT = 0b0100 }; namespace Ui { class ThemeCustomizationWidget; } -class ThemeCustomizationWidget : public QWidget -{ +class ThemeCustomizationWidget : public QWidget { Q_OBJECT -public: - explicit ThemeCustomizationWidget(QWidget *parent = nullptr); + public: + explicit ThemeCustomizationWidget(QWidget* parent = nullptr); ~ThemeCustomizationWidget(); void showFeatures(ThemeFields features); @@ -45,21 +39,39 @@ public: void loadSettings(); void retranslate(); - - Ui::ThemeCustomizationWidget *ui; -private slots: + private slots: void applyIconTheme(int index); void applyWidgetTheme(int index); void applyCatTheme(int index); -signals: + signals: int currentIconThemeChanged(int index); int currentWidgetThemeChanged(int index); int currentCatChanged(int index); -private: + private: + Ui::ThemeCustomizationWidget* ui; - QStringList m_iconThemeOptions{ "pe_colored", "pe_light", "pe_dark", "pe_blue", "breeze_light", "breeze_dark", "OSX", "iOS", "flat", "flat_white", "multimc", "custom" }; - QStringList m_catOptions{ "kitteh", "rory", "rory-flat" }; -}; + //TODO finish implementing + QList> m_iconThemeOptions{ + { "pe_colored", QObject::tr("Simple (Colored Icons)") }, + { "pe_light", QObject::tr("Simple (Light Icons)") }, + { "pe_dark", QObject::tr("Simple (Dark Icons)") }, + { "pe_blue", QObject::tr("Simple (Blue Icons)") }, + { "breeze_light", QObject::tr("Breeze Light") }, + { "breeze_dark", QObject::tr("Breeze Dark") }, + { "OSX", QObject::tr("OSX") }, + { "iOS", QObject::tr("iOS") }, + { "flat", QObject::tr("Flat") }, + { "flat_white", QObject::tr("Flat (White)") }, + { "multimc", QObject::tr("Legacy") }, + { "custom", QObject::tr("Custom") } + }; + QList> m_catOptions{ + { "kitteh", QObject::tr("Background Cat (from MultiMC)") }, + { "rory", QObject::tr("Rory ID 11 (drawn by Ashtaka)") }, + { "rory-flat", QObject::tr("Rory ID 11 (flat edition, drawn by Ashtaka)") }, + { "teawie", QObject::tr("Teawie (drawn by SympathyTea)") } + }; +}; \ No newline at end of file diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.ui b/launcher/ui/widgets/ThemeCustomizationWidget.ui index 9cc5cc765..15ba831e4 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.ui +++ b/launcher/ui/widgets/ThemeCustomizationWidget.ui @@ -50,66 +50,6 @@ Qt::StrongFocus - - - Simple (Colored Icons) - - - - - Simple (Light Icons) - - - - - Simple (Dark Icons) - - - - - Simple (Blue Icons) - - - - - Breeze Light - - - - - Breeze Dark - - - - - OSX - - - - - iOS - - - - - Flat - - - - - Flat (White) - - - - - Legacy - - - - - Custom - - @@ -156,26 +96,6 @@ Qt::StrongFocus - - - Background Cat (from MultiMC) - - - - - Rory ID 11 (drawn by Ashtaka) - - - - - Rory ID 11 (flat edition, drawn by Ashtaka) - - - - - Teawie (drawn by SympathyTea) - - From 7d440402ade59fd38b6f1d6b70fb51449cc57e5d Mon Sep 17 00:00:00 2001 From: Tayou <31988415+TayouVR@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:30:25 +0100 Subject: [PATCH 31/37] Update launcher/Application.cpp with suggestion from scrumplex Co-authored-by: Sefa Eyeoglu Signed-off-by: Tayou --- launcher/Application.cpp | 2 +- launcher/ui/themes/ThemeManager.cpp | 4 ++-- launcher/ui/themes/ThemeManager.h | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index f2cc7bfb9..ed8d8d2c8 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -498,7 +498,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv) // Theming m_settings->registerSetting("IconTheme", QString("pe_colored")); - m_settings->registerSetting("ApplicationTheme"); + m_settings->registerSetting("ApplicationTheme", QString()); m_settings->registerSetting("BackgroundCat", QString("kitteh")); // Remembered state diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 44c13f408..7ccc946a5 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -143,7 +143,7 @@ QString ThemeManager::getCatImage(QString catName) QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0)); QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); - QString cat = catName == "" ? APPLICATION->settings()->get("BackgroundCat").toString() : catName; + QString cat = !catName.isEmpty() ? catName : APPLICATION->settings()->get("BackgroundCat").toString(); if (std::abs(now.daysTo(xmas)) <= 4) { cat += "-xmas"; } else if (std::abs(now.daysTo(halloween)) <= 4) { @@ -152,4 +152,4 @@ QString ThemeManager::getCatImage(QString catName) cat += "-bday"; } return cat; -} \ No newline at end of file +} diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index 4f36bffa4..d5e73bb80 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -40,6 +40,11 @@ class ThemeManager { void applyCurrentlySelectedTheme(); void setApplicationTheme(const QString& name); + /// + /// Returns the cat based on selected cat and with events (Birthday, XMas, etc.) + /// + /// Optional, if you need a specific cat. + /// static QString getCatImage(QString catName = ""); private: From 689fe1e2c76b8065b9769b4304b1c9b4d81215b1 Mon Sep 17 00:00:00 2001 From: Tayou Date: Mon, 9 Jan 2023 17:01:33 +0100 Subject: [PATCH 32/37] CRLF -> LF damn you visual studio for creating CRLF files everywhere... Signed-off-by: Tayou --- launcher/ui/setupwizard/ThemeWizardPage.cpp | 140 ++-- launcher/ui/setupwizard/ThemeWizardPage.h | 86 +-- launcher/ui/setupwizard/ThemeWizardPage.ui | 716 +++++++++--------- launcher/ui/themes/ThemeManager.cpp | 310 ++++---- launcher/ui/themes/ThemeManager.h | 114 +-- .../ui/widgets/ThemeCustomizationWidget.cpp | 296 ++++---- .../ui/widgets/ThemeCustomizationWidget.h | 152 ++-- .../ui/widgets/ThemeCustomizationWidget.ui | 210 ++--- 8 files changed, 1012 insertions(+), 1012 deletions(-) diff --git a/launcher/ui/setupwizard/ThemeWizardPage.cpp b/launcher/ui/setupwizard/ThemeWizardPage.cpp index cc2d335be..42826aba1 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.cpp +++ b/launcher/ui/setupwizard/ThemeWizardPage.cpp @@ -1,70 +1,70 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Tayou - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "ThemeWizardPage.h" -#include "ui_ThemeWizardPage.h" - -#include "Application.h" -#include "ui/themes/ITheme.h" -#include "ui/themes/ThemeManager.h" -#include "ui/widgets/ThemeCustomizationWidget.h" -#include "ui_ThemeCustomizationWidget.h" - -ThemeWizardPage::ThemeWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(new Ui::ThemeWizardPage) -{ - ui->setupUi(this); - - connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentIconThemeChanged, this, &ThemeWizardPage::updateIcons); - connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentCatChanged, this, &ThemeWizardPage::updateCat); - - updateIcons(); - updateCat(); -} - -ThemeWizardPage::~ThemeWizardPage() -{ - delete ui; -} - -void ThemeWizardPage::updateIcons() -{ - qDebug() << "Setting Icons"; - ui->previewIconButton0->setIcon(APPLICATION->getThemedIcon("new")); - ui->previewIconButton1->setIcon(APPLICATION->getThemedIcon("centralmods")); - ui->previewIconButton2->setIcon(APPLICATION->getThemedIcon("viewfolder")); - ui->previewIconButton3->setIcon(APPLICATION->getThemedIcon("launch")); - ui->previewIconButton4->setIcon(APPLICATION->getThemedIcon("copy")); - ui->previewIconButton5->setIcon(APPLICATION->getThemedIcon("export")); - ui->previewIconButton6->setIcon(APPLICATION->getThemedIcon("delete")); - ui->previewIconButton7->setIcon(APPLICATION->getThemedIcon("about")); - ui->previewIconButton8->setIcon(APPLICATION->getThemedIcon("settings")); - ui->previewIconButton9->setIcon(APPLICATION->getThemedIcon("cat")); - update(); - repaint(); - parentWidget()->update(); -} - -void ThemeWizardPage::updateCat() -{ - qDebug() << "Setting Cat"; - ui->catImagePreviewButton->setIcon(QIcon(QString(R"(:/backgrounds/%1)").arg(ThemeManager::getCatImage()))); -} - -void ThemeWizardPage::retranslate() -{ - ui->retranslateUi(this); -} +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ThemeWizardPage.h" +#include "ui_ThemeWizardPage.h" + +#include "Application.h" +#include "ui/themes/ITheme.h" +#include "ui/themes/ThemeManager.h" +#include "ui/widgets/ThemeCustomizationWidget.h" +#include "ui_ThemeCustomizationWidget.h" + +ThemeWizardPage::ThemeWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(new Ui::ThemeWizardPage) +{ + ui->setupUi(this); + + connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentIconThemeChanged, this, &ThemeWizardPage::updateIcons); + connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentCatChanged, this, &ThemeWizardPage::updateCat); + + updateIcons(); + updateCat(); +} + +ThemeWizardPage::~ThemeWizardPage() +{ + delete ui; +} + +void ThemeWizardPage::updateIcons() +{ + qDebug() << "Setting Icons"; + ui->previewIconButton0->setIcon(APPLICATION->getThemedIcon("new")); + ui->previewIconButton1->setIcon(APPLICATION->getThemedIcon("centralmods")); + ui->previewIconButton2->setIcon(APPLICATION->getThemedIcon("viewfolder")); + ui->previewIconButton3->setIcon(APPLICATION->getThemedIcon("launch")); + ui->previewIconButton4->setIcon(APPLICATION->getThemedIcon("copy")); + ui->previewIconButton5->setIcon(APPLICATION->getThemedIcon("export")); + ui->previewIconButton6->setIcon(APPLICATION->getThemedIcon("delete")); + ui->previewIconButton7->setIcon(APPLICATION->getThemedIcon("about")); + ui->previewIconButton8->setIcon(APPLICATION->getThemedIcon("settings")); + ui->previewIconButton9->setIcon(APPLICATION->getThemedIcon("cat")); + update(); + repaint(); + parentWidget()->update(); +} + +void ThemeWizardPage::updateCat() +{ + qDebug() << "Setting Cat"; + ui->catImagePreviewButton->setIcon(QIcon(QString(R"(:/backgrounds/%1)").arg(ThemeManager::getCatImage()))); +} + +void ThemeWizardPage::retranslate() +{ + ui->retranslateUi(this); +} diff --git a/launcher/ui/setupwizard/ThemeWizardPage.h b/launcher/ui/setupwizard/ThemeWizardPage.h index 992ba2ca3..61a3d0c01 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.h +++ b/launcher/ui/setupwizard/ThemeWizardPage.h @@ -1,43 +1,43 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Tayou - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include -#include "BaseWizardPage.h" - -namespace Ui { -class ThemeWizardPage; -} - -class ThemeWizardPage : public BaseWizardPage { - Q_OBJECT - - public: - explicit ThemeWizardPage(QWidget* parent = nullptr); - ~ThemeWizardPage(); - - bool validatePage() override { return true; }; - void retranslate() override; - - private slots: - void updateIcons(); - void updateCat(); - - private: - Ui::ThemeWizardPage* ui; -}; +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include +#include "BaseWizardPage.h" + +namespace Ui { +class ThemeWizardPage; +} + +class ThemeWizardPage : public BaseWizardPage { + Q_OBJECT + + public: + explicit ThemeWizardPage(QWidget* parent = nullptr); + ~ThemeWizardPage(); + + bool validatePage() override { return true; }; + void retranslate() override; + + private slots: + void updateIcons(); + void updateCat(); + + private: + Ui::ThemeWizardPage* ui; +}; diff --git a/launcher/ui/setupwizard/ThemeWizardPage.ui b/launcher/ui/setupwizard/ThemeWizardPage.ui index 95b0f8053..1ab04fc8b 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.ui +++ b/launcher/ui/setupwizard/ThemeWizardPage.ui @@ -1,358 +1,358 @@ - - - ThemeWizardPage - - - - 0 - 0 - 510 - 552 - - - - WizardPage - - - - - - Select the Theme you wish to use - - - - - - - - 0 - 100 - - - - - - - - Qt::Horizontal - - - - - - - Icon Preview: - - - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - 0 - 0 - - - - - 30 - 30 - - - - - .. - - - false - - - true - - - - - - - - - - 0 - 256 - - - - - - - - 256 - 256 - - - - true - - - - - - - Qt::Vertical - - - - 20 - 193 - - - - - - - - - ThemeCustomizationWidget - QWidget -
ui/widgets/ThemeCustomizationWidget.h
-
-
- - -
+ + + ThemeWizardPage + + + + 0 + 0 + 510 + 552 + + + + WizardPage + + + + + + Select the Theme you wish to use + + + + + + + + 0 + 100 + + + + + + + + Qt::Horizontal + + + + + + + Icon Preview: + + + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + 0 + 0 + + + + + 30 + 30 + + + + + .. + + + false + + + true + + + + + + + + + + 0 + 256 + + + + + + + + 256 + 256 + + + + true + + + + + + + Qt::Vertical + + + + 20 + 193 + + + + + + + + + ThemeCustomizationWidget + QWidget +
ui/widgets/ThemeCustomizationWidget.h
+
+
+ + +
diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 7ccc946a5..134064853 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -1,155 +1,155 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Tayou - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "ThemeManager.h" - -#include -#include -#include -#include -#include "ui/themes/BrightTheme.h" -#include "ui/themes/CustomTheme.h" -#include "ui/themes/DarkTheme.h" -#include "ui/themes/SystemTheme.h" - -#include "Application.h" - -ThemeManager::ThemeManager(MainWindow* mainWindow) -{ - m_mainWindow = mainWindow; - initializeThemes(); -} - -/// @brief Adds the Theme to the list of themes -/// @param theme The Theme to add -/// @return Theme ID -QString ThemeManager::addTheme(std::unique_ptr theme) -{ - QString id = theme->id(); - m_themes.emplace(id, std::move(theme)); - return id; -} - -/// @brief Gets the Theme from the List via ID -/// @param themeId Theme ID of theme to fetch -/// @return Theme at themeId -ITheme* ThemeManager::getTheme(QString themeId) -{ - return m_themes[themeId].get(); -} - -void ThemeManager::initializeThemes() -{ - // Icon themes - { - // TODO: icon themes and instance icons do not mesh well together. Rearrange and fix discrepancies! - // set icon theme search path! - auto searchPaths = QIcon::themeSearchPaths(); - searchPaths.append("iconthemes"); - QIcon::setThemeSearchPaths(searchPaths); - themeDebugLog() << "<> Icon themes initialized."; - } - - // Initialize widget themes - { - themeDebugLog() << "<> Initializing Widget Themes"; - themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); - auto darkThemeId = addTheme(std::make_unique()); - themeDebugLog() << "Loading Built-in Theme:" << darkThemeId; - themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); - - // TODO: need some way to differentiate same name themes in different subdirectories (maybe smaller grey text next to theme name in - // dropdown?) - QString themeFolder = QDir("./themes/").absoluteFilePath(""); - themeDebugLog() << "Theme Folder Path: " << themeFolder; - - QDirIterator directoryIterator(themeFolder, QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); - while (directoryIterator.hasNext()) { - QDir dir(directoryIterator.next()); - QFileInfo themeJson(dir.absoluteFilePath("theme.json")); - if (themeJson.exists()) { - // Load "theme.json" based themes - themeDebugLog() << "Loading JSON Theme from:" << themeJson.absoluteFilePath(); - addTheme(std::make_unique(getTheme(darkThemeId), themeJson, true)); - } else { - // Load pure QSS Themes - QDirIterator stylesheetFileIterator(dir.absoluteFilePath(""), { "*.qss", "*.css" }, QDir::Files); - while (stylesheetFileIterator.hasNext()) { - QFile customThemeFile(stylesheetFileIterator.next()); - QFileInfo customThemeFileInfo(customThemeFile); - themeDebugLog() << "Loading QSS Theme from:" << customThemeFileInfo.absoluteFilePath(); - addTheme(std::make_unique(getTheme(darkThemeId), customThemeFileInfo, false)); - } - } - } - - themeDebugLog() << "<> Widget themes initialized."; - } -} - -QList ThemeManager::getValidApplicationThemes() -{ - QList ret; - ret.reserve(m_themes.size()); - for (auto&& [id, theme] : m_themes) { - ret.append(theme.get()); - } - return ret; -} - -void ThemeManager::setIconTheme(const QString& name) -{ - QIcon::setThemeName(name); -} - -void ThemeManager::applyCurrentlySelectedTheme() -{ - setIconTheme(APPLICATION->settings()->get("IconTheme").toString()); - themeDebugLog() << "<> Icon theme set."; - setApplicationTheme(APPLICATION->settings()->get("ApplicationTheme").toString()); - themeDebugLog() << "<> Application theme set."; -} - -void ThemeManager::setApplicationTheme(const QString& name) -{ - auto systemPalette = qApp->palette(); - auto themeIter = m_themes.find(name); - if (themeIter != m_themes.end()) { - auto& theme = themeIter->second; - themeDebugLog() << "applying theme" << theme->name(); - theme->apply(); - } else { - themeWarningLog() << "Tried to set invalid theme:" << name; - } -} - -QString ThemeManager::getCatImage(QString catName) -{ - QDateTime now = QDateTime::currentDateTime(); - QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0)); - QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); - QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); - QString cat = !catName.isEmpty() ? catName : APPLICATION->settings()->get("BackgroundCat").toString(); - if (std::abs(now.daysTo(xmas)) <= 4) { - cat += "-xmas"; - } else if (std::abs(now.daysTo(halloween)) <= 4) { - cat += "-spooky"; - } else if (std::abs(now.daysTo(birthday)) <= 12) { - cat += "-bday"; - } - return cat; -} +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ThemeManager.h" + +#include +#include +#include +#include +#include "ui/themes/BrightTheme.h" +#include "ui/themes/CustomTheme.h" +#include "ui/themes/DarkTheme.h" +#include "ui/themes/SystemTheme.h" + +#include "Application.h" + +ThemeManager::ThemeManager(MainWindow* mainWindow) +{ + m_mainWindow = mainWindow; + initializeThemes(); +} + +/// @brief Adds the Theme to the list of themes +/// @param theme The Theme to add +/// @return Theme ID +QString ThemeManager::addTheme(std::unique_ptr theme) +{ + QString id = theme->id(); + m_themes.emplace(id, std::move(theme)); + return id; +} + +/// @brief Gets the Theme from the List via ID +/// @param themeId Theme ID of theme to fetch +/// @return Theme at themeId +ITheme* ThemeManager::getTheme(QString themeId) +{ + return m_themes[themeId].get(); +} + +void ThemeManager::initializeThemes() +{ + // Icon themes + { + // TODO: icon themes and instance icons do not mesh well together. Rearrange and fix discrepancies! + // set icon theme search path! + auto searchPaths = QIcon::themeSearchPaths(); + searchPaths.append("iconthemes"); + QIcon::setThemeSearchPaths(searchPaths); + themeDebugLog() << "<> Icon themes initialized."; + } + + // Initialize widget themes + { + themeDebugLog() << "<> Initializing Widget Themes"; + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); + auto darkThemeId = addTheme(std::make_unique()); + themeDebugLog() << "Loading Built-in Theme:" << darkThemeId; + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); + + // TODO: need some way to differentiate same name themes in different subdirectories (maybe smaller grey text next to theme name in + // dropdown?) + QString themeFolder = QDir("./themes/").absoluteFilePath(""); + themeDebugLog() << "Theme Folder Path: " << themeFolder; + + QDirIterator directoryIterator(themeFolder, QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); + while (directoryIterator.hasNext()) { + QDir dir(directoryIterator.next()); + QFileInfo themeJson(dir.absoluteFilePath("theme.json")); + if (themeJson.exists()) { + // Load "theme.json" based themes + themeDebugLog() << "Loading JSON Theme from:" << themeJson.absoluteFilePath(); + addTheme(std::make_unique(getTheme(darkThemeId), themeJson, true)); + } else { + // Load pure QSS Themes + QDirIterator stylesheetFileIterator(dir.absoluteFilePath(""), { "*.qss", "*.css" }, QDir::Files); + while (stylesheetFileIterator.hasNext()) { + QFile customThemeFile(stylesheetFileIterator.next()); + QFileInfo customThemeFileInfo(customThemeFile); + themeDebugLog() << "Loading QSS Theme from:" << customThemeFileInfo.absoluteFilePath(); + addTheme(std::make_unique(getTheme(darkThemeId), customThemeFileInfo, false)); + } + } + } + + themeDebugLog() << "<> Widget themes initialized."; + } +} + +QList ThemeManager::getValidApplicationThemes() +{ + QList ret; + ret.reserve(m_themes.size()); + for (auto&& [id, theme] : m_themes) { + ret.append(theme.get()); + } + return ret; +} + +void ThemeManager::setIconTheme(const QString& name) +{ + QIcon::setThemeName(name); +} + +void ThemeManager::applyCurrentlySelectedTheme() +{ + setIconTheme(APPLICATION->settings()->get("IconTheme").toString()); + themeDebugLog() << "<> Icon theme set."; + setApplicationTheme(APPLICATION->settings()->get("ApplicationTheme").toString()); + themeDebugLog() << "<> Application theme set."; +} + +void ThemeManager::setApplicationTheme(const QString& name) +{ + auto systemPalette = qApp->palette(); + auto themeIter = m_themes.find(name); + if (themeIter != m_themes.end()) { + auto& theme = themeIter->second; + themeDebugLog() << "applying theme" << theme->name(); + theme->apply(); + } else { + themeWarningLog() << "Tried to set invalid theme:" << name; + } +} + +QString ThemeManager::getCatImage(QString catName) +{ + QDateTime now = QDateTime::currentDateTime(); + QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0)); + QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0)); + QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0)); + QString cat = !catName.isEmpty() ? catName : APPLICATION->settings()->get("BackgroundCat").toString(); + if (std::abs(now.daysTo(xmas)) <= 4) { + cat += "-xmas"; + } else if (std::abs(now.daysTo(halloween)) <= 4) { + cat += "-spooky"; + } else if (std::abs(now.daysTo(birthday)) <= 12) { + cat += "-bday"; + } + return cat; +} diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index d5e73bb80..9af44b5a0 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -1,57 +1,57 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Tayou - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include - -#include "ui/MainWindow.h" -#include "ui/themes/ITheme.h" - -inline auto themeDebugLog() -{ - return qDebug() << "[Theme]"; -} -inline auto themeWarningLog() -{ - return qWarning() << "[Theme]"; -} - -class ThemeManager { - public: - ThemeManager(MainWindow* mainWindow); - - QList getValidApplicationThemes(); - void setIconTheme(const QString& name); - void applyCurrentlySelectedTheme(); - void setApplicationTheme(const QString& name); - - /// - /// Returns the cat based on selected cat and with events (Birthday, XMas, etc.) - /// - /// Optional, if you need a specific cat. - /// - static QString getCatImage(QString catName = ""); - - private: - std::map> m_themes; - MainWindow* m_mainWindow; - - void initializeThemes(); - QString addTheme(std::unique_ptr theme); - ITheme* getTheme(QString themeId); -}; +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include + +#include "ui/MainWindow.h" +#include "ui/themes/ITheme.h" + +inline auto themeDebugLog() +{ + return qDebug() << "[Theme]"; +} +inline auto themeWarningLog() +{ + return qWarning() << "[Theme]"; +} + +class ThemeManager { + public: + ThemeManager(MainWindow* mainWindow); + + QList getValidApplicationThemes(); + void setIconTheme(const QString& name); + void applyCurrentlySelectedTheme(); + void setApplicationTheme(const QString& name); + + /// + /// Returns the cat based on selected cat and with events (Birthday, XMas, etc.) + /// + /// Optional, if you need a specific cat. + /// + static QString getCatImage(QString catName = ""); + + private: + std::map> m_themes; + MainWindow* m_mainWindow; + + void initializeThemes(); + QString addTheme(std::unique_ptr theme); + ITheme* getTheme(QString themeId); +}; diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.cpp b/launcher/ui/widgets/ThemeCustomizationWidget.cpp index 5fb5bd4e3..d0b5be217 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.cpp +++ b/launcher/ui/widgets/ThemeCustomizationWidget.cpp @@ -1,148 +1,148 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Tayou - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "ThemeCustomizationWidget.h" -#include "ui_ThemeCustomizationWidget.h" - -#include "Application.h" -#include "ui/themes/ITheme.h" -#include "ui/themes/ThemeManager.h" - -ThemeCustomizationWidget::ThemeCustomizationWidget(QWidget *parent) : QWidget(parent), ui(new Ui::ThemeCustomizationWidget) -{ - ui->setupUi(this); - loadSettings(); - - connect(ui->iconsComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyIconTheme); - connect(ui->widgetStyleComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyWidgetTheme); - connect(ui->backgroundCatComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyCatTheme); -} - -ThemeCustomizationWidget::~ThemeCustomizationWidget() -{ - delete ui; -} - -/// -/// The layout was not quite right, so currently this just disables the UI elements, which should be hidden instead -/// TODO FIXME -/// -/// Original Method One: -/// ui->iconsComboBox->setVisible(features& ThemeFields::ICONS); -/// ui->iconsLabel->setVisible(features& ThemeFields::ICONS); -/// ui->widgetStyleComboBox->setVisible(features& ThemeFields::WIDGETS); -/// ui->widgetThemeLabel->setVisible(features& ThemeFields::WIDGETS); -/// ui->backgroundCatComboBox->setVisible(features& ThemeFields::CAT); -/// ui->backgroundCatLabel->setVisible(features& ThemeFields::CAT); -/// -/// original Method Two: -/// if (!(features & ThemeFields::ICONS)) { -/// ui->formLayout->setRowVisible(0, false); -/// } -/// if (!(features & ThemeFields::WIDGETS)) { -/// ui->formLayout->setRowVisible(1, false); -/// } -/// if (!(features & ThemeFields::CAT)) { -/// ui->formLayout->setRowVisible(2, false); -/// } -/// -/// -void ThemeCustomizationWidget::showFeatures(ThemeFields features) { - ui->iconsComboBox->setEnabled(features & ThemeFields::ICONS); - ui->iconsLabel->setEnabled(features & ThemeFields::ICONS); - ui->widgetStyleComboBox->setEnabled(features & ThemeFields::WIDGETS); - ui->widgetThemeLabel->setEnabled(features & ThemeFields::WIDGETS); - ui->backgroundCatComboBox->setEnabled(features & ThemeFields::CAT); - ui->backgroundCatLabel->setEnabled(features & ThemeFields::CAT); -} - -void ThemeCustomizationWidget::applyIconTheme(int index) { - auto settings = APPLICATION->settings(); - auto original = settings->get("IconTheme").toString(); - settings->set("IconTheme", m_iconThemeOptions[index].first); - - if (original != settings->get("IconTheme")) { - APPLICATION->applyCurrentlySelectedTheme(); - } - - emit currentIconThemeChanged(index); -} - -void ThemeCustomizationWidget::applyWidgetTheme(int index) { - auto settings = APPLICATION->settings(); - auto originalAppTheme = settings->get("ApplicationTheme").toString(); - auto newAppTheme = ui->widgetStyleComboBox->currentData().toString(); - if (originalAppTheme != newAppTheme) { - settings->set("ApplicationTheme", newAppTheme); - APPLICATION->applyCurrentlySelectedTheme(); - } - - emit currentWidgetThemeChanged(index); -} - -void ThemeCustomizationWidget::applyCatTheme(int index) { - auto settings = APPLICATION->settings(); - settings->set("BackgroundCat", m_catOptions[index].first); - - emit currentCatChanged(index); -} - -void ThemeCustomizationWidget::applySettings() -{ - applyIconTheme(ui->iconsComboBox->currentIndex()); - applyWidgetTheme(ui->widgetStyleComboBox->currentIndex()); - applyCatTheme(ui->backgroundCatComboBox->currentIndex()); -} -void ThemeCustomizationWidget::loadSettings() -{ - auto settings = APPLICATION->settings(); - - auto iconTheme = settings->get("IconTheme").toString(); - for (auto& iconThemeFromList : m_iconThemeOptions) { - ui->iconsComboBox->addItem(QIcon(QString(":/icons/%1/scalable/settings").arg(iconThemeFromList.first)), iconThemeFromList.second); - if (iconTheme == iconThemeFromList.first) { - ui->iconsComboBox->setCurrentIndex(ui->iconsComboBox->count() - 1); - } - } - - { - auto currentTheme = settings->get("ApplicationTheme").toString(); - auto themes = APPLICATION->getValidApplicationThemes(); - int idx = 0; - for (auto& theme : themes) { - ui->widgetStyleComboBox->addItem(theme->name(), theme->id()); - if (currentTheme == theme->id()) { - ui->widgetStyleComboBox->setCurrentIndex(idx); - } - idx++; - } - } - - auto cat = settings->get("BackgroundCat").toString(); - for (auto& catFromList : m_catOptions) { - ui->backgroundCatComboBox->addItem(QIcon(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage(catFromList.first))), - catFromList.second); - if (cat == catFromList.first) { - ui->backgroundCatComboBox->setCurrentIndex(ui->backgroundCatComboBox->count() - 1); - } - } -} - -void ThemeCustomizationWidget::retranslate() -{ - ui->retranslateUi(this); -} +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ThemeCustomizationWidget.h" +#include "ui_ThemeCustomizationWidget.h" + +#include "Application.h" +#include "ui/themes/ITheme.h" +#include "ui/themes/ThemeManager.h" + +ThemeCustomizationWidget::ThemeCustomizationWidget(QWidget *parent) : QWidget(parent), ui(new Ui::ThemeCustomizationWidget) +{ + ui->setupUi(this); + loadSettings(); + + connect(ui->iconsComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyIconTheme); + connect(ui->widgetStyleComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyWidgetTheme); + connect(ui->backgroundCatComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ThemeCustomizationWidget::applyCatTheme); +} + +ThemeCustomizationWidget::~ThemeCustomizationWidget() +{ + delete ui; +} + +/// +/// The layout was not quite right, so currently this just disables the UI elements, which should be hidden instead +/// TODO FIXME +/// +/// Original Method One: +/// ui->iconsComboBox->setVisible(features& ThemeFields::ICONS); +/// ui->iconsLabel->setVisible(features& ThemeFields::ICONS); +/// ui->widgetStyleComboBox->setVisible(features& ThemeFields::WIDGETS); +/// ui->widgetThemeLabel->setVisible(features& ThemeFields::WIDGETS); +/// ui->backgroundCatComboBox->setVisible(features& ThemeFields::CAT); +/// ui->backgroundCatLabel->setVisible(features& ThemeFields::CAT); +/// +/// original Method Two: +/// if (!(features & ThemeFields::ICONS)) { +/// ui->formLayout->setRowVisible(0, false); +/// } +/// if (!(features & ThemeFields::WIDGETS)) { +/// ui->formLayout->setRowVisible(1, false); +/// } +/// if (!(features & ThemeFields::CAT)) { +/// ui->formLayout->setRowVisible(2, false); +/// } +/// +/// +void ThemeCustomizationWidget::showFeatures(ThemeFields features) { + ui->iconsComboBox->setEnabled(features & ThemeFields::ICONS); + ui->iconsLabel->setEnabled(features & ThemeFields::ICONS); + ui->widgetStyleComboBox->setEnabled(features & ThemeFields::WIDGETS); + ui->widgetThemeLabel->setEnabled(features & ThemeFields::WIDGETS); + ui->backgroundCatComboBox->setEnabled(features & ThemeFields::CAT); + ui->backgroundCatLabel->setEnabled(features & ThemeFields::CAT); +} + +void ThemeCustomizationWidget::applyIconTheme(int index) { + auto settings = APPLICATION->settings(); + auto original = settings->get("IconTheme").toString(); + settings->set("IconTheme", m_iconThemeOptions[index].first); + + if (original != settings->get("IconTheme")) { + APPLICATION->applyCurrentlySelectedTheme(); + } + + emit currentIconThemeChanged(index); +} + +void ThemeCustomizationWidget::applyWidgetTheme(int index) { + auto settings = APPLICATION->settings(); + auto originalAppTheme = settings->get("ApplicationTheme").toString(); + auto newAppTheme = ui->widgetStyleComboBox->currentData().toString(); + if (originalAppTheme != newAppTheme) { + settings->set("ApplicationTheme", newAppTheme); + APPLICATION->applyCurrentlySelectedTheme(); + } + + emit currentWidgetThemeChanged(index); +} + +void ThemeCustomizationWidget::applyCatTheme(int index) { + auto settings = APPLICATION->settings(); + settings->set("BackgroundCat", m_catOptions[index].first); + + emit currentCatChanged(index); +} + +void ThemeCustomizationWidget::applySettings() +{ + applyIconTheme(ui->iconsComboBox->currentIndex()); + applyWidgetTheme(ui->widgetStyleComboBox->currentIndex()); + applyCatTheme(ui->backgroundCatComboBox->currentIndex()); +} +void ThemeCustomizationWidget::loadSettings() +{ + auto settings = APPLICATION->settings(); + + auto iconTheme = settings->get("IconTheme").toString(); + for (auto& iconThemeFromList : m_iconThemeOptions) { + ui->iconsComboBox->addItem(QIcon(QString(":/icons/%1/scalable/settings").arg(iconThemeFromList.first)), iconThemeFromList.second); + if (iconTheme == iconThemeFromList.first) { + ui->iconsComboBox->setCurrentIndex(ui->iconsComboBox->count() - 1); + } + } + + { + auto currentTheme = settings->get("ApplicationTheme").toString(); + auto themes = APPLICATION->getValidApplicationThemes(); + int idx = 0; + for (auto& theme : themes) { + ui->widgetStyleComboBox->addItem(theme->name(), theme->id()); + if (currentTheme == theme->id()) { + ui->widgetStyleComboBox->setCurrentIndex(idx); + } + idx++; + } + } + + auto cat = settings->get("BackgroundCat").toString(); + for (auto& catFromList : m_catOptions) { + ui->backgroundCatComboBox->addItem(QIcon(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage(catFromList.first))), + catFromList.second); + if (cat == catFromList.first) { + ui->backgroundCatComboBox->setCurrentIndex(ui->backgroundCatComboBox->count() - 1); + } + } +} + +void ThemeCustomizationWidget::retranslate() +{ + ui->retranslateUi(this); +} diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.h b/launcher/ui/widgets/ThemeCustomizationWidget.h index d450e8dff..be2c4492c 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.h +++ b/launcher/ui/widgets/ThemeCustomizationWidget.h @@ -1,77 +1,77 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Tayou - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include -#include "translations/TranslationsModel.h" - -enum ThemeFields { NONE = 0b0000, ICONS = 0b0001, WIDGETS = 0b0010, CAT = 0b0100 }; - -namespace Ui { -class ThemeCustomizationWidget; -} - -class ThemeCustomizationWidget : public QWidget { - Q_OBJECT - - public: - explicit ThemeCustomizationWidget(QWidget* parent = nullptr); - ~ThemeCustomizationWidget(); - - void showFeatures(ThemeFields features); - - void applySettings(); - - void loadSettings(); - void retranslate(); - - private slots: - void applyIconTheme(int index); - void applyWidgetTheme(int index); - void applyCatTheme(int index); - - signals: - int currentIconThemeChanged(int index); - int currentWidgetThemeChanged(int index); - int currentCatChanged(int index); - - private: - Ui::ThemeCustomizationWidget* ui; - - //TODO finish implementing - QList> m_iconThemeOptions{ - { "pe_colored", QObject::tr("Simple (Colored Icons)") }, - { "pe_light", QObject::tr("Simple (Light Icons)") }, - { "pe_dark", QObject::tr("Simple (Dark Icons)") }, - { "pe_blue", QObject::tr("Simple (Blue Icons)") }, - { "breeze_light", QObject::tr("Breeze Light") }, - { "breeze_dark", QObject::tr("Breeze Dark") }, - { "OSX", QObject::tr("OSX") }, - { "iOS", QObject::tr("iOS") }, - { "flat", QObject::tr("Flat") }, - { "flat_white", QObject::tr("Flat (White)") }, - { "multimc", QObject::tr("Legacy") }, - { "custom", QObject::tr("Custom") } - }; - QList> m_catOptions{ - { "kitteh", QObject::tr("Background Cat (from MultiMC)") }, - { "rory", QObject::tr("Rory ID 11 (drawn by Ashtaka)") }, - { "rory-flat", QObject::tr("Rory ID 11 (flat edition, drawn by Ashtaka)") }, - { "teawie", QObject::tr("Teawie (drawn by SympathyTea)") } - }; +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Tayou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include +#include "translations/TranslationsModel.h" + +enum ThemeFields { NONE = 0b0000, ICONS = 0b0001, WIDGETS = 0b0010, CAT = 0b0100 }; + +namespace Ui { +class ThemeCustomizationWidget; +} + +class ThemeCustomizationWidget : public QWidget { + Q_OBJECT + + public: + explicit ThemeCustomizationWidget(QWidget* parent = nullptr); + ~ThemeCustomizationWidget(); + + void showFeatures(ThemeFields features); + + void applySettings(); + + void loadSettings(); + void retranslate(); + + private slots: + void applyIconTheme(int index); + void applyWidgetTheme(int index); + void applyCatTheme(int index); + + signals: + int currentIconThemeChanged(int index); + int currentWidgetThemeChanged(int index); + int currentCatChanged(int index); + + private: + Ui::ThemeCustomizationWidget* ui; + + //TODO finish implementing + QList> m_iconThemeOptions{ + { "pe_colored", QObject::tr("Simple (Colored Icons)") }, + { "pe_light", QObject::tr("Simple (Light Icons)") }, + { "pe_dark", QObject::tr("Simple (Dark Icons)") }, + { "pe_blue", QObject::tr("Simple (Blue Icons)") }, + { "breeze_light", QObject::tr("Breeze Light") }, + { "breeze_dark", QObject::tr("Breeze Dark") }, + { "OSX", QObject::tr("OSX") }, + { "iOS", QObject::tr("iOS") }, + { "flat", QObject::tr("Flat") }, + { "flat_white", QObject::tr("Flat (White)") }, + { "multimc", QObject::tr("Legacy") }, + { "custom", QObject::tr("Custom") } + }; + QList> m_catOptions{ + { "kitteh", QObject::tr("Background Cat (from MultiMC)") }, + { "rory", QObject::tr("Rory ID 11 (drawn by Ashtaka)") }, + { "rory-flat", QObject::tr("Rory ID 11 (flat edition, drawn by Ashtaka)") }, + { "teawie", QObject::tr("Teawie (drawn by SympathyTea)") } + }; }; \ No newline at end of file diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.ui b/launcher/ui/widgets/ThemeCustomizationWidget.ui index 15ba831e4..b27729838 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.ui +++ b/launcher/ui/widgets/ThemeCustomizationWidget.ui @@ -1,105 +1,105 @@ - - - ThemeCustomizationWidget - - - - 0 - 0 - 400 - 311 - - - - Form - - - - QLayout::SetMinimumSize - - - 0 - - - 0 - - - 0 - - - 0 - - - - - &Icons - - - iconsComboBox - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - - - - - &Colors - - - widgetStyleComboBox - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - - - - - C&at - - - backgroundCatComboBox - - - - - - - - 0 - 0 - - - - Qt::StrongFocus - - - - - - - - + + + ThemeCustomizationWidget + + + + 0 + 0 + 400 + 311 + + + + Form + + + + QLayout::SetMinimumSize + + + 0 + + + 0 + + + 0 + + + 0 + + + + + &Icons + + + iconsComboBox + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + + + + + &Colors + + + widgetStyleComboBox + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + + + + + C&at + + + backgroundCatComboBox + + + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + + + + + + From 5c48f0b458c8b4e9306b6791b228285b6c7f4586 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Sat, 7 Jan 2023 17:40:29 +0100 Subject: [PATCH 33/37] fix: set minimum size for setup wizard Signed-off-by: Sefa Eyeoglu --- launcher/ui/setupwizard/SetupWizard.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/ui/setupwizard/SetupWizard.cpp b/launcher/ui/setupwizard/SetupWizard.cpp index 3c8b5d392..3fd9bb233 100644 --- a/launcher/ui/setupwizard/SetupWizard.cpp +++ b/launcher/ui/setupwizard/SetupWizard.cpp @@ -13,7 +13,8 @@ SetupWizard::SetupWizard(QWidget *parent) : QWizard(parent) { setObjectName(QStringLiteral("SetupWizard")); - resize(615, 659); + resize(620, 660); + setMinimumSize(300, 400); // make it ugly everywhere to avoid variability in theming setWizardStyle(QWizard::ClassicStyle); setOptions(QWizard::NoCancelButton | QWizard::IndependentPages | QWizard::HaveCustomButton1); From 668b19d11948bedeff6908d76d63f5a5fad4eb02 Mon Sep 17 00:00:00 2001 From: Tayou Date: Mon, 9 Jan 2023 18:40:58 +0100 Subject: [PATCH 34/37] Add hint about Cat Signed-off-by: Tayou --- launcher/ui/setupwizard/ThemeWizardPage.ui | 15 +++++- .../ui/widgets/ThemeCustomizationWidget.cpp | 14 ++--- .../ui/widgets/ThemeCustomizationWidget.h | 2 +- .../ui/widgets/ThemeCustomizationWidget.ui | 51 ++++++++++++++----- 4 files changed, 62 insertions(+), 20 deletions(-) diff --git a/launcher/ui/setupwizard/ThemeWizardPage.ui b/launcher/ui/setupwizard/ThemeWizardPage.ui index 1ab04fc8b..01394ea40 100644 --- a/launcher/ui/setupwizard/ThemeWizardPage.ui +++ b/launcher/ui/setupwizard/ThemeWizardPage.ui @@ -31,6 +31,16 @@
+ + + + Hint: The cat appears in the background and is not shown by default. It is only made visible when pressing the Cat button in the Toolbar. + + + true + + + @@ -41,7 +51,7 @@ - Icon Preview: + Preview: @@ -317,6 +327,9 @@ 256 + + The cat appears in the background and does not serve a purpose, it is purely visual. + diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.cpp b/launcher/ui/widgets/ThemeCustomizationWidget.cpp index d0b5be217..dcf13303c 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.cpp +++ b/launcher/ui/widgets/ThemeCustomizationWidget.cpp @@ -72,10 +72,11 @@ void ThemeCustomizationWidget::showFeatures(ThemeFields features) { void ThemeCustomizationWidget::applyIconTheme(int index) { auto settings = APPLICATION->settings(); - auto original = settings->get("IconTheme").toString(); - settings->set("IconTheme", m_iconThemeOptions[index].first); + auto originalIconTheme = settings->get("IconTheme").toString(); + auto& newIconTheme = m_iconThemeOptions[index].first; + settings->set("IconTheme", newIconTheme); - if (original != settings->get("IconTheme")) { + if (originalIconTheme != newIconTheme) { APPLICATION->applyCurrentlySelectedTheme(); } @@ -113,7 +114,8 @@ void ThemeCustomizationWidget::loadSettings() auto iconTheme = settings->get("IconTheme").toString(); for (auto& iconThemeFromList : m_iconThemeOptions) { - ui->iconsComboBox->addItem(QIcon(QString(":/icons/%1/scalable/settings").arg(iconThemeFromList.first)), iconThemeFromList.second); + QIcon iconForComboBox = QIcon(QString(":/icons/%1/scalable/settings").arg(iconThemeFromList.first)); + ui->iconsComboBox->addItem(iconForComboBox, iconThemeFromList.second); if (iconTheme == iconThemeFromList.first) { ui->iconsComboBox->setCurrentIndex(ui->iconsComboBox->count() - 1); } @@ -134,8 +136,8 @@ void ThemeCustomizationWidget::loadSettings() auto cat = settings->get("BackgroundCat").toString(); for (auto& catFromList : m_catOptions) { - ui->backgroundCatComboBox->addItem(QIcon(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage(catFromList.first))), - catFromList.second); + QIcon catIcon = QIcon(QString(":/backgrounds/%1").arg(ThemeManager::getCatImage(catFromList.first))); + ui->backgroundCatComboBox->addItem(catIcon, catFromList.second); if (cat == catFromList.first) { ui->backgroundCatComboBox->setCurrentIndex(ui->backgroundCatComboBox->count() - 1); } diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.h b/launcher/ui/widgets/ThemeCustomizationWidget.h index be2c4492c..d955a2665 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.h +++ b/launcher/ui/widgets/ThemeCustomizationWidget.h @@ -74,4 +74,4 @@ class ThemeCustomizationWidget : public QWidget { { "rory-flat", QObject::tr("Rory ID 11 (flat edition, drawn by Ashtaka)") }, { "teawie", QObject::tr("Teawie (drawn by SympathyTea)") } }; -}; \ No newline at end of file +}; diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.ui b/launcher/ui/widgets/ThemeCustomizationWidget.ui index b27729838..f216a610e 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.ui +++ b/launcher/ui/widgets/ThemeCustomizationWidget.ui @@ -7,7 +7,7 @@ 0 0 400 - 311 + 191 @@ -77,6 +77,9 @@ + + The cat appears in the background and is not shown by default. It is only made visible when pressing the Cat button in the Toolbar. + C&at @@ -86,17 +89,41 @@ - - - - 0 - 0 - - - - Qt::StrongFocus - - + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + The cat appears in the background and is not shown by default. It is only made visible when pressing the Cat button in the Toolbar. + + + + + + + The cat appears in the background and is not shown by default. It is only made visible when pressing the Cat button in the Toolbar. + + + + + + + .. + + + true + + + + From d45a62b3a61e3da8b113251f7dff55c4f7634197 Mon Sep 17 00:00:00 2001 From: DioEgizio <83089242+DioEgizio@users.noreply.github.com> Date: Tue, 10 Jan 2023 16:47:00 +0100 Subject: [PATCH 35/37] Revert "Merge pull request #729 from DioEgizio/fix-mac-openssl3-failing" it was necessary :/ This reverts commit 976e550aa7291f22f5011178ab824a937f89d11a, reversing changes made to 61144f7a219995fa29531683ed36e8e4002848b5. Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com> --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e0a80f20e..9d75a4574 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -342,8 +342,9 @@ jobs: if: matrix.name == 'macOS' run: | if [ '${{ secrets.SPARKLE_ED25519_KEY }}' != '' ]; then + brew install openssl@3 echo '${{ secrets.SPARKLE_ED25519_KEY }}' > ed25519-priv.pem - signature=$(openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.tar.gz -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) + signature=$(/usr/local/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.tar.gz -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) rm ed25519-priv.pem cat >> $GITHUB_STEP_SUMMARY << EOF ### Artifact Information :information_source: From 391ef64c22f1e106983abe51027096f3bf772c15 Mon Sep 17 00:00:00 2001 From: flow Date: Tue, 10 Jan 2023 12:50:56 -0300 Subject: [PATCH 36/37] fix(FileSystem): don't attempt to trash items on Windows Server For some reason this makes some of our CI test runs super slow, and sometimes fail miserably. Signed-off-by: flow --- launcher/FileSystem.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index 7a1358114..aee5245df 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -57,6 +57,7 @@ #include #include #include +#include #include #include #include @@ -251,6 +252,10 @@ bool trash(QString path, QString *pathInTrash) // FIXME: Figure out trash in Flatpak. Qt seemingly doesn't use the Trash portal if (DesktopServices::isFlatpak()) return false; +#if defined Q_OS_WIN32 + if (IsWindowsServer()) + return false; +#endif return QFile::moveToTrash(path, pathInTrash); #endif } From 14278a9e354bd2aef3f9690c8fac32e2ae1ae0ad Mon Sep 17 00:00:00 2001 From: DioEgizio <83089242+DioEgizio@users.noreply.github.com> Date: Tue, 10 Jan 2023 19:56:59 +0100 Subject: [PATCH 37/37] fix: set HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK to 1 should fix some random failures Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com> --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9d75a4574..d074863d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -105,6 +105,7 @@ jobs: INSTALL_APPIMAGE_DIR: "install-appdir" BUILD_DIR: "build" CCACHE_VAR: "" + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 steps: ##