File indexing completed on 2024-05-12 16:23:46
0001 // SPDX-FileCopyrightText: 2021 Jonah BrĂ¼chert <jbb@kaidan.im> 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #pragma once 0006 0007 #include <QDir> 0008 #include <QObject> 0009 0010 #include <memory> 0011 0012 struct WebApp { 0013 QString name; 0014 QString icon; 0015 QString url; 0016 }; 0017 0018 class WebAppManager : public QObject 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 explicit WebAppManager(QObject *parent = nullptr); 0024 0025 static QString desktopFileDirectory(); 0026 static QString iconDirectory(); 0027 const std::vector<WebApp> &applications() const; 0028 0029 void addApp(const QString &name, const QString &url, const QImage &icon); 0030 bool exists(const QString &name); 0031 bool removeApp(const QString &name); 0032 0033 static WebAppManager &instance(); 0034 0035 Q_SIGNALS: 0036 void applicationsChanged(); 0037 0038 private: 0039 static QString generateFileName(const QString &name); 0040 static QString generateDesktopFileName(const QString &name); 0041 static QString webAppCommand(); 0042 0043 private: 0044 QDir m_desktopFileDirectory; 0045 std::vector<WebApp> m_webApps; 0046 };