6#include <QLatin1String>
25namespace VirtualScreenId {
42 return (sep > 0) ? screenId.left(sep) : screenId;
54 int index = screenId.mid(sep +
Separator.size()).toInt(&ok);
55 return (ok && index >= 0) ? index : -1;
60inline QString
make(
const QString& physicalScreenId,
int index)
62 if (physicalScreenId.isEmpty() || index < 0) {
65 return physicalScreenId +
Separator + QString::number(index);
81 if (oldScreenId.isEmpty() || newScreenId.isEmpty() || oldScreenId == newScreenId) {
QString extractPhysicalId(const QString &screenId)
Extract the physical screen ID from a virtual screen ID.
Definition VirtualScreenId.h:39
bool isVirtual(const QString &screenId)
Check if a screen ID is a virtual screen ID (contains "/vs:").
Definition VirtualScreenId.h:31
int extractIndex(const QString &screenId)
Extract the virtual screen index from a virtual screen ID.
Definition VirtualScreenId.h:47
QString make(const QString &physicalScreenId, int index)
Construct a virtual screen ID from physical ID and index.
Definition VirtualScreenId.h:60
constexpr QLatin1String Separator
Separator between physical screen ID and virtual index.
Definition VirtualScreenId.h:28
bool samePhysical(const QString &idA, const QString &idB)
Check if two screen IDs share the same physical screen.
Definition VirtualScreenId.h:70
bool isVirtualScreenCrossing(const QString &oldScreenId, const QString &newScreenId)
Detect a virtual-screen crossing: the screen IDs differ, but both belong to the same physical monitor...
Definition VirtualScreenId.h:79