//!wrt $BSPEC:{"icn":null,"cpr":"Copyright (C) Windows 96 Team 2021.","dsc":"","frn":"Dynamic Wallpaper Preferences","ver":1,"ssy":"gui"}

const{Theme:Theme,MsgBoxSimple:MsgBoxSimple,OpenFileDialog:OpenFileDialog}=w96.ui,{execFile:execFile}=w96.sys,{WindowParams:WindowParams}=w96;class DynamicWPSettings extends WApplication{constructor(){super()}async main(e){super.main(e),await FS.exists("c:/system/wallpapers/dynamic")||await FS.mkdir("c:/system/wallpapers/dynamic");const t=new WindowParams;t.initialHeight=315,t.initialWidth=292,t.title="Dynamic Wallpaper Settings",t.resizable=!1,this.wnd=this.createWindow(t,!0),this.wnd.registerWindow(),this.wnd.registerAppBar(),this.wnd.setControlBoxStyle("WS_CBX_CLOSE"),this.wnd.setWindowIcon(await Theme.getIconUrl("apps/dynwp","16x16"));const n=this.wnd.getBodyContainer();n.classList.add("dynwp-app"),n.innerHTML='<span class="bold-noaa">\n            Preview\n        </span>\n        \n        <iframe class="preview" src="data:text/html;base64,PHN0eWxlPmJvZHkge2JhY2tncm91bmQ6YmxhY2s7fTwvc3R5bGU+"></iframe>\n        <div class="field">\n            <span class="bold-noaa">\n                Built-in dynwallpapers\n            </span>\n            <select class="w96-textbox dwp-default-box">\n                \x3c!--<option value="C:/system/wallpapers/dynamic/classic.dwp">classic.dwp</option>--\x3e\n            </select>\n        </div>\n        <div class="field custom">\n            <span class="bold-noaa">Custom dynwallpaper</span>\n            <div>\n                <input class="w96-textbox custom" type="text" readonly>\n                <button class="w96-button browse">Browse</button>  \n            </div>\n        </div>\n        <div class="buttons">\n            <button class="w96-button left inspect">Inspect...</button>\n            <button class="w96-button cancel">Cancel</button>\n            <button class="w96-button apply">Apply</button>\n        </div>';const s=n.querySelector(".dwp-default-box");for(let e of await FS.readdir("c:/system/wallpapers/dynamic")){let t=FSUtil.fname(e);const n=document.createElement("option");n.value=e,n.innerText=t,s.appendChild(n)}if(s.addEventListener("change",(e=>{const t=s.options[s.selectedIndex].value;this.loadWpPreview(t)})),null!=s.options[s.selectedIndex]){const e=s.options[s.selectedIndex].value;this.loadWpPreview(e)}n.querySelector("button.inspect").addEventListener("click",(()=>{this.selectedWpPath&&execFile(this.selectedWpPath)})),n.querySelector("button.cancel").addEventListener("click",(()=>this.terminate())),n.querySelector("button.browse").addEventListener("click",(()=>{new OpenFileDialog("c:/system/wallpapers/dynamic",[".dwp",".DWP"],(e=>{e&&(this.loadWpPreview(e),n.querySelector("input.custom").value=e)})).show()})),n.querySelector("button.apply").addEventListener("click",(async()=>{this.selectedWpPath&&await w96.evt.shell.emit("config-modify",{background:{type:"iframe",bg:this.selectedWp.url}})})),this.wnd.show(),this.wnd.center()}async loadWpPreview(e){try{const t=await FS.readstr(e),n=JSON.parse(t);this.selectedWp=n,this.selectedWpPath=e,n.properties||(n.properties={}),this.wnd.getBodyContainer().querySelector("iframe").src=n.url+"?opts="+encodeURIComponent(btoa(JSON.stringify(n.properties)))}catch(e){MsgBoxSimple.error("Error","Failed to load wallpaper.","OK")}}}

return await WApplication.execAsync(new DynamicWPSettings(), this.boxedEnv.args, this);