FluentUI/src/FluTheme.cpp

46 lines
1.1 KiB
C++
Raw Normal View History

2023-03-06 14:22:13 +08:00
#include "FluTheme.h"
#include "FluColors.h"
#include <QPalette>
#include <QGuiApplication>
2023-03-06 14:22:13 +08:00
FluTheme* FluTheme::m_instance = nullptr;
FluTheme *FluTheme::getInstance()
{
if(FluTheme::m_instance == nullptr){
FluTheme::m_instance = new FluTheme;
}
return FluTheme::m_instance;
}
FluTheme::FluTheme(QObject *parent)
: QObject{parent}
{
primaryColor(FluColors::getInstance()->Blue());
2023-03-28 21:37:10 +08:00
textSize(13);
2023-04-19 18:04:14 +08:00
nativeText(false);
2023-03-28 21:37:10 +08:00
frameless(true);
if (follow_system()){dark(isDark());}
(qobject_cast<QGuiApplication *>(QCoreApplication::instance()))->installEventFilter(this);
}
bool FluTheme::eventFilter(QObject *obj, QEvent *event)
{
Q_UNUSED(obj);
if (event->type() == QEvent::ApplicationPaletteChange)
{
if (follow_system()){dark(isDark());}
event->accept();
return true;
}
return false;
}
bool FluTheme::isDark()
{
QPalette palette = (qobject_cast<QGuiApplication *>(QCoreApplication::instance()))->palette();
QColor color = palette.color(QPalette::Window).rgb();
return !(color.red() * 0.2126 + color.green() * 0.7152 + color.blue() * 0.0722 > 255 / 2);
2023-03-06 14:22:13 +08:00
}