From 49daa163530ceabc9eaa8911ab96b5f799cfb552 Mon Sep 17 00:00:00 2001 From: Fabien Proriol Date: Sun, 25 May 2025 17:58:09 +0200 Subject: Initial Commit --- src/applicationmanager.cpp | 127 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 src/applicationmanager.cpp (limited to 'src/applicationmanager.cpp') diff --git a/src/applicationmanager.cpp b/src/applicationmanager.cpp new file mode 100644 index 0000000..13158f3 --- /dev/null +++ b/src/applicationmanager.cpp @@ -0,0 +1,127 @@ +#include "applicationmanager.h" +#include "waylandentries.h" +#include +#include + +ApplicationManager::ApplicationManager(QObject *parent) + : QObject(parent) +{ + +} + +bool ApplicationManager::isHome() const +{ + return m_isHome; +} + +QObject *ApplicationManager::currentSurface() const +{ + return m_currentSurface; +} + +void ApplicationManager::setCurrentSurface(QObject *newCurrentSurface) +{ + if (m_currentSurface == newCurrentSurface) + { + emit currentSurfaceChanged(); + return; + } + m_currentSurface = newCurrentSurface; + emit currentSurfaceChanged(); +} + +int ApplicationManager::count() +{ + WaylandEntries *entries = WaylandEntries::getInstance(); + if(!entries) + return 0; + return entries->rowCount(); +} + +QString ApplicationManager::applicationName(int id) +{ + WaylandEntries *entries = WaylandEntries::getInstance(); + if(!entries) + return ""; + return entries->data(entries->index(id), WaylandEntries::TitleRole).toString(); +} + +int ApplicationManager::applicationPid(int id) +{ + WaylandEntries *entries = WaylandEntries::getInstance(); + if(!entries) + return 0; + return entries->data(entries->index(id), WaylandEntries::PidRole).toInt(); +} + +int ApplicationManager::applicationFocus(int id) +{ + WaylandEntries *entries = WaylandEntries::getInstance(); + if(!entries) + return -1; + if(id >= entries->rowCount()) + return -2; + QVariant d = entries->data(entries->index(id), WaylandEntries::SurfaceRole); + if(!d.isValid()) + return -3; + QWaylandXdgSurface *surface = qvariant_cast(d); + if(surface) + { + setCurrentSurface(surface); + return 0; + } + return -4; +} + +int ApplicationManager::currentApplicationPid() +{ + if(isHome()) + return -1; + WaylandEntries *entries = WaylandEntries::getInstance(); + for(int i = 0; i < entries->rowCount(); i++) + { + QVariant d = entries->data(entries->index(i), WaylandEntries::SurfaceRole); + QWaylandXdgSurface *surface = qvariant_cast(d); + QWaylandXdgSurface *current = qobject_cast(currentSurface()); + if(surface != current) + continue; + return entries->data(entries->index(i), WaylandEntries::PidRole).toInt(); + } + return -2; +} + +void ApplicationManager::hideApplicationPid(qint64 pid) +{ + WaylandEntries *entries = WaylandEntries::getInstance(); + entries->addHidePid(pid); +} + +void ApplicationManager::raiseApplicationPid(qint64 pid) +{ + WaylandEntries *entries = WaylandEntries::getInstance(); + QObject *d = entries->getSurface(pid); + QWaylandXdgSurface *surface = qobject_cast(d); + if(surface) + { + setCurrentSurface(surface); + } +} + +void ApplicationManager::backHome() +{ + emit gotoHome(); +} + +void ApplicationManager::setIsHome(bool isHome) +{ + if (m_isHome == isHome) + return; + + m_isHome = isHome; + emit isHomeChanged(m_isHome); +} + +QString ApplicationManager::virtualkeyboard() +{ + return qgetenv("QT_IM_MODULE"); +} -- cgit v1.2.3