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
8#include <PhosphorAnimation/phosphoranimation_export.h>
9
12
13#include <QtCore/QHash>
14#include <QtCore/QObject>
15#include <QtCore/QString>
16#include <QtCore/QStringList>
17
18#include <memory>
19
20namespace PhosphorAnimation {
21
22class CurveRegistry;
23class PhosphorProfileRegistry;
24
28class PHOSPHORANIMATION_EXPORT ProfileLoader : public QObject
29{
30 Q_OBJECT
31
32public:
34 explicit ProfileLoader(PhosphorProfileRegistry& registry, CurveRegistry& curveRegistry,
35 const QString& ownerTag = {}, QObject* parent = nullptr);
36 ~ProfileLoader() override;
37
38 int loadFromDirectory(const QString& directory, LiveReload liveReload = LiveReload::Off);
39
42 const QStringList& directories, LiveReload liveReload = LiveReload::Off,
44
45 int loadLibraryBuiltins(LiveReload liveReload = LiveReload::Off);
46
47 QString ownerTag() const;
49 int registeredCount() const;
50
51 struct Entry
52 {
53 QString path;
54 QString sourcePath;
56 };
57 QList<Entry> entries() const;
58
60 bool hasPath(const QString& path) const;
61
62Q_SIGNALS:
64
65private:
66 class Sink;
67 std::unique_ptr<Sink> m_sink;
68 std::unique_ptr<PhosphorFsLoader::DirectoryLoader> m_loader;
69};
70
71} // namespace PhosphorAnimation
String-id <-> curve factory registry.
Definition CurveRegistry.h:22
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:29
ProfileLoader(PhosphorProfileRegistry &registry, CurveRegistry &curveRegistry, const QString &ownerTag={}, QObject *parent=nullptr)
If ownerTag is empty, a unique per-instance tag is generated.
bool hasPath(const QString &path) const
O(1) membership check — prefer over entries() on hot paths.
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)
QList< Entry > entries() const
int loadFromDirectory(const QString &directory, LiveReload liveReload=LiveReload::Off)
Definition AnimatedValue.h:31
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:52
QString sourcePath
Definition ProfileLoader.h:54
QString systemSourcePath
Definition ProfileLoader.h:55
QString path
Definition ProfileLoader.h:53