File indexing completed on 2024-05-19 05:38:01
0001 /* 0002 SPDX-FileCopyrightText: 2023 Thenujan Sandramohan <sthenujan2002@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QDBusConnection> 0010 #include <QDBusObjectPath> 0011 #include <QObject> 0012 0013 class QDBusPendingCallWatcher; 0014 0015 class Unit : public QObject 0016 { 0017 Q_OBJECT 0018 Q_PROPERTY(QString activeState MEMBER m_activeState NOTIFY dataChanged); 0019 Q_PROPERTY(QString activeStateValue MEMBER m_activeStateValue NOTIFY dataChanged); 0020 Q_PROPERTY(QString description MEMBER m_description NOTIFY dataChanged); 0021 Q_PROPERTY(QString timeActivated MEMBER m_timeActivated NOTIFY dataChanged); 0022 Q_PROPERTY(QString logs MEMBER m_logs NOTIFY dataChanged); 0023 Q_PROPERTY(bool invalid MEMBER m_invalid NOTIFY dataChanged); 0024 0025 public: 0026 explicit Unit(QObject *parent = nullptr, bool invalid = false); 0027 ~Unit() override; 0028 0029 void setId(const QString &id); 0030 0031 Q_INVOKABLE void start(); 0032 Q_INVOKABLE void stop(); 0033 Q_INVOKABLE void reloadLogs(); 0034 0035 Q_SIGNALS: 0036 void journalError(const QString &message); 0037 void error(const QString &message); 0038 void dataChanged(); 0039 0040 private Q_SLOTS: 0041 void dbusPropertiesChanged(QString name, QVariantMap map, QStringList list); 0042 void callFinishedSlot(QDBusPendingCallWatcher *call); 0043 0044 private: 0045 void loadAllProperties(); 0046 void setActiveEnterTimestamp(qulonglong ActiveEnterTimestamp); 0047 void getAllCallback(QDBusPendingCallWatcher *call); 0048 QStringList getLastJournalEntries(const QString &unit); 0049 0050 QString m_id; 0051 QString m_description; 0052 QString m_activeState; 0053 QString m_activeStateValue; 0054 QString m_timeActivated; 0055 QString m_logs; 0056 QDBusObjectPath m_dbusObjectPath; 0057 bool m_invalid; 0058 0059 const QString m_connSystemd = QStringLiteral("org.freedesktop.systemd1"); 0060 const QString m_pathSysdMgr = QStringLiteral("/org/freedesktop/systemd1"); 0061 const QString m_ifaceMgr = QStringLiteral("org.freedesktop.systemd1.Manager"); 0062 const QString m_ifaceUnit = QStringLiteral("org.freedesktop.systemd1.Unit"); 0063 QDBusConnection m_sessionBus = QDBusConnection::sessionBus(); 0064 }; 0065 0066 Q_DECLARE_METATYPE(Unit);