spark-store/src/mainwindow-dtk.h
zty199 c1af38584f chore: 优化 KDE 深色模式支持实现方式
修改 ThemeChecker 为单例类,去除定时器频繁获取 color-scheme 操作,改为监听 SettingChanged 信号,仅在初始化时获取 color-scheme;Dtk 主题色变化信号监听合入 ThemeChecker 统一处理,判断主题需要变化时设置 Dtk 调色板,并发送 themeChanged 信号通知主窗口更新 qss

Log: 修改 ThemeChecker 为单例类,监听 xdg-desktop-portal SettingChanged 信号和 Dtk 主题色变化信号进行统一处理
2023-10-28 18:42:02 +08:00

73 lines
1.5 KiB
C++
Executable File

#ifndef MAINWINDOWDTK_H
#define MAINWINDOWDTK_H
#include "widgets/base/basewidgetopacity.h"
#include <DMainWindow>
#include <DTitlebar>
#include <DPushButton>
#include <DSearchEdit>
#include <DGuiApplicationHelper>
#include <QSystemTrayIcon>
DWIDGET_USE_NAMESPACE
namespace Ui {
class MainWindow;
}
class ProgressButton;
class DownloadListWidget;
class MainWindow : public BaseWidgetOpacity
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
void openUrl(const QString &url);
bool isCloseWindowAnimation();
Q_INVOKABLE void refreshTheme(bool isDarkMode);
protected:
void closeEvent(QCloseEvent *event) override;
private:
void initUI();
void initTitleBar();
void initTitleBarMenu();
void initLeftMenu();
void initTrayIcon();
void initConnections();
void initDbus();
void initTmpDir();
void switchPage(int now);
void updateUi(int now);
public slots:
void notify(QObject *receiver, QEvent *event);
private slots:
//接受来自dbus的url
void onGetUrl(const QString &url);
void onNewProcessInstance(qint64 pid, const QStringList &arguments);
void on_pushButton_14_clicked();
private:
Ui::MainWindow *ui;
DPushButton *backButton;
DSearchEdit *searchEdit;
ProgressButton *downloadButton;
DownloadListWidget *downloadlistwidget;
QSystemTrayIcon *trayIcon = nullptr;
QList<int> pageHistory;
};
#endif // MAINWINDOWDTK_H