Rabbit Remote Control 0.1.0-bate14
Loading...
Searching...
No Matches
ProtocolManager.h
1#pragma once
2
3#include <QObject>
4#include <QStringList>
5#include <QMap>
6#include <QUrl>
7#include <QWebEngineProfile>
8
9class CProtocolManager : public QObject
10{
11 Q_OBJECT
12public:
13 explicit CProtocolManager(QObject *parent = nullptr);
14
15 // 获取所有已注册的协议
16 QStringList getAllRegisteredProtocols();
17
18 // 获取特定协议的默认处理程序
19 QString getDefaultHandlerForProtocol(const QString &protocol);
20
21 // 检查协议是否已注册
22 bool isProtocolRegistered(const QString &protocol);
23
24 // 获取协议关联的应用列表
25 QStringList getApplicationsForProtocol(const QString &protocol);
26
27 // 获取所有协议及其关联应用
28 QMap<QString, QStringList> getAllProtocolsWithApps();
29
30 void registerAllProcotol(QWebEngineProfile* profile = QWebEngineProfile::defaultProfile());
31
32private:
33 // 平台特定的实现
34 QStringList getRegisteredProtocolsLinux();
35 QStringList getRegisteredProtocolsWindows();
36 QStringList getRegisteredProtocolsMacOS();
37 void scanDesktopFilesForProtocols(QStringList &protocols);
38 void parseDesktopFile(const QString &filePath, QStringList &protocols);
39
40 // 辅助方法
41 QString getDefaultHandlerLinux(const QString &protocol);
42 QString getDefaultHandlerWindows(const QString &protocol);
43 QString getDefaultHandlerMacOS(const QString &protocol);
44};