Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
ProfileLoader.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 <PhosphorAnimation/CurveLoader.h> // LiveReload re-export
7#include <PhosphorAnimation/phosphoranimation_export.h>
8
11
12#include <QtCore/QObject>
13#include <QtCore/QString>
14#include <QtCore/QStringList>
15
16#include <memory>
17
18namespace PhosphorAnimation {
19
20class CurveRegistry;
21class PhosphorProfileRegistry;
22
40class PHOSPHORANIMATION_EXPORT ProfileLoader : public QObject
41{
42 Q_OBJECT
43
44public:
51 explicit ProfileLoader(PhosphorProfileRegistry& registry, CurveRegistry& curveRegistry,
52 const QString& ownerTag = {}, QObject* parent = nullptr);
53 ~ProfileLoader() override;
54
55 int loadFromDirectory(const QString& directory, LiveReload liveReload = LiveReload::Off);
56
59 const QStringList& directories, LiveReload liveReload = LiveReload::Off,
61
62 int loadLibraryBuiltins(LiveReload liveReload = LiveReload::Off);
63
64 QString ownerTag() const;
89 void rescanNow();
90 int registeredCount() const;
91
92 struct Entry
93 {
94 QString path;
95 QString sourcePath;
97 };
98 QList<Entry> entries() const;
99
100Q_SIGNALS:
102
103private:
104 class Sink;
105 std::unique_ptr<Sink> m_sink;
106 std::unique_ptr<PhosphorFsLoader::DirectoryLoader> m_loader;
110 bool m_destroying = false;
111};
112
113} // namespace PhosphorAnimation
String-id <-> curve factory registry.
Definition CurveRegistry.h:26
Registry mapping profile path strings to Profile values.
Definition PhosphorProfileRegistry.h:23
Scans JSON profile-definition files and registers them with PhosphorProfileRegistry.
Definition ProfileLoader.h:41
ProfileLoader(PhosphorProfileRegistry &registry, CurveRegistry &curveRegistry, const QString &ownerTag={}, QObject *parent=nullptr)
If ownerTag is empty, a unique per-instance tag is generated.
int loadFromDirectories(const QStringList &directories, LiveReload liveReload=LiveReload::Off, PhosphorFsLoader::RegistrationOrder order=PhosphorFsLoader::RegistrationOrder::LowestPriorityFirst)
Scan multiple directories in caller-declared priority order.
int loadLibraryBuiltins(LiveReload liveReload=LiveReload::Off)
void rescanNow()
Rescan synchronously, so a caller that just wrote or deleted a profile file can read the registry bac...
QList< Entry > entries() const
int loadFromDirectory(const QString &directory, LiveReload liveReload=LiveReload::Off)
Definition AnimatedValue.h:32
RegistrationOrder
Caller's declared priority direction for registerDirectories / setDirectories input.
Definition WatchedDirectorySet.h:58
@ LowestPriorityFirst
[sys-lowest, ..., sys-highest, user] — the canonical strategy view.
LiveReload
Opt-in policy for directory watching.
Definition WatchedDirectorySet.h:34
Definition ProfileLoader.h:93
QString sourcePath
Definition ProfileLoader.h:95
QString systemSourcePath
Definition ProfileLoader.h:96
QString path
Definition ProfileLoader.h:94