QmlMaterial 0.1.0
Loading...
Searching...
No Matches
control_environment.hpp
1#pragma once
2
3#include <QLocale>
4#include <optional>
5#include "qml_material/export.hpp"
6
7QT_BEGIN_NAMESPACE
8class QFont;
9class QQuickItem;
10QT_END_NAMESPACE
11
12namespace qml_material
13{
14
15class QML_MATERIAL_API ControlEnvironment {
16public:
17 virtual ~ControlEnvironment() = default;
18 virtual QFont effectiveFont() const = 0;
19 virtual void inheritFont(const QFont&) = 0;
20 virtual std::optional<bool> effectiveHoverEnabled() const { return std::nullopt; }
21 virtual void inheritHoverEnabled(bool) {}
22 virtual std::optional<QLocale> effectiveLocale() const { return std::nullopt; }
23 virtual void inheritLocale(const QLocale&) {}
24 virtual std::optional<Qt::LayoutDirection> effectiveLayoutDirection() const {
25 return std::nullopt;
26 }
27 virtual void inheritLayoutDirection(Qt::LayoutDirection) {}
28};
29
30namespace utils
31{
32QML_MATERIAL_API bool canUpdateControlEnvironment();
33QML_MATERIAL_API bool inheritedHoverEnabled(const QQuickItem*);
34QML_MATERIAL_API QFont inheritedFont(const QQuickItem*);
35QML_MATERIAL_API QLocale inheritedLocale(const QQuickItem*);
36QML_MATERIAL_API Qt::LayoutDirection inheritedLayoutDirection(const QQuickItem*);
37QML_MATERIAL_API QFont resolveFont(const QFont& requested, const QFont& inherited);
38QML_MATERIAL_API void propagateFont(QQuickItem*, const QFont&);
39QML_MATERIAL_API void propagateHoverEnabled(QQuickItem*, bool);
40QML_MATERIAL_API void propagateLocale(QQuickItem*, const QLocale&);
41QML_MATERIAL_API void propagateLayoutDirection(QQuickItem*, Qt::LayoutDirection);
42} // namespace utils
43} // namespace qml_material