diff options
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/style.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/style.cpp | 59 |
1 files changed, 51 insertions, 8 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/style.cpp b/SQLiteStudio3/guiSQLiteStudio/style.cpp index 525a832..6946443 100644 --- a/SQLiteStudio3/guiSQLiteStudio/style.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/style.cpp @@ -1,9 +1,12 @@ #include "style.h" #include "themetuner.h" -#include "common/global.h" #include "mainwindow.h" +#include "common/unused.h" +#include "syntaxhighlighterplugin.h" +#include "services/pluginmanager.h" #include <QApplication> #include <QToolTip> +#include <QDebug> Style* Style::instance = nullptr; @@ -15,6 +18,12 @@ Style* Style::getInstance() return instance; } + +bool Style::isDark(const QStyle* style) +{ + return style->standardPalette().text().color().value() >= 80; +} + const ExtendedPalette& Style::extendedPalette() const { return extPalette; @@ -24,15 +33,21 @@ void Style::setStyle(QStyle *style, const QString &styleName) { setBaseStyle(style); - QApplication::setPalette(initialPalette); // reset palette, cause styles don't provide - // full palette when changed in runtime (i.e. windowsvista) - QApplication::setStyle(this); - QApplication::setPalette(standardPalette()); - THEME_TUNER->tuneTheme(styleName); - QToolTip::setPalette(standardPalette()); + QApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton); - extPalette.styleChanged(this, styleName); + if (styleName != "qt5ct-style") + { + QApplication::setPalette(initialPalette); // reset palette, cause styles don't provide + // full palette when changed in runtime (i.e. windowsvista) + } + QApplication::setStyle(this); + if (styleName != "qt5ct-style") + { + QApplication::setPalette(standardPalette()); + QToolTip::setPalette(standardPalette()); + } + THEME_TUNER->tuneTheme(styleName); MAINWINDOW->getMdiArea()->setBackground(extPalette.mdiAreaBase()); } @@ -41,8 +56,36 @@ QString Style::name() const return baseStyle()->objectName(); } +bool Style::isDark() const +{ + return isDark(this); +} + +bool Style::eventFilter(QObject *obj, QEvent *ev) +{ + UNUSED(obj); + if (ev->type() == QEvent::PaletteChange) + { + if (extPalette.styleChanged(this, name())) + { + QList<SyntaxHighlighterPlugin*> plugins = PLUGINS->getLoadedPlugins<SyntaxHighlighterPlugin>(); + auto it = plugins.begin(); + while (it != plugins.end()) + { + (*it)->refreshFormats(); + it++; + } + emit paletteChanged(); + } + } + + return false; +} + Style::Style(QStyle *style) : QProxyStyle(style) { initialPalette = style->standardPalette(); + extPalette.styleChanged(this, name()); + qApp->installEventFilter(this); } |
