Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
NavigationController.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 <phosphortileengine_export.h>
7#include <QString>
8#include <QStringList>
9#include <functional>
10
11namespace PhosphorTiles {
12class TilingState;
13}
14
15namespace PhosphorTileEngine {
16
17class AutotileEngine;
18
32class PHOSPHORTILEENGINE_EXPORT NavigationController
33{
34public:
36
37 // ═══════════════════════════════════════════════════════════════════════════
38 // Focus/window cycling
39 // ═══════════════════════════════════════════════════════════════════════════
40
41 void focusNext();
44
45 // ═══════════════════════════════════════════════════════════════════════════
46 // Window swapping & rotation
47 // ═══════════════════════════════════════════════════════════════════════════
48
50 void rotateWindowOrder(bool clockwise);
56 void swapFocusedInDirection(const QString& direction, const QString& action,
57 const QString& explicitWindowId = QString());
58 void focusInDirection(const QString& direction, const QString& action, const QString& explicitWindowId = QString());
59 void moveFocusedToPosition(int position, const QString& explicitWindowId = QString());
60
61 // ═══════════════════════════════════════════════════════════════════════════
62 // Split ratio adjustment
63 // ═══════════════════════════════════════════════════════════════════════════
64
65 void increaseMasterRatio(qreal delta);
66 void decreaseMasterRatio(qreal delta);
67 void setGlobalSplitRatio(qreal ratio);
68 void setGlobalMasterCount(int count);
69
70 // ═══════════════════════════════════════════════════════════════════════════
71 // Master count adjustment
72 // ═══════════════════════════════════════════════════════════════════════════
73
74 void adjustMasterCount(int delta);
75
76private:
83 QString resolveActiveScreen() const;
84
91 PhosphorTiles::TilingState* resolveActiveState(QString& outScreenId) const;
92
96 void emitFocusRequestAtIndex(int indexOffset, bool useFirst = false);
97
106 QStringList tiledWindowsForFocusedScreen(QString& outScreenId, PhosphorTiles::TilingState*& outState,
107 const QString& explicitWindowId = QString());
108
112 void applyToAllStates(const std::function<void(PhosphorTiles::TilingState*)>& operation);
113
114 AutotileEngine* m_engine = nullptr;
115};
116
117} // namespace PhosphorTileEngine
Core engine for automatic window tiling.
Definition AutotileEngine.h:89
Handles navigation, focus cycling, and ratio/count adjustments.
Definition NavigationController.h:33
void focusInDirection(const QString &direction, const QString &action, const QString &explicitWindowId=QString())
void swapFocusedInDirection(const QString &direction, const QString &action, const QString &explicitWindowId=QString())
explicitWindowId (when non-empty) overrides the state's internal focusedWindow() for the operation.
void moveFocusedToPosition(int position, const QString &explicitWindowId=QString())
NavigationController(AutotileEngine *engine)
Tracks tiling state for a single screen.
Definition TilingState.h:40
Definition AutotileConfig.h:14
Definition AutotileEngine.h:71