File indexing completed on 2024-04-28 16:51:33
0001 /* 0002 SPDX-FileCopyrightText: 2017 Kai Uwe Broulik <kde@privat.broulik.de> 0003 SPDX-FileCopyrightText: 2017 David Edmundson <davidedmundson@kde.org> 0004 0005 SPDX-License-Identifier: MIT 0006 */ 0007 0008 #pragma once 0009 0010 #include "abstractbrowserplugin.h" 0011 0012 #include <QString> 0013 0014 struct EnvironmentDescription { 0015 QString applicationName; 0016 QString applicationDisplayName; 0017 QString desktopFileName; 0018 QString organizationDomain; 0019 QString organizationName; 0020 QString iconName; 0021 }; 0022 0023 namespace TaskManager 0024 { 0025 class WindowTasksModel; 0026 } 0027 0028 /* 0029 * This class manages the extension's settings (so that settings in the browser 0030 * propagate to our extension) and also detects the environment the host is run 0031 * in (e.g. whether we're started by Firefox, Chrome, Chromium, or Opera) 0032 */ 0033 class Settings : public AbstractBrowserPlugin 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 static Settings &self(); 0039 0040 enum class Environment { 0041 Unknown, 0042 Chrome, 0043 Chromium, 0044 Firefox, 0045 Opera, 0046 Vivaldi, 0047 Brave, 0048 Edge, 0049 }; 0050 Q_ENUM(Environment) 0051 0052 void handleData(const QString &event, const QJsonObject &data) override; 0053 QJsonObject handleData(int serial, const QString &event, const QJsonObject &data) override; 0054 0055 Environment environment() const; 0056 0057 bool pluginEnabled(const QString &subsystem) const; 0058 QJsonObject settingsForPlugin(const QString &subsystem) const; 0059 0060 Q_SIGNALS: 0061 void changed(const QJsonObject &settings); 0062 0063 private: 0064 Settings(); 0065 ~Settings() override = default; 0066 0067 bool setEnvironmentFromTasksModelIndex(const QModelIndex &idx); 0068 void setEnvironmentFromExtensionMessage(const QJsonObject &data); 0069 0070 static const QMap<Environment, QString> environmentNames; 0071 static const QMap<Environment, EnvironmentDescription> environmentDescriptions; 0072 0073 Environment m_environment = Environment::Unknown; 0074 EnvironmentDescription m_currentEnvironment; 0075 0076 QJsonObject m_settings; 0077 0078 TaskManager::WindowTasksModel *m_tasksModel; 0079 };