dtkwidget/include/widgets/dthememanager.h

61 lines
1.7 KiB
C++

// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DTHEMEMANAGER_H
#define DTHEMEMANAGER_H
#include <dtkwidget_global.h>
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
#include <QObject>
#include <QString>
#include <QGlobalStatic>
#include <DObject>
DWIDGET_BEGIN_NAMESPACE
class DThemeManagerPrivate;
class LIBDTKWIDGETSHARED_EXPORT D_DECL_DEPRECATED DThemeManager : public QObject, public DTK_CORE_NAMESPACE::DObject
{
Q_OBJECT
public:
static DThemeManager *instance();
QString theme() const;
QString theme(const QWidget *widget, QWidget **baseWidget = nullptr) const;
void setTheme(const QString theme);
void setTheme(QWidget *widget, const QString theme);
QString getQssForWidget(const QString className, const QString &theme = QString()) const;
QString getQssForWidget(const QWidget *widget) const;
static void registerWidget(QWidget *widget, QStringList properties = QStringList());
// TODO: use blow instead, the only thing should do is rebuilding
// static void registerWidget(QWidget *widget, const QStringList &properties = QStringList());
static void registerWidget(QWidget *widget, const QString &filename, const QStringList &properties = QStringList());
public Q_SLOTS:
void updateQss();
void updateThemeOnParentChanged(QWidget *widget);
Q_SIGNALS:
void themeChanged(QString theme);
void widgetThemeChanged(QWidget *widget, QString theme);
protected:
DThemeManager();
bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
private:
friend class DApplication;
D_DECLARE_PRIVATE(DThemeManager)
};
DWIDGET_END_NAMESPACE
#endif // DTHEMEMANAGER_H
#endif