Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
snapnavigationtargets.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 <phosphorsnapengine_export.h>
9
10#include <QString>
11
12#include <functional>
13
14namespace PhosphorZones {
15class LayoutRegistry;
16}
17
18namespace PhosphorSnapEngine {
19
20class ISettings;
21class IZoneAdjacencyResolver;
22
53class PHOSPHORSNAPENGINE_EXPORT SnapNavigationTargetResolver
54{
55public:
60 using FeedbackFn =
61 std::function<void(bool success, const QString& action, const QString& reason, const QString& sourceZoneId,
62 const QString& targetZoneId, const QString& screenId)>;
63
73 PhosphorZones::LayoutRegistry* layoutManager, IZoneAdjacencyResolver* zoneAdjacency,
74 FeedbackFn feedback);
75
80
81 PhosphorProtocol::MoveTargetResult getMoveTargetForWindow(const QString& windowId, const QString& direction,
82 const QString& screenId);
83
84 PhosphorProtocol::FocusTargetResult getFocusTargetForWindow(const QString& windowId, const QString& direction,
85 const QString& screenId);
86
87 PhosphorProtocol::RestoreTargetResult getRestoreForWindow(const QString& windowId, const QString& screenId);
88
89 PhosphorProtocol::CycleTargetResult getCycleTargetForWindow(const QString& windowId, bool forward,
90 const QString& screenId);
91
92 PhosphorProtocol::SwapTargetResult getSwapTargetForWindow(const QString& windowId, const QString& direction,
93 const QString& screenId);
94
95 PhosphorProtocol::MoveTargetResult getPushTargetForWindow(const QString& windowId, const QString& screenId);
96
97 PhosphorProtocol::MoveTargetResult getSnapToZoneByNumberTarget(const QString& windowId, int zoneNumber,
98 const QString& screenId);
99
100private:
105 void emitFeedback(bool success, const QString& action, const QString& reason, const QString& sourceZoneId,
106 const QString& targetZoneId, const QString& screenId) const
107 {
108 if (m_feedback) {
109 m_feedback(success, action, reason, sourceZoneId, targetZoneId, screenId);
110 }
111 }
112
113 PhosphorEngine::IWindowTrackingService* m_service = nullptr;
114 PhosphorZones::LayoutRegistry* m_layoutManager = nullptr;
115 IZoneAdjacencyResolver* m_zoneAdjacency = nullptr;
116 FeedbackFn m_feedback;
117};
118
119} // namespace PhosphorSnapEngine
Definition IWindowTrackingService.h:33
Narrow interface for zone-adjacency queries used by snap navigation.
Definition IZoneAdjacencyResolver.h:28
Pure snap-mode navigation target resolver.
Definition snapnavigationtargets.h:54
PhosphorProtocol::RestoreTargetResult getRestoreForWindow(const QString &windowId, const QString &screenId)
PhosphorProtocol::SwapTargetResult getSwapTargetForWindow(const QString &windowId, const QString &direction, const QString &screenId)
void setZoneAdjacencyResolver(IZoneAdjacencyResolver *resolver)
Late setter for the zone adjacency resolver — it may not be available at construction time,...
PhosphorProtocol::MoveTargetResult getMoveTargetForWindow(const QString &windowId, const QString &direction, const QString &screenId)
SnapNavigationTargetResolver(PhosphorEngine::IWindowTrackingService *service, PhosphorZones::LayoutRegistry *layoutManager, IZoneAdjacencyResolver *zoneAdjacency, FeedbackFn feedback)
Construct the resolver with its pure dependencies.
std::function< void(bool success, const QString &action, const QString &reason, const QString &sourceZoneId, const QString &targetZoneId, const QString &screenId)> FeedbackFn
Callback shape matching WindowTrackingAdaptor::navigationFeedback.
Definition snapnavigationtargets.h:62
PhosphorProtocol::FocusTargetResult getFocusTargetForWindow(const QString &windowId, const QString &direction, const QString &screenId)
PhosphorProtocol::MoveTargetResult getSnapToZoneByNumberTarget(const QString &windowId, int zoneNumber, const QString &screenId)
PhosphorProtocol::CycleTargetResult getCycleTargetForWindow(const QString &windowId, bool forward, const QString &screenId)
PhosphorProtocol::MoveTargetResult getPushTargetForWindow(const QString &windowId, const QString &screenId)
Manual zone-layout registry + per-context assignment store.
Definition LayoutRegistry.h:48
constexpr QLatin1String LayoutRegistry("org.plasmazones.LayoutRegistry")
Definition WindowTrackingService.h:37
Definition IWindowTrackingService.h:22
D-Bus struct for cycle navigation result: (bssss)
Definition NavigationTypes.h:72
D-Bus struct for focus navigation result: (bsssss)
Definition NavigationTypes.h:61
D-Bus struct for move/push/zone-number navigation result: (bssiiiiss)
Definition NavigationTypes.h:42
D-Bus struct for restore navigation result: (bbiiii)
Definition NavigationTypes.h:104
D-Bus struct for swap navigation result: (bssiiiissiiiissss)
Definition NavigationTypes.h:82