File indexing completed on 2024-05-05 05:37:32
0001 /* 0002 SPDX-FileCopyrightText: 2011 Lionel Chauvin <megabigbug@yahoo.fr> 0003 SPDX-FileCopyrightText: 2011, 2012 Cédric Bellegarde <gnumdk@gmail.com> 0004 SPDX-FileCopyrightText: 2016 Kai Uwe Broulik <kde@privat.broulik.de> 0005 0006 SPDX-License-Identifier: MIT 0007 */ 0008 0009 #pragma once 0010 0011 // Qt 0012 #include <QDBusArgument> 0013 #include <QDBusContext> 0014 #include <QDBusObjectPath> 0015 #include <QObject> 0016 #include <QWidget> // For WId 0017 0018 class QDBusServiceWatcher; 0019 0020 class MenuImporter : public QObject, protected QDBusContext 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 explicit MenuImporter(QObject *); 0026 ~MenuImporter() override; 0027 0028 bool connectToBus(); 0029 0030 bool serviceExist(WId id) 0031 { 0032 return m_menuServices.contains(id); 0033 } 0034 QString serviceForWindow(WId id) 0035 { 0036 return m_menuServices.value(id); 0037 } 0038 0039 bool pathExist(WId id) 0040 { 0041 return m_menuPaths.contains(id); 0042 } 0043 QString pathForWindow(WId id) 0044 { 0045 return m_menuPaths.value(id).path(); 0046 } 0047 0048 QList<WId> ids() 0049 { 0050 return m_menuServices.keys(); 0051 } 0052 0053 Q_SIGNALS: 0054 void WindowRegistered(WId id, const QString &service, const QDBusObjectPath &); 0055 void WindowUnregistered(WId id); 0056 0057 public Q_SLOTS: 0058 Q_NOREPLY void RegisterWindow(WId id, const QDBusObjectPath &path); 0059 Q_NOREPLY void UnregisterWindow(WId id); 0060 QString GetMenuForWindow(WId id, QDBusObjectPath &path); 0061 0062 private Q_SLOTS: 0063 void slotServiceUnregistered(const QString &service); 0064 0065 private: 0066 QDBusServiceWatcher *m_serviceWatcher; 0067 QHash<WId, QString> m_menuServices; 0068 QHash<WId, QDBusObjectPath> m_menuPaths; 0069 QHash<WId, QString> m_windowClasses; 0070 };