diff options
| author | Ja.KooLit <85185940+JaKooLit@users.noreply.github.com> | 2025-06-15 17:08:35 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-15 17:08:35 +0000 |
| commit | 88abbee9fe56f2e2489f04a017daaf3cfdc97511 (patch) | |
| tree | c229832f852a3e55b41addcfc675d3ceb3df2282 /config/quickshell/modules/common/functions/object_utils.js | |
| parent | 4cf0d0bd5930da76e60f6770de3ee97c10ca7024 (diff) | |
| parent | d46077fe5ac56afbd63dc1222e649f10435b05e2 (diff) | |
Merge pull request #737 from SherLock707/overviewV2_qs
Overview Widget v2: Migration from AGS to QuickShell
Diffstat (limited to 'config/quickshell/modules/common/functions/object_utils.js')
| -rw-r--r-- | config/quickshell/modules/common/functions/object_utils.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/config/quickshell/modules/common/functions/object_utils.js b/config/quickshell/modules/common/functions/object_utils.js new file mode 100644 index 00000000..96c632fd --- /dev/null +++ b/config/quickshell/modules/common/functions/object_utils.js @@ -0,0 +1,45 @@ +function toPlainObject(qtObj) { + if (qtObj === null || typeof qtObj !== "object") return qtObj; + + // Handle arrays + if (Array.isArray(qtObj)) { + return qtObj.map(toPlainObject); + } + + const result = ({}); + for (let key in qtObj) { + if ( + typeof qtObj[key] !== "function" && + !key.startsWith("objectName") && + !key.startsWith("children") && + !key.startsWith("object") && + !key.startsWith("parent") && + !key.startsWith("metaObject") && + !key.startsWith("destroyed") && + !key.startsWith("reloadableId") + ) { + result[key] = toPlainObject(qtObj[key]); + } + } + return result; +} + +function applyToQtObject(qtObj, jsonObj) { + if (!qtObj || typeof jsonObj !== "object" || jsonObj === null) return; + + for (let key in jsonObj) { + if (!qtObj.hasOwnProperty(key)) continue; + + // Check if the property is a QtObject (not a value) + const value = qtObj[key]; + const jsonValue = jsonObj[key]; + + // If it's an object and not an array, recurse + if (value && typeof value === "object" && !Array.isArray(value)) { + applyToQtObject(value, jsonValue); + } else { + // Otherwise, assign the value + qtObj[key] = jsonValue; + } + } +} |
