File indexing completed on 2024-04-28 05:26:27
0001 #pragma once 0002 0003 #include "breezehelper.h" 0004 #include "breezestyle.h" 0005 #include <KConfigWatcher> 0006 #include <KSharedConfig> 0007 #include <QApplication> 0008 #include <QObject> 0009 0010 namespace Breeze 0011 { 0012 class ToolsAreaManager; 0013 0014 // Trying to discriminate QApplication events from events from all QObjects 0015 // belonging to it is impractical with everything going through a single 0016 // eventFilter, so we have this class which provides a second one that allows 0017 // us to filter for the events we want. 0018 class AppListener : public QObject 0019 { 0020 Q_OBJECT 0021 using QObject::QObject; 0022 0023 bool eventFilter(QObject *watched, QEvent *event) override; 0024 0025 ToolsAreaManager *manager; 0026 friend class ToolsAreaManager; 0027 }; 0028 0029 class ToolsAreaManager : public QObject 0030 { 0031 Q_OBJECT 0032 0033 private: 0034 Helper *_helper; 0035 QHash<const QMainWindow *, QVector<QPointer<QToolBar>>> _windows; 0036 KSharedConfigPtr _config; 0037 KConfigWatcher::Ptr _watcher; 0038 QPalette _palette = QPalette(); 0039 AppListener *_listener; 0040 bool _colorSchemeHasHeaderColor; 0041 0042 friend class AppListener; 0043 0044 protected: 0045 bool tryRegisterToolBar(QPointer<QMainWindow> window, QPointer<QWidget> widget); 0046 void tryUnregisterToolBar(QPointer<QMainWindow> window, QPointer<QWidget> widget); 0047 void configUpdated(); 0048 0049 public: 0050 explicit ToolsAreaManager(Helper *helper, QObject *parent = nullptr); 0051 ~ToolsAreaManager(); 0052 0053 bool eventFilter(QObject *watched, QEvent *event) override; 0054 0055 const QPalette &palette() const 0056 { 0057 return _palette; 0058 } 0059 0060 void registerApplication(QApplication *application); 0061 void registerWidget(QWidget *widget); 0062 void unregisterWidget(QWidget *widget); 0063 0064 QRect toolsAreaRect(const QMainWindow *window); 0065 0066 bool hasHeaderColors(); 0067 }; 0068 }