work/plasma6
Lana Black 8 months ago
parent 0074c8856f
commit e4d5489861

@ -6,23 +6,24 @@
#include "tasktools.h" #include "tasktools.h"
#include <config-latte.h> #include <config-latte.h>
#include <KActivities/ResourceInstance> #include <PlasmaActivities/ResourceInstance>
#include <KApplicationTrader> #include <KApplicationTrader>
#include <KConfigGroup> #include <KConfigGroup>
#include <KDesktopFile> #include <KDesktopFile>
#include <kemailsettings.h> //#include <KMimeTypeTrader>
#include <KMimeTypeTrader> //#include <KServiceTypeTrader>
#include <KServiceTypeTrader>
#include <KSharedConfig> #include <KSharedConfig>
#include <KStartupInfo> #include <KStartupInfo>
#include <KWindowSystem> #include <KWindowSystem>
#include <KProcessList> #include <KProcessList>
#include <QtCore>
#include <QDir> #include <QDir>
#include <QGuiApplication> #include <QGuiApplication>
#include <QRegularExpression> #include <QRegularExpression>
#include <QScreen> #include <QScreen>
#include <QUrlQuery> #include <QUrlQuery>
#include <kservice.h>
#if HAVE_X11 #if HAVE_X11
#include <private/qtx11extras_p.h> #include <private/qtx11extras_p.h>
#endif #endif
@ -32,6 +33,45 @@ namespace Latte
namespace WindowSystem namespace WindowSystem
{ {
enum class AppSearchParam {
AppName,
ExecName,
CmdLine,
StartUpWMClass,
XWMClass
};
static KService::List searchApplication(AppSearchParam pm, const QString& arg) {
if(arg.isEmpty())
return {};
KApplicationTrader::FilterFunc filter = [&arg](const KService::Ptr&) {
qDebug() << "APPSEARCH default :: " << arg;
return false;
};
switch(pm) {
case AppSearchParam::AppName:
filter = [&arg](const KService::Ptr& s) {
qDebug() << "APPSEARCH AppName :: " << arg;
return s->isApplication() && s->name() == arg;
};
break;
case AppSearchParam::ExecName:
filter = [&arg](const KService::Ptr& s) {
qDebug() << "APPSEARCH ExecName :: " << arg;
return s->isApplication() && s->exec() == arg;
};
break;
case AppSearchParam::CmdLine:
filter = [&arg](const KService::Ptr& s) {
qDebug() << "APPSEARCH CmdLine :: " << arg;
return s->isApplication() && s->exec() == arg;
};
break;
}
return KApplicationTrader::query(filter);
}
AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon) AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
{ {
AppData data; AppData data;
@ -143,8 +183,10 @@ AppData appDataFromUrl(const QUrl &url, const QIcon &fallbackIcon)
return data; return data;
} }
QUrl windowUrlFromMetadata(const QString &appId, quint32 pid, QUrl windowUrlFromMetadata(const QString &appId,
KSharedConfig::Ptr rulesConfig, const QString &xWindowsWMClassName) quint32 pid,
KSharedConfig::Ptr rulesConfig,
const QString &xWindowsWMClassName)
{ {
if (!rulesConfig) { if (!rulesConfig) {
return QUrl(); return QUrl();
@ -491,8 +533,7 @@ KService::List servicesFromPid(quint32 pid, KSharedConfig::Ptr rulesConfig)
return servicesFromCmdLine(cmdLine, proc.name(), rulesConfig); return servicesFromCmdLine(cmdLine, proc.name(), rulesConfig);
} }
KService::List servicesFromCmdLine(const QString &_cmdLine, const QString &processName, KService::List servicesFromCmdLine(const QString &_cmdLine, const QString &processName, KSharedConfig::Ptr rulesConfig)
KSharedConfig::Ptr rulesConfig)
{ {
QString cmdLine = _cmdLine; QString cmdLine = _cmdLine;
KService::List services; KService::List services;

Loading…
Cancel
Save