File indexing completed on 2025-02-09 06:35:13

0001 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0002 // SPDX-FileCopyrightText: 2020-2021 Harald Sitter <sitter@kde.org>
0003 
0004 #pragma once
0005 
0006 #include <KService>
0007 #include <QObject>
0008 
0009 class ServiceRunner : public QObject
0010 {
0011     Q_OBJECT
0012     Q_PROPERTY(QString desktopFileName READ desktopFileName WRITE setDesktopFileName NOTIFY desktopFileNameChanged)
0013     Q_PROPERTY(QString genericName READ genericName NOTIFY changed)
0014     Q_PROPERTY(QString iconName READ iconName NOTIFY changed)
0015     Q_PROPERTY(bool canRun READ canRun NOTIFY changed)
0016 public:
0017     using QObject::QObject;
0018 
0019     Q_INVOKABLE void run();
0020 
0021     QString desktopFileName() const;
0022     void setDesktopFileName(const QString &name);
0023 
0024     QString genericName() const;
0025     QString iconName() const;
0026     bool canRun() const;
0027 
0028 Q_SIGNALS:
0029     void desktopFileNameChanged();
0030     void changed();
0031 
0032 private:
0033     QString m_desktopFileName;
0034     QString m_genericName;
0035     QString m_iconName;
0036     KService::Ptr m_service{nullptr};
0037 };