feat: init quickshell
This commit is contained in:
48
modules/desktop/quickshell/qml/Core/LoaderManager.qml
Normal file
48
modules/desktop/quickshell/qml/Core/LoaderManager.qml
Normal file
@@ -0,0 +1,48 @@
|
||||
import QtQuick
|
||||
|
||||
QtObject {
|
||||
id: root
|
||||
|
||||
// Keep track of loaded components
|
||||
property var activeLoaders: ({})
|
||||
|
||||
// Dynamically load a QML component
|
||||
function load(componentUrl, parent, properties) {
|
||||
if (!activeLoaders[componentUrl]) {
|
||||
var loader = Qt.createQmlObject(`
|
||||
import QtQuick
|
||||
Loader {
|
||||
active: false
|
||||
asynchronous: true
|
||||
visible: false
|
||||
}
|
||||
`, parent);
|
||||
|
||||
loader.source = componentUrl;
|
||||
loader.active = true;
|
||||
|
||||
if (properties) {
|
||||
for (var prop in properties) {
|
||||
loader[prop] = properties[prop];
|
||||
}
|
||||
}
|
||||
|
||||
activeLoaders[componentUrl] = loader;
|
||||
}
|
||||
return activeLoaders[componentUrl];
|
||||
}
|
||||
|
||||
// Destroy and remove a loaded component
|
||||
function unload(componentUrl) {
|
||||
if (activeLoaders[componentUrl]) {
|
||||
activeLoaders[componentUrl].active = false;
|
||||
activeLoaders[componentUrl].destroy();
|
||||
delete activeLoaders[componentUrl];
|
||||
}
|
||||
}
|
||||
|
||||
// Check if a component is loaded
|
||||
function isLoaded(componentUrl) {
|
||||
return !!activeLoaders[componentUrl];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user