summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/style.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/style.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/style.cpp59
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);
}