diff options
author | Ken Moore <ken@pcbsd.org> | 2014-10-04 15:13:12 -0400 |
---|---|---|
committer | Ken Moore <ken@pcbsd.org> | 2014-10-04 15:13:12 -0400 |
commit | 5f59a88e3f9104a44b6be0cfbe56063e2deb6afe (patch) | |
tree | 89207ac4713357baa55d5eac63f961bf413a6851 /libLumina/LuminaThemes.h | |
parent | Make sure to initialize the QApplication before trying to show the error box ... (diff) | |
download | lumina-5f59a88e3f9104a44b6be0cfbe56063e2deb6afe.tar.gz lumina-5f59a88e3f9104a44b6be0cfbe56063e2deb6afe.tar.bz2 lumina-5f59a88e3f9104a44b6be0cfbe56063e2deb6afe.zip |
Add the template for the new LuminaThemes library class (not integrated into build yet).
This class will provide a consistant look for all Lumina utilities, while also allowing the user ways to easily modify the themes/appearance and have it take effect immediately. I also plan on extending this framework to save the completed stylesheet for *all* Qt-based system applications to use (providing an easy way to customize the feel of the system).
Diffstat (limited to 'libLumina/LuminaThemes.h')
-rw-r--r-- | libLumina/LuminaThemes.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/libLumina/LuminaThemes.h b/libLumina/LuminaThemes.h new file mode 100644 index 00000000..a3e558d9 --- /dev/null +++ b/libLumina/LuminaThemes.h @@ -0,0 +1,70 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2014, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This class governs all the stylesheet usage and interactions +// for the Lumina utilities to provide a consistant theme for the system +//=========================================== +#ifndef _LUMINA_LIBRARY_THEMES_H +#define _LUMINA_LIBRARY_THEMES_H + +#include <QApplication> +#include <QObject> +#include <QFileSystemWatcher> +#include <QString> +#include <QFile> +#include <QDir> + +class LTHEME{ + //Read the Themes/Colors/Icons that are available on the system + static QStringList availableSystemThemes();//returns: [name::::path] for each item + static QStringList availableLocalThemes(); //returns: [name::::path] for each item + static QStringList availableSystemColors(); //returns: [name::::path] for each item + static QStringList availableLocalColors(); //returns: [name::::path] for each item + static QStringList availableSystemIcons(); //returns: [name] for each item + + //Return the currently selected Theme/Colors/Icons + static QStringList currentSettings(); //returns [theme path, colorspath, iconsname] + + //Change the current Theme/Colors/Icons + static bool setCurrentSettings(QString themepath, QString colorpath, QString iconname); + + //Return the complete stylesheet for a given theme/colors + static QString assembleStyleSheet(QString themepath, QString colorpath); + +}; + + +//Simple class to setup a utility to use the Lumina theme +//-----Example usage in "main.cpp" ------------------------------- +// QApplication a(argc,argv); +// LuminaThemeEngine themes(&a) +//------------------------------------------------------------------------------------ +// Note: If you also use LuminaXDG::findIcons() in the application and you want +// to dynamically update those icons - connect to the updateIcons() signal +//------------------------------------------------------------------------------------- +// QMainWindow w; //(or whatever the main app window is) +// QObject::connect(themes,SIGNAL(updateIcons()), &w, SLOT(updateIcons()) ); +//------------------------------------------------------------------------------------ +class LuminaThemeEngine : public QObject{ + Q_OBJECT +public: + LuminaThemeEngine(QApplication *app); + ~LuminaThemeEngine(); + +private: + QApplication *application; + QFileSystemWatcher *watcher; + QString theme,colors,icons; //current settings + +private slots: + void watcherChange(); + +signals: + void updateIcons(); +}; + + +#endif |