/*
This file is part of the KDE project
- SPDX-FileCopyrightText: 2022 Felix Ernst <felixernst@zohomail.eu>
+ SPDX-FileCopyrightText: 2022 Felix Ernst <felixernst@kde.org>
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#define BACKGROUNDCOLORHELPER_H
#include <QColor>
+#include <QObject>
#include <QPointer>
#include <memory>
class QWidget;
+namespace SelectionMode
+{
+
/**
* @brief A Singleton class for managing the colors of selection mode widgets.
*/
-class BackgroundColorHelper
+class BackgroundColorHelper : public QObject
{
+ Q_OBJECT
public:
static BackgroundColorHelper *instance();
/**
* Changes the background color of @p widget to a distinct color scheme matching color which makes it clear that the widget belongs to the selection mode.
+ * The background color of @p widget will from now on be updated automatically when the palette of the application changes.
*/
void controlBackgroundColor(QWidget *widget);
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) override;
+
private:
BackgroundColorHelper();
+ /**
+ * Called when the palette of the application changes.
+ * Triggers updateBackgroundColor() and the updates the background color of m_colorControlledWidgets.
+ * @see updateBackgroundColor
+ */
void slotPaletteChanged();
+ /** Calculates a new m_colorControlledWidgets based on the current color scheme of the application. */
void updateBackgroundColor();
private:
+ /// The widgets who have given up control over the background color to BackgroundColorHelper.
std::vector<QPointer<QWidget>> m_colorControlledWidgets;
+ /// The color to be used for the widgets' backgrounds.
QColor m_backgroundColor;
+ /// Singleton object
static BackgroundColorHelper *s_instance;
};
+}
+
#endif // BACKGROUNDCOLORHELPER_H