Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
LayoutFactory.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
6#include <phosphorzones_export.h>
7#include <QString>
8#include <QHash>
9#include <functional>
10
11namespace PhosphorZones {
12
13class Layout;
14class LayoutRegistry;
15
16class PHOSPHORZONES_EXPORT LayoutFactory
17{
18public:
19 using CreatorFunc = std::function<Layout*(LayoutRegistry*)>;
20
21 static Layout* create(const QString& type, LayoutRegistry* manager);
22 static void registerType(const QString& type, CreatorFunc creator);
23
24private:
25 static QHash<QString, CreatorFunc>& creators();
26 static void ensureDefaults();
27 static bool s_defaultsInitialized;
28};
29
30} // namespace PhosphorZones
Definition LayoutFactory.h:17
static Layout * create(const QString &type, LayoutRegistry *manager)
std::function< Layout *(LayoutRegistry *)> CreatorFunc
Definition LayoutFactory.h:19
static void registerType(const QString &type, CreatorFunc creator)
Manual zone-layout registry + per-context assignment store.
Definition LayoutRegistry.h:48
Represents a collection of zones that form a layout.
Definition Layout.h:74
constexpr QLatin1String LayoutRegistry("org.plasmazones.LayoutRegistry")
Definition IWindowTrackingService.h:22