51 Q_PROPERTY(
int layoutCount READ layoutCount NOTIFY layoutsChanged)
54 Q_PROPERTY(QString layoutDirectory READ layoutDirectory WRITE setLayoutDirectory NOTIFY layoutDirectoryChanged)
72 LayoutRegistry(std::unique_ptr<PhosphorConfig::IBackend> backend, QString layoutSubdirectory,
73 QObject* parent =
nullptr);
80 return m_layouts.size();
97 return m_activeLayout;
106 return m_layoutDirectory;
220 return m_previousLayout;
223 Q_INVOKABLE
void assignLayout(
const QString& screenId,
int virtualDesktop,
const QString& activity,
Layout* layout);
224 Q_INVOKABLE
void assignLayoutById(
const QString& screenId,
int virtualDesktop,
const QString& activity,
225 const QString& layoutId);
244 const QString& layoutId);
249 const QString& algorithmId);
282 const QString& layoutId);
287 const QString& algorithmId);
290 const QString& activity = QString())
const override;
298 return layoutForScreen(screenId, m_currentVirtualDesktop, m_currentActivity);
302 const QString& activity = QString());
304 const QString& activity = QString())
const;
317 const QString& activity = QString())
const override;
337 const QString& activity = QString())
const;
340 const QString& activity = QString())
const;
353 const QString& activity = QString())
const;
355 const QString& activity = QString())
const;
378 return m_quickLayoutShortcuts;
395 return m_currentVirtualDesktop;
399 return m_currentActivity;
403 m_currentVirtualDesktop = desktop;
407 m_currentActivity = activity;
432 void clearShadowsForSlot(
const QString& screenId,
int virtualDesktop,
const QString& activity);
434 void ensureLayoutDirectory();
435 void loadLayoutsFromDirectory(
const QString& directory);
436 Layout* restoreSystemLayout(
const QUuid&
id,
const QString& systemPath);
437 QString layoutFilePath(
const QUuid&
id)
const;
440 Layout* cycleLayoutImpl(
const QString& screenId,
int direction);
441 bool shouldSkipLayoutAssignment(
const QString& layoutId,
const QString& context)
const;
442 void emitLayoutAssigned(
const QString& screenId,
int virtualDesktop,
const QString& layoutId);
457 void applyLayoutToScreen(
const QString& screenId,
Layout* layout);
458 QJsonObject loadAllAutotileOverrides()
const;
459 void saveAllAutotileOverrides(
const QJsonObject& all);
460 Layout* resolveConfiguredDefault()
const;
474 std::function<QString()> m_defaultLayoutIdProvider;
480 std::function<QString()> m_defaultAutotileAlgorithmProvider;
485 std::function<bool()> m_snappingPreferredProvider;
486 std::unique_ptr<PhosphorConfig::IBackend> m_ownedBackend;
488 QString m_layoutSubdirectory;
489 QString m_layoutDirectory;
490 QVector<Layout*> m_layouts;
491 Layout* m_activeLayout =
nullptr;
492 Layout* m_previousLayout =
nullptr;
493 QHash<LayoutAssignmentKey, AssignmentEntry> m_assignments;
494 QHash<int, QString> m_quickLayoutShortcuts;
495 int m_currentVirtualDesktop = 1;
496 QString m_currentActivity;
Pluggable configuration backend.
Definition IBackend.h:150
Enumeration + mutation surface for the in-memory zone-layout catalog.
Definition IZoneLayoutRegistry.h:43
Manual zone-layout registry + per-context assignment store.
Definition LayoutRegistry.h:48
AssignmentEntry::Mode modeForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
QString layoutDirectory() const
Definition LayoutRegistry.h:104
LayoutRegistry(std::unique_ptr< PhosphorConfig::IBackend > backend, QString layoutSubdirectory, QObject *parent=nullptr)
void setAllDesktopAssignments(const QHash< QPair< QString, int >, QString > &assignments)
QString assignmentIdForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const override
Raw assignment id for a (screen, desktop, activity) context.
QString snappingLayoutForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
Per-field cascade readers — return the named field from the first entry in the cascade where it is no...
void setSnappingLayoutPreservingMode(const QString &screenId, int virtualDesktop, const QString &activity, const QString &layoutId)
Update only the snappingLayout field for the (screenId, virtualDesktop, activity) entry,...
void setQuickLayoutSlot(int number, const QString &layoutId)
int currentVirtualDesktop() const override
Definition LayoutRegistry.h:393
void exportLayout(Layout *layout, const QString &filePath)
Layout * duplicateLayout(Layout *source) override
int layoutCount() const override
Definition LayoutRegistry.h:78
void setTilingAlgorithmPreservingMode(const QString &screenId, int virtualDesktop, const QString &activity, const QString &algorithmId)
Update only the tilingAlgorithm field, mirroring setSnappingLayoutPreservingMode for the tiling slot.
void setActiveLayoutById(const QUuid &id) override
void setTilingAlgorithmPromoting(const QString &screenId, int virtualDesktop, const QString &activity, const QString &algorithmId)
Symmetric promoting variant for the tile field; forces mode=Autotile after wiping shadows.
Layout * layoutForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const override
Cascade-resolve the manual layout for screenId.
void setAssignmentEntryDirect(const QString &screenId, int virtualDesktop, const QString &activity, const AssignmentEntry &entry)
Store a full entry directly (from KCM via D-Bus).
void cycleToNextLayout(const QString &screenId)
void setAllActivityAssignments(const QHash< QPair< QString, QString >, QString > &assignments)
void setAllScreenAssignments(const QHash< QString, QString > &assignments)
Batch setters - clear existing, set new, save once at end.
Layout * resolveLayoutForScreen(const QString &screenId) const override
Resolve layout for screenId using the current desktop/activity context.
Definition LayoutRegistry.h:296
Layout * activeLayout() const override
Definition LayoutRegistry.h:95
bool hasExplicitAssignment(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
void cycleToPreviousLayout(const QString &screenId)
void addLayout(Layout *layout) override
QHash< QPair< QString, int >, QString > desktopAssignments() const
Layout * layout(int index) const override
void setSnappingLayoutPromoting(const QString &screenId, int virtualDesktop, const QString &activity, const QString &layoutId)
"Promote" variant of setSnappingLayoutPreservingMode used when the user's current rendered context is...
void setAllQuickLayoutSlots(const QHash< int, QString > &slots)
void setLayoutDirectory(const QString &directory)
void applyQuickLayout(int number, const QString &screenId)
void saveAutotileOverrides(const QString &algorithmId, const QJsonObject &overrides)
~LayoutRegistry() override
void assignLayoutById(const QString &screenId, int virtualDesktop, const QString &activity, const QString &layoutId)
Layout * previousLayout() const
Get the previous active layout (before the most recent setActiveLayout).
Definition LayoutRegistry.h:218
void setSnappingPreferredProvider(std::function< bool()> provider)
Inject a callback that returns true when Snapping is the user's preferred default mode (regardless of...
void setCurrentActivity(const QString &activity)
Definition LayoutRegistry.h:405
Layout * defaultLayout() const override
Resolve the effective default layout.
void removeLayoutById(const QUuid &id) override
void clearAssignment(const QString &screenId, int virtualDesktop=0, const QString &activity=QString())
void clearAutotileAssignments()
Flip mode to Snapping for every entry currently in Autotile (preserves snappingLayout + tilingAlgorit...
QString tilingAlgorithmForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
void setCurrentVirtualDesktop(int desktop)
Definition LayoutRegistry.h:401
AssignmentEntry assignmentEntryForScreen(const QString &screenId, int virtualDesktop=0, const QString &activity=QString()) const
Full entry for a (screen, desktop, activity) context.
Layout * layoutByName(const QString &name) const override
QJsonObject loadAutotileOverrides(const QString &algorithmId) const
Layout * layoutById(const QUuid &id) const override
Resolve a layout by its stable UUID.
void importLayout(const QString &filePath)
void removeLayout(Layout *layout) override
QHash< int, QString > quickLayoutSlots() const
Definition LayoutRegistry.h:376
QString currentActivity() const override
Definition LayoutRegistry.h:397
void setDefaultLayoutIdProvider(std::function< QString()> provider)
Inject a callback that returns the user-configured default layout id (or empty if unset).
QHash< QPair< QString, QString >, QString > activityAssignments() const
void layoutDirectoryChanged()
void setDefaultAutotileAlgorithmProvider(std::function< QString()> provider)
Inject a callback that returns the user-configured default autotile algorithm id (or empty if autotil...
void saveLayout(Layout *layout)
QVector< Layout * > builtInLayouts() const
Layout * layoutForShortcut(int number) const
void setActiveLayout(Layout *layout) override
void assignLayout(const QString &screenId, int virtualDesktop, const QString &activity, Layout *layout)
void createBuiltInLayouts()
QVector< Layout * > layouts() const override
Enumerate every known layout.
Definition LayoutRegistry.h:82
Represents a collection of zones that form a layout.
Definition Layout.h:74
Definition IWindowTrackingService.h:22
Explicit per-context assignment entry storing both mode fields.
Definition AssignmentEntry.h:86
Mode
Definition AssignmentEntry.h:87