From fef60a9da0216bdcb266d935bbfea03aba8905b4 Mon Sep 17 00:00:00 2001
From: Tayou <tayou@gmx.net>
Date: Sat, 29 Oct 2022 19:27:20 +0200
Subject: add support for multiple custom themes

also moved theme related code from Application.cpp to new ui/themes/ThemeManager.cpp, this class should cleanly isolate theme related functions and help avoid code duplication in future theme related additions.
Themes can now be just qss or css files, they won't have color pallette information with them in that case

Signed-off-by: Tayou <tayou@gmx.net>
---
 launcher/Application.h | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

(limited to 'launcher/Application.h')

diff --git a/launcher/Application.h b/launcher/Application.h
index 8fa0ab10..33d8db29 100644
--- a/launcher/Application.h
+++ b/launcher/Application.h
@@ -1,7 +1,8 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  PolyMC - Minecraft Launcher
+ *  Prism Launcher
  *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
+ *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  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
@@ -44,6 +45,8 @@
 #include <QUrl>
 #include <updater/GoUpdate.h>
 
+#include "ui/themes/ThemeManager.h"
+
 #include <BaseInstance.h>
 
 #include "minecraft/launch/MinecraftServerTarget.h"
@@ -198,6 +201,8 @@ public:
 
     void ShowGlobalSettings(class QWidget * parent, QString open_page = QString());
 
+    ThemeManager* getThemeManager();
+
 signals:
     void updateAllowedChanged(bool status);
     void globalSettingsAboutToOpen();
@@ -255,9 +260,9 @@ private:
     std::shared_ptr<JavaInstallList> m_javalist;
     std::shared_ptr<TranslationsModel> m_translations;
     std::shared_ptr<GenericPageProvider> m_globalSettingsProvider;
-    std::map<QString, std::unique_ptr<ITheme>> m_themes;
     std::unique_ptr<MCEditTool> m_mcedit;
     QSet<QString> m_features;
+    ThemeManager* m_themeManager;
 
     QMap<QString, std::shared_ptr<BaseProfilerFactory>> m_profilers;
 
-- 
cgit 


From a3f5ea359827abb7949070cdcd8d56be50ab3360 Mon Sep 17 00:00:00 2001
From: Tayou <tayou@gmx.net>
Date: Tue, 1 Nov 2022 15:41:08 +0100
Subject: added suggested changes

Signed-off-by: Tayou <tayou@gmx.net>
---
 launcher/Application.cpp            | 18 ++++-------
 launcher/Application.h              |  9 ++----
 launcher/ui/themes/CustomTheme.cpp  | 24 +++++++--------
 launcher/ui/themes/CustomTheme.h    |  3 +-
 launcher/ui/themes/SystemTheme.cpp  | 10 +++----
 launcher/ui/themes/ThemeManager.cpp | 60 +++++++++++++++++++------------------
 launcher/ui/themes/ThemeManager.h   | 15 +++++++---
 7 files changed, 68 insertions(+), 71 deletions(-)

(limited to 'launcher/Application.h')

diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index 7b33361c..fa202312 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -2,10 +2,8 @@
 /*
  *  Prism Launcher
  *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
- *  Copyright (C) 2022 Tayou <tayou@gmx.net>
- *
- *  PolyMC - Minecraft Launcher
  *  Copyright (C) 2022 Lenny McLennington <lenny@sneed.church>
+ *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  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
@@ -71,6 +69,8 @@
 
 #include "ui/pagedialog/PageDialog.h"
 
+#include "ui/themes/ThemeManager.h"
+
 #include "ApplicationMessage.h"
 
 #include <iostream>
@@ -747,11 +747,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
     }
 
     // Themes
-    {
-        m_themeManager = new ThemeManager(m_mainWindow);
-
-        m_themeManager->InitializeThemes();
-    }
+    m_themeManager = std::make_unique<ThemeManager>(m_mainWindow);
 
     // initialize and load all instances
     {
@@ -860,10 +856,6 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
     performMainStartupAction();
 }
 
-ThemeManager* Application::getThemeManager() {
-    return Application::m_themeManager;
-}
-
 bool Application::createSetupWizard()
 {
     bool javaRequired = [&]()
@@ -1109,7 +1101,7 @@ std::shared_ptr<JavaInstallList> Application::javalist()
     return m_javalist;
 }
 
-std::vector<ITheme *> Application::getValidApplicationThemes()
+QList<ITheme*> Application::getValidApplicationThemes()
 {
     return m_themeManager->getValidApplicationThemes();
 }
diff --git a/launcher/Application.h b/launcher/Application.h
index 33d8db29..ec434c6c 100644
--- a/launcher/Application.h
+++ b/launcher/Application.h
@@ -45,8 +45,6 @@
 #include <QUrl>
 #include <updater/GoUpdate.h>
 
-#include "ui/themes/ThemeManager.h"
-
 #include <BaseInstance.h>
 
 #include "minecraft/launch/MinecraftServerTarget.h"
@@ -71,6 +69,7 @@ class BaseDetachedToolFactory;
 class TranslationsModel;
 class ITheme;
 class MCEditTool;
+class ThemeManager;
 
 namespace Meta {
     class Index;
@@ -121,7 +120,7 @@ public:
 
     void setIconTheme(const QString& name);
 
-    std::vector<ITheme *> getValidApplicationThemes();
+    QList<ITheme*> getValidApplicationThemes();
 
     void setApplicationTheme(const QString& name, bool initial);
 
@@ -201,8 +200,6 @@ public:
 
     void ShowGlobalSettings(class QWidget * parent, QString open_page = QString());
 
-    ThemeManager* getThemeManager();
-
 signals:
     void updateAllowedChanged(bool status);
     void globalSettingsAboutToOpen();
@@ -262,7 +259,7 @@ private:
     std::shared_ptr<GenericPageProvider> m_globalSettingsProvider;
     std::unique_ptr<MCEditTool> m_mcedit;
     QSet<QString> m_features;
-    ThemeManager* m_themeManager;
+    std::unique_ptr<ThemeManager> m_themeManager;
 
     QMap<QString, std::shared_ptr<BaseProfilerFactory>> m_profilers;
 
diff --git a/launcher/ui/themes/CustomTheme.cpp b/launcher/ui/themes/CustomTheme.cpp
index 3c35bf37..c346d42f 100644
--- a/launcher/ui/themes/CustomTheme.cpp
+++ b/launcher/ui/themes/CustomTheme.cpp
@@ -66,7 +66,7 @@ static bool readThemeJson(const QString &path, QPalette &palette, double &fadeAm
                     QColor color(colorValue);
                     if(!color.isValid())
                     {
-                        themeWarningLog << "Color value" << colorValue << "for" << colorName << "was not recognized.";
+                        themeWarningLog() << "Color value" << colorValue << "for" << colorName << "was not recognized.";
                         return QColor();
                     }
                     return color;
@@ -82,7 +82,7 @@ static bool readThemeJson(const QString &path, QPalette &palette, double &fadeAm
                 }
                 else
                 {
-                    themeDebugLog << "Color value for" << colorName << "was not present.";
+                    themeDebugLog() << "Color value for" << colorName << "was not present.";
                 }
             };
 
@@ -108,13 +108,13 @@ static bool readThemeJson(const QString &path, QPalette &palette, double &fadeAm
         }
         catch (const Exception &e)
         {
-            themeWarningLog << "Couldn't load theme json: " << e.cause();
+            themeWarningLog() << "Couldn't load theme json: " << e.cause();
             return false;
         }
     }
     else
     {
-        themeDebugLog << "No theme json present.";
+        themeDebugLog() << "No theme json present.";
         return false;
     }
     return true;
@@ -160,7 +160,7 @@ static bool writeThemeJson(const QString &path, const QPalette &palette, double
     }
     catch (const Exception &e)
     {
-        themeWarningLog << "Failed to write theme json to" << path;
+        themeWarningLog() << "Failed to write theme json to" << path;
         return false;
     }
 }
@@ -179,7 +179,7 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
 
         if(!FS::ensureFolderPathExists(path) || !FS::ensureFolderPathExists(pathResources))
         {
-            themeWarningLog << "X couldn't create folder for theme!";
+            themeWarningLog() << "couldn't create folder for theme!";
             m_palette = baseTheme->colorScheme();
             m_styleSheet = baseTheme->appStyleSheet();
             return;
@@ -192,7 +192,7 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
         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;
+            themeDebugLog() << "Did not read theme json file correctly, writing new one to: " << themeFilePath;
             m_name = "Custom";
             m_palette = baseTheme->colorScheme();
             m_fadeColor = baseTheme->fadeColor();
@@ -223,13 +223,13 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
             }
             catch (const Exception &e)
             {
-                themeWarningLog << "X Couldn't load css:" << e.cause() << "from" << cssFilePath;
+                themeWarningLog() << "Couldn't load css:" << e.cause() << "from" << cssFilePath;
                 m_styleSheet = baseTheme->appStyleSheet();
             }
         }
         else
         {
-            themeDebugLog << "X No theme css present.";
+            themeDebugLog() << "No theme css present.";
             m_styleSheet = baseTheme->appStyleSheet();
             try
             {
@@ -237,7 +237,7 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
             }
             catch (const Exception &e)
             {
-                themeWarningLog << "X Couldn't write css:" << e.cause() << "to" << cssFilePath;
+                themeWarningLog() << "Couldn't write css:" << e.cause() << "to" << cssFilePath;
             }
         }
     } else {
@@ -250,7 +250,7 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
 
         if(!FS::ensureFilePathExists(path))
         {
-            themeWarningLog << m_name << " Theme file path doesn't exist!";
+            themeWarningLog() << m_name << " Theme file path doesn't exist!";
             m_palette = baseTheme->colorScheme();
             m_styleSheet = baseTheme->appStyleSheet();
             return;
@@ -264,7 +264,7 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
         }
         catch (const Exception &e)
         {
-            themeWarningLog << "Couldn't load qss:" << e.cause() << "from" << path;
+            themeWarningLog() << "Couldn't load qss:" << e.cause() << "from" << path;
             m_styleSheet = baseTheme->appStyleSheet();
         }
     }
diff --git a/launcher/ui/themes/CustomTheme.h b/launcher/ui/themes/CustomTheme.h
index f4a7b737..6d1f46b4 100644
--- a/launcher/ui/themes/CustomTheme.h
+++ b/launcher/ui/themes/CustomTheme.h
@@ -39,8 +39,7 @@
 #pragma once
 
 #include "ITheme.h"
-#include <QFile>
-#include <QDir>
+#include <QFileInfo>
 
 class CustomTheme: public ITheme
 {
diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp
index b8eb2a3c..ec24c6d7 100644
--- a/launcher/ui/themes/SystemTheme.cpp
+++ b/launcher/ui/themes/SystemTheme.cpp
@@ -45,25 +45,25 @@
 
 SystemTheme::SystemTheme()
 {
-    themeDebugLog << "Determining System Theme...";
+    themeDebugLog() << "Determining System Theme...";
     const auto & style = QApplication::style();
     systemPalette = style->standardPalette();
     QString lowerThemeName = style->objectName();
-    themeDebugLog << "System theme seems to be:" << lowerThemeName;
+    themeDebugLog() << "System theme seems to be:" << lowerThemeName;
     QStringList styles = QStyleFactory::keys();
     for(auto &st: styles)
     {
-        themeDebugLog << "Considering theme from theme factory:" << st.toLower();
+        themeDebugLog() << "Considering theme from theme factory:" << st.toLower();
         if(st.toLower() == lowerThemeName)
         {
             systemTheme = st;
-            themeDebugLog << "System theme has been determined to be:" << systemTheme;
+            themeDebugLog() << "System theme has been determined to be:" << systemTheme;
             return;
         }
     }
     // fall back to fusion if we can't find the current theme.
     systemTheme = "Fusion";
-    themeDebugLog << "System theme not found, defaulted to Fusion";
+    themeDebugLog() << "System theme not found, defaulted to Fusion";
 }
 
 void SystemTheme::apply(bool initial)
diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp
index 6e1566d2..3c338fd6 100644
--- a/launcher/ui/themes/ThemeManager.cpp
+++ b/launcher/ui/themes/ThemeManager.cpp
@@ -29,20 +29,25 @@
 #include "Application.h"
 
 #ifdef Q_OS_WIN
-#include <versionhelpers.h>
+#include <windows.h> 
+// 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 <versionhelpers.h>
 #endif
 
 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(ITheme * theme) {
-    m_themes.insert(std::make_pair(theme->id(), std::unique_ptr<ITheme>(theme)));
-    return theme->id();
+QString ThemeManager::AddTheme(std::unique_ptr<ITheme> theme) {
+    QString id = theme->id();
+    m_themes.emplace(id, std::move(theme));
+    return id;
 }
 
 /// @brief Gets the Theme from the List via ID
@@ -62,20 +67,20 @@ void ThemeManager::InitializeThemes() {
         auto searchPaths = QIcon::themeSearchPaths();
         searchPaths.append("iconthemes");
         QIcon::setThemeSearchPaths(searchPaths);
-        themeDebugLog << "<> Icon themes initialized.";
+        themeDebugLog() << "<> Icon themes initialized.";
     }
 
     // Initialize widget themes
     {
-        themeDebugLog << "<> Initializing Widget Themes";
-        themeDebugLog "✓ Loading Built-in Theme:" << AddTheme(new SystemTheme());
-        auto darkThemeId = AddTheme(new DarkTheme());
-        themeDebugLog "✓ Loading Built-in Theme:" << darkThemeId;
-        themeDebugLog "✓ Loading Built-in Theme:" << AddTheme(new BrightTheme());
+        themeDebugLog() << "<> Initializing Widget Themes";
+        themeDebugLog() << "Loading Built-in Theme:" << AddTheme(std::make_unique<SystemTheme>());
+        auto darkThemeId = AddTheme(std::make_unique<DarkTheme>());
+        themeDebugLog() << "Loading Built-in Theme:" << darkThemeId;
+        themeDebugLog() << "Loading Built-in Theme:" << AddTheme(std::make_unique<BrightTheme>());
 
-        // TODO: need some way to differentiate same name themes in different subdirectories (maybe smaller grey text next to theme name in dropdown? Dunno how to do that though)
-        QString themeFolder = (new QDir("./themes/"))->absoluteFilePath("");
-        themeDebugLog << "Theme Folder Path: " << themeFolder;
+        // 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()) {
@@ -83,34 +88,30 @@ void ThemeManager::InitializeThemes() {
             QFileInfo themeJson(dir.absoluteFilePath("theme.json"));
             if (themeJson.exists()) {
                 // Load "theme.json" based themes
-                themeDebugLog "✓ Loading JSON Theme from:" << themeJson.absoluteFilePath();
-                CustomTheme* theme = new CustomTheme(GetTheme(darkThemeId), themeJson, true);
-                AddTheme(theme);
+                themeDebugLog() << "Loading JSON Theme from:" << themeJson.absoluteFilePath();
+                AddTheme(std::make_unique<CustomTheme>(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();
-                    CustomTheme* theme = new CustomTheme(GetTheme(darkThemeId), customThemeFileInfo, false);
-                    AddTheme(theme);
+                    themeDebugLog() << "Loading QSS Theme from:" << customThemeFileInfo.absoluteFilePath();
+                    AddTheme(std::make_unique<CustomTheme>(GetTheme(darkThemeId), customThemeFileInfo, false));
                 }
             }
         }
 
-        themeDebugLog << "<> Widget themes initialized.";
+        themeDebugLog() << "<> Widget themes initialized.";
     }
 }
 
-std::vector<ITheme *> ThemeManager::getValidApplicationThemes()
+QList<ITheme*> ThemeManager::getValidApplicationThemes()
 {
-    std::vector<ITheme *> ret;
-    auto iter = m_themes.cbegin();
-    while (iter != m_themes.cend())
-    {
-        ret.push_back((*iter).second.get());
-        iter++;
+    QList<ITheme*> ret;
+    ret.reserve(m_themes.size());
+    for (auto&& [id, theme] : m_themes) {
+        ret.append(theme.get());
     }
     return ret;
 }
@@ -133,7 +134,8 @@ void ThemeManager::setApplicationTheme(const QString& name, bool initial)
     auto themeIter = m_themes.find(name);
     if(themeIter != m_themes.end())
     {
-        auto & theme = (*themeIter).second;
+        auto & theme = themeIter->second;
+        themeDebugLog() << "applying theme" << theme->name();
         theme->apply(initial);
 #ifdef Q_OS_WIN
         if (m_mainWindow && IsWindows10OrGreater()) {
@@ -147,6 +149,6 @@ void ThemeManager::setApplicationTheme(const QString& name, bool initial)
     }
     else
     {
-        qWarning() << "Tried to set invalid theme:" << name;
+        themeWarningLog() << "Tried to set invalid theme:" << name;
     }
 }
diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h
index fa6ea236..871e6fe2 100644
--- a/launcher/ui/themes/ThemeManager.h
+++ b/launcher/ui/themes/ThemeManager.h
@@ -15,21 +15,28 @@
  *  You should have received a copy of the GNU General Public License
  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
+#pragma once
 
 #include <QString>
 
 #include "ui/themes/ITheme.h"
 #include "ui/MainWindow.h"
 
-#define themeDebugLog qDebug() << "[Themes]"
-#define themeWarningLog qWarning() << "[Themes]"
+inline auto themeDebugLog() {
+  return qDebug() << "[Theme]";
+}
+inline auto themeWarningLog() {
+  return qWarning() << "[Theme]";
+}
 
 class ThemeManager {
 public:
     ThemeManager(MainWindow* mainWindow);
+
+    // maybe make private? Or put in ctor?
     void InitializeThemes();
 
-    std::vector<ITheme *> getValidApplicationThemes();
+    QList<ITheme*> getValidApplicationThemes();
     void setIconTheme(const QString& name);
     void applyCurrentlySelectedTheme();
     void setApplicationTheme(const QString& name, bool initial);
@@ -38,7 +45,7 @@ private:
     std::map<QString, std::unique_ptr<ITheme>> m_themes;
     MainWindow* m_mainWindow;
 
-    QString AddTheme(ITheme * theme);
+    QString AddTheme(std::unique_ptr<ITheme> theme);
     ITheme* GetTheme(QString themeId);
 };
 
-- 
cgit 


From e9bfd43ff73a482433e725aec715012c3c6c2a2c Mon Sep 17 00:00:00 2001
From: Tayou <tayou@gmx.net>
Date: Thu, 3 Nov 2022 04:54:57 +0100
Subject: added requested changes

Signed-off-by: Tayou <tayou@gmx.net>
---
 launcher/Application.cpp                  |  2 +-
 launcher/Application.h                    |  2 +-
 launcher/ui/pages/global/LauncherPage.cpp |  3 ++-
 launcher/ui/themes/CustomTheme.cpp        | 22 +++++++---------------
 launcher/ui/themes/CustomTheme.h          |  6 +-----
 launcher/ui/themes/SystemTheme.cpp        |  6 +-----
 launcher/ui/themes/ThemeManager.cpp       |  2 +-
 launcher/ui/themes/ThemeManager.h         |  2 +-
 8 files changed, 15 insertions(+), 30 deletions(-)

(limited to 'launcher/Application.h')

diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index fa202312..d27176c5 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  Prism Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
  *  Copyright (C) 2022 Lenny McLennington <lenny@sneed.church>
  *  Copyright (C) 2022 Tayou <tayou@gmx.net>
diff --git a/launcher/Application.h b/launcher/Application.h
index ec434c6c..78ab8fbd 100644
--- a/launcher/Application.h
+++ b/launcher/Application.h
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  Prism Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
  *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp
index a1cbbc33..7c7aaf4e 100644
--- a/launcher/ui/pages/global/LauncherPage.cpp
+++ b/launcher/ui/pages/global/LauncherPage.cpp
@@ -1,8 +1,9 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  PolyMC - Minecraft Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
  *  Copyright (c) 2022 dada513 <dada513@protonmail.com>
+ *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  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/launcher/ui/themes/CustomTheme.cpp b/launcher/ui/themes/CustomTheme.cpp
index c346d42f..a61bdbaf 100644
--- a/launcher/ui/themes/CustomTheme.cpp
+++ b/launcher/ui/themes/CustomTheme.cpp
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  Prism Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  This program is free software: you can redistribute it and/or modify
@@ -20,10 +20,6 @@
  *
  *      Copyright 2013-2021 MultiMC Contributors
  *
- *      Authors: Andrew Okin
- *               Peterix
- *               Orochimarufan <orochimarufan.x3@gmail.com>
- *
  *      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
@@ -56,7 +52,6 @@ static bool readThemeJson(const QString &path, QPalette &palette, double &fadeAm
             name = Json::requireString(root, "name", "Theme name");
             widgets = Json::requireString(root, "widgets", "Qt widget theme");
             qssFilePath = Json::ensureString(root, "qssFilePath", "themeStyle.css");
-            //auto colorFileList = Json::ensureArray(root, "colorFiles");
             auto colorsRoot = Json::requireObject(root, "colors", "colors object");
             auto readColor = [&](QString colorName) -> QColor
             {
@@ -165,7 +160,6 @@ static bool writeThemeJson(const QString &path, const QPalette &palette, double
     }
 }
 
-/// @brief 
 /// @param baseTheme Base Theme
 /// @param fileInfo FileInfo object for file to load
 /// @param isManifest whether to load a theme manifest or a qss file
@@ -199,8 +193,6 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
             m_fadeAmount = baseTheme->fadeAmount();
             m_widgets = baseTheme->qtTheme();
             m_qssFilePath = "themeStyle.css";
-
-            QFileInfo info(themeFilePath);
         }
         else
         {
@@ -212,18 +204,18 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
             writeThemeJson(fileInfo.absoluteFilePath(), m_palette, m_fadeAmount, m_fadeColor, m_name, m_widgets, m_qssFilePath);
         }
 
-        auto cssFilePath = FS::PathCombine(path, m_qssFilePath);
-        QFileInfo info (cssFilePath);
+        auto qssFilePath = FS::PathCombine(path, m_qssFilePath);
+        QFileInfo info (qssFilePath);
         if(info.isFile())
         {
             try
             {
                 // TODO: validate css?
-                m_styleSheet = QString::fromUtf8(FS::read(cssFilePath));
+                m_styleSheet = QString::fromUtf8(FS::read(qssFilePath));
             }
             catch (const Exception &e)
             {
-                themeWarningLog() << "Couldn't load css:" << e.cause() << "from" << cssFilePath;
+                themeWarningLog() << "Couldn't load css:" << e.cause() << "from" << qssFilePath;
                 m_styleSheet = baseTheme->appStyleSheet();
             }
         }
@@ -233,11 +225,11 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest
             m_styleSheet = baseTheme->appStyleSheet();
             try
             {
-                FS::write(cssFilePath, m_styleSheet.toUtf8());
+                FS::write(qssFilePath, m_styleSheet.toUtf8());
             }
             catch (const Exception &e)
             {
-                themeWarningLog() << "Couldn't write css:" << e.cause() << "to" << cssFilePath;
+                themeWarningLog() << "Couldn't write css:" << e.cause() << "to" << qssFilePath;
             }
         }
     } else {
diff --git a/launcher/ui/themes/CustomTheme.h b/launcher/ui/themes/CustomTheme.h
index 6d1f46b4..e845d23d 100644
--- a/launcher/ui/themes/CustomTheme.h
+++ b/launcher/ui/themes/CustomTheme.h
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  Prism Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  This program is free software: you can redistribute it and/or modify
@@ -20,10 +20,6 @@
  *
  *      Copyright 2013-2021 MultiMC Contributors
  *
- *      Authors: Andrew Okin
- *               Peterix
- *               Orochimarufan <orochimarufan.x3@gmail.com>
- *
  *      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
diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp
index ec24c6d7..a63d1741 100644
--- a/launcher/ui/themes/SystemTheme.cpp
+++ b/launcher/ui/themes/SystemTheme.cpp
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  Prism Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  This program is free software: you can redistribute it and/or modify
@@ -20,10 +20,6 @@
  *
  *      Copyright 2013-2021 MultiMC Contributors
  *
- *      Authors: Andrew Okin
- *               Peterix
- *               Orochimarufan <orochimarufan.x3@gmail.com>
- *
  *      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
diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp
index 3c338fd6..4b7cd46d 100644
--- a/launcher/ui/themes/ThemeManager.cpp
+++ b/launcher/ui/themes/ThemeManager.cpp
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  Prism Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  This program is free software: you can redistribute it and/or modify
diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h
index 871e6fe2..96088d82 100644
--- a/launcher/ui/themes/ThemeManager.h
+++ b/launcher/ui/themes/ThemeManager.h
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-3.0-only
 /*
- *  Prism Launcher
+ *  Prism Launcher - Minecraft Launcher
  *  Copyright (C) 2022 Tayou <tayou@gmx.net>
  *
  *  This program is free software: you can redistribute it and/or modify
-- 
cgit