diff options
author | TheKodeToad <TheKodeToad@proton.me> | 2023-07-20 11:51:44 +0100 |
---|---|---|
committer | TheKodeToad <TheKodeToad@proton.me> | 2023-07-20 11:54:15 +0100 |
commit | 842f08dcfc29d24cae13c25264e67375dd069e27 (patch) | |
tree | 6ddab902a2a2a994b2518744074726c220f695d2 /launcher/ui/themes | |
parent | 960093700a9daa4e2115d4663ab486a5dd1a4757 (diff) | |
download | PrismLauncher-842f08dcfc29d24cae13c25264e67375dd069e27.tar.gz PrismLauncher-842f08dcfc29d24cae13c25264e67375dd069e27.tar.bz2 PrismLauncher-842f08dcfc29d24cae13c25264e67375dd069e27.zip |
(UX) Add open folder button next to combo boxes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
Diffstat (limited to 'launcher/ui/themes')
-rw-r--r-- | launcher/ui/themes/ThemeManager.cpp | 44 | ||||
-rw-r--r-- | launcher/ui/themes/ThemeManager.h | 8 |
2 files changed, 32 insertions, 20 deletions
diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index a9fae589..32585618 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -73,13 +73,12 @@ void ThemeManager::initializeIcons() // TODO: icon themes and instance icons do not mesh well together. Rearrange and fix discrepancies! // set icon theme search path! - QDir themeFolder("iconthemes"); - if (!themeFolder.mkpath(".")) + if (!m_iconThemeFolder.mkpath(".")) themeWarningLog() << "Couldn't create icon theme folder"; - themeDebugLog() << "Icon Theme Folder Path: " << themeFolder.absolutePath(); + themeDebugLog() << "Icon Theme Folder Path: " << m_iconThemeFolder.absolutePath(); auto searchPaths = QIcon::themeSearchPaths(); - searchPaths.append(themeFolder.path()); + searchPaths.append(m_iconThemeFolder.path()); QIcon::setThemeSearchPaths(searchPaths); themeDebugLog() << "<> Initializing Icon Themes"; @@ -95,7 +94,7 @@ void ThemeManager::initializeIcons() themeDebugLog() << "Loaded Built-In Icon Theme" << id; } - QDirIterator directoryIterator(themeFolder.path(), QDir::Dirs | QDir::NoDotAndDotDot); + QDirIterator directoryIterator(m_iconThemeFolder.path(), QDir::Dirs | QDir::NoDotAndDotDot); while (directoryIterator.hasNext()) { QDir dir(directoryIterator.next()); IconTheme theme(dir.dirName(), dir.path()); @@ -120,12 +119,11 @@ void ThemeManager::initializeWidgets() // TODO: need some way to differentiate same name themes in different subdirectories (maybe smaller grey text next to theme name in // dropdown?) - QDir themeFolder("themes"); - if (!themeFolder.mkpath(".")) + if (!m_applicationThemeFolder.mkpath(".")) themeWarningLog() << "Couldn't create theme folder"; - themeDebugLog() << "Theme Folder Path: " << themeFolder.absolutePath(); + themeDebugLog() << "Theme Folder Path: " << m_applicationThemeFolder.absolutePath(); - QDirIterator directoryIterator(themeFolder.path(), QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); + QDirIterator directoryIterator(m_applicationThemeFolder.path(), QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); while (directoryIterator.hasNext()) { QDir dir(directoryIterator.next()); QFileInfo themeJson(dir.absoluteFilePath("theme.json")); @@ -148,6 +146,16 @@ void ThemeManager::initializeWidgets() themeDebugLog() << "<> Widget themes initialized."; } +QList<IconTheme*> ThemeManager::getValidIconThemes() +{ + QList<IconTheme*> ret; + ret.reserve(m_icons.size()); + for (auto&& [id, theme] : m_icons) { + ret.append(&theme); + } + return ret; +} + QList<ITheme*> ThemeManager::getValidApplicationThemes() { QList<ITheme*> ret; @@ -158,14 +166,9 @@ QList<ITheme*> ThemeManager::getValidApplicationThemes() return ret; } -QList<IconTheme*> ThemeManager::getValidIconThemes() +bool ThemeManager::isValidIconTheme(const QString& id) { - QList<IconTheme*> ret; - ret.reserve(m_icons.size()); - for (auto&& [id, theme] : m_icons) { - ret.append(&theme); - } - return ret; + return !id.isEmpty() && m_icons.find(id) != m_icons.end(); } bool ThemeManager::isValidApplicationTheme(const QString& id) @@ -173,9 +176,14 @@ bool ThemeManager::isValidApplicationTheme(const QString& id) return !id.isEmpty() && m_themes.find(id) != m_themes.end(); } -bool ThemeManager::isValidIconTheme(const QString& id) +QDir ThemeManager::getIconThemesFolder() { - return !id.isEmpty() && m_icons.find(id) != m_icons.end(); + return m_iconThemeFolder; +} + +QDir ThemeManager::getApplicationThemesFolder() +{ + return m_applicationThemeFolder; } void ThemeManager::setIconTheme(const QString& name) diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index 627fdc75..5634a81a 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -37,10 +37,12 @@ class ThemeManager { public: ThemeManager(); - QList<ITheme*> getValidApplicationThemes(); QList<IconTheme*> getValidIconThemes(); - bool isValidApplicationTheme(const QString& id); + QList<ITheme*> getValidApplicationThemes(); bool isValidIconTheme(const QString& id); + bool isValidApplicationTheme(const QString& id); + QDir getIconThemesFolder(); + QDir getApplicationThemesFolder(); void applyCurrentlySelectedTheme(bool initial = false); void setIconTheme(const QString& name); void setApplicationTheme(const QString& name, bool initial = false); @@ -55,6 +57,8 @@ class ThemeManager { private: std::map<QString, std::unique_ptr<ITheme>> m_themes; std::map<QString, IconTheme> m_icons; + QDir m_iconThemeFolder{ "iconthemes" }; + QDir m_applicationThemeFolder{ "themes" }; void initializeThemes(); QString addTheme(std::unique_ptr<ITheme> theme); |