1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 21:42:51 -05:00

themes: incorporate theme registry, browser, dms URI scheme handling

This commit is contained in:
bbedward
2025-12-21 22:03:48 -05:00
parent 67ee74ac20
commit b4f83d09d4
28 changed files with 1924 additions and 58 deletions

View File

@@ -16,6 +16,8 @@ Singleton {
readonly property int expectedApiVersion: 1
property var availablePlugins: []
property var installedPlugins: []
property var availableThemes: []
property var installedThemes: []
property bool isConnected: false
property bool isConnecting: false
property bool subscribeConnected: false
@@ -33,6 +35,9 @@ Singleton {
signal pluginsListReceived(var plugins)
signal installedPluginsReceived(var plugins)
signal searchResultsReceived(var plugins)
signal themesListReceived(var themes)
signal installedThemesReceived(var themes)
signal themeSearchResultsReceived(var themes)
signal operationSuccess(string message)
signal operationError(string error)
signal connectionStateChanged
@@ -514,6 +519,82 @@ Singleton {
});
}
function listThemes(callback) {
sendRequest("themes.list", null, response => {
if (response.result) {
availableThemes = response.result;
themesListReceived(response.result);
}
if (callback) {
callback(response);
}
});
}
function listInstalledThemes(callback) {
sendRequest("themes.listInstalled", null, response => {
if (response.result) {
installedThemes = response.result;
installedThemesReceived(response.result);
}
if (callback) {
callback(response);
}
});
}
function searchThemes(query, callback) {
sendRequest("themes.search", {
"query": query
}, response => {
if (response.result) {
themeSearchResultsReceived(response.result);
}
if (callback) {
callback(response);
}
});
}
function installTheme(themeName, callback) {
sendRequest("themes.install", {
"name": themeName
}, response => {
if (callback) {
callback(response);
}
if (!response.error) {
listInstalledThemes();
}
});
}
function uninstallTheme(themeName, callback) {
sendRequest("themes.uninstall", {
"name": themeName
}, response => {
if (callback) {
callback(response);
}
if (!response.error) {
listInstalledThemes();
}
});
}
function updateTheme(themeName, callback) {
sendRequest("themes.update", {
"name": themeName
}, response => {
if (callback) {
callback(response);
}
if (!response.error) {
listInstalledThemes();
}
});
}
function lockSession(callback) {
sendRequest("loginctl.lock", null, callback);
}