aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/themes
diff options
context:
space:
mode:
authorTheKodeToad <TheKodeToad@proton.me>2023-07-19 14:12:39 +0100
committerTheKodeToad <TheKodeToad@proton.me>2023-07-19 14:12:39 +0100
commit96ebdfc9a88004056b6ec581f071678e08c0c989 (patch)
tree187225930939e15bef24760b33baf75c26aa3fe6 /launcher/ui/themes
parentf55120654aed5244040e1de59707b176bb816405 (diff)
downloadPrismLauncher-96ebdfc9a88004056b6ec581f071678e08c0c989.tar.gz
PrismLauncher-96ebdfc9a88004056b6ec581f071678e08c0c989.tar.bz2
PrismLauncher-96ebdfc9a88004056b6ec581f071678e08c0c989.zip
Sorting and invalid reset
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
Diffstat (limited to 'launcher/ui/themes')
-rw-r--r--launcher/ui/themes/IconTheme.h1
-rw-r--r--launcher/ui/themes/ThemeManager.cpp37
-rw-r--r--launcher/ui/themes/ThemeManager.h7
3 files changed, 35 insertions, 10 deletions
diff --git a/launcher/ui/themes/IconTheme.h b/launcher/ui/themes/IconTheme.h
index 0282d7cb..458ea12c 100644
--- a/launcher/ui/themes/IconTheme.h
+++ b/launcher/ui/themes/IconTheme.h
@@ -23,6 +23,7 @@
class IconTheme {
public:
IconTheme(const QString& id, const QString& path);
+ IconTheme() = default;
bool load();
QString id();
diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp
index 84e11ccf..8c9a6a58 100644
--- a/launcher/ui/themes/ThemeManager.cpp
+++ b/launcher/ui/themes/ThemeManager.cpp
@@ -53,6 +53,13 @@ ITheme* ThemeManager::getTheme(QString themeId)
return m_themes[themeId].get();
}
+QString ThemeManager::addIconTheme(IconTheme theme)
+{
+ QString id = theme.id();
+ m_icons.emplace(id, std::move(theme));
+ return id;
+}
+
void ThemeManager::initializeThemes()
{
// Icon themes
@@ -82,7 +89,7 @@ void ThemeManager::initializeIcons()
continue;
}
- m_icons.append(theme);
+ addIconTheme(std::move(theme));
themeDebugLog() << "Loaded Built-In Icon Theme" << id;
}
@@ -93,7 +100,7 @@ void ThemeManager::initializeIcons()
if (!theme.load())
continue;
- m_icons.append(theme);
+ addIconTheme(std::move(theme));
themeDebugLog() << "Loaded Custom Icon Theme from" << dir.path();
}
@@ -150,25 +157,39 @@ QList<IconTheme*> ThemeManager::getValidIconThemes()
{
QList<IconTheme*> ret;
ret.reserve(m_icons.size());
- for (IconTheme& theme : m_icons)
+ for (auto&& [id, theme] : m_icons) {
ret.append(&theme);
+ }
return ret;
}
-void ThemeManager::setIconTheme(const QString& name)
+bool ThemeManager::setIconTheme(const QString& name)
{
+ if (m_icons.find(name) == m_icons.end()) {
+ themeWarningLog() << "Tried to set invalid icon theme:" << name;
+ return false;
+ }
+
QIcon::setThemeName(name);
+ return true;
}
void ThemeManager::applyCurrentlySelectedTheme(bool initial)
{
- setIconTheme(APPLICATION->settings()->get("IconTheme").toString());
+ auto settings = APPLICATION->settings();
+ if (!setIconTheme(settings->get("IconTheme").toString())) {
+ APPLICATION->settings()->reset("IconTheme");
+ setIconTheme(settings->get("IconTheme").toString());
+ }
themeDebugLog() << "<> Icon theme set.";
- setApplicationTheme(APPLICATION->settings()->get("ApplicationTheme").toString(), initial);
+ if (!setApplicationTheme(settings->get("ApplicationTheme").toString(), initial)) {
+ APPLICATION->settings()->reset("ApplicationTheme");
+ setApplicationTheme(settings->get("ApplicationTheme").toString(), initial);
+ }
themeDebugLog() << "<> Application theme set.";
}
-void ThemeManager::setApplicationTheme(const QString& name, bool initial)
+bool ThemeManager::setApplicationTheme(const QString& name, bool initial)
{
auto systemPalette = qApp->palette();
auto themeIter = m_themes.find(name);
@@ -176,8 +197,10 @@ void ThemeManager::setApplicationTheme(const QString& name, bool initial)
auto& theme = themeIter->second;
themeDebugLog() << "applying theme" << theme->name();
theme->apply(initial);
+ return true;
} else {
themeWarningLog() << "Tried to set invalid theme:" << name;
+ return false;
}
}
diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h
index 9b97f372..2b6c57e9 100644
--- a/launcher/ui/themes/ThemeManager.h
+++ b/launcher/ui/themes/ThemeManager.h
@@ -39,9 +39,9 @@ class ThemeManager {
QList<ITheme*> getValidApplicationThemes();
QList<IconTheme*> getValidIconThemes();
- void setIconTheme(const QString& name);
+ bool setIconTheme(const QString& name);
void applyCurrentlySelectedTheme(bool initial = false);
- void setApplicationTheme(const QString& name, bool initial = false);
+ bool setApplicationTheme(const QString& name, bool initial = false);
/// <summary>
/// Returns the cat based on selected cat and with events (Birthday, XMas, etc.)
@@ -52,12 +52,13 @@ class ThemeManager {
private:
std::map<QString, std::unique_ptr<ITheme>> m_themes;
- QList<IconTheme> m_icons;
+ std::map<QString, IconTheme> m_icons;
MainWindow* m_mainWindow;
void initializeThemes();
QString addTheme(std::unique_ptr<ITheme> theme);
ITheme* getTheme(QString themeId);
+ QString addIconTheme(IconTheme theme);
void initializeIcons();
void initializeWidgets();