You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.2 KiB
89 lines
2.2 KiB
class Power { |
|
constructor() { |
|
this._shutdown = document.querySelector("#shutdown-button"); |
|
this._restart = document.querySelector("#restart-button"); |
|
this._hibernate = document.querySelector("#hibernate-button"); |
|
this._suspend = document.querySelector("#suspend-button"); |
|
this._cover = document.querySelector("#cover"); |
|
this._covermsg = document.querySelector("#cover > #message"); |
|
this._init(); |
|
} |
|
|
|
_show_message(text) { |
|
this._covermsg.innerHTML = text; |
|
this._cover.classList.remove("hide"); |
|
wait(500).then(() => { |
|
this._cover.focus(); |
|
}); |
|
} |
|
|
|
async _do_shutdown() { |
|
this._show_message("Shutting down"); |
|
await wait(1000); |
|
lightdm.shutdown(); |
|
} |
|
async _do_restart() { |
|
this._show_message("Restarting"); |
|
await wait(1000); |
|
lightdm.restart(); |
|
} |
|
async _do_hibernate() { |
|
this._show_message("Hibernating"); |
|
await wait(1000); |
|
lightdm.hibernate(); |
|
} |
|
async _do_suspend() { |
|
this._show_message("Suspending"); |
|
await wait(1000); |
|
lightdm.suspend(); |
|
} |
|
|
|
_setShutdown() { |
|
if (!lightdm.can_shutdown) return; |
|
this._shutdown.addEventListener("click", () => { |
|
this._do_shutdown(); |
|
}); |
|
this._shutdown.classList.remove("hide"); |
|
} |
|
_setRestart() { |
|
if (!lightdm.can_restart) return; |
|
this._restart.addEventListener("click", () => { |
|
this._do_restart(); |
|
}); |
|
this._restart.classList.remove("hide"); |
|
} |
|
_setHibernate() { |
|
if (!lightdm.can_hibernate) return; |
|
this._hibernate.addEventListener("click", () => { |
|
this._do_hibernate(); |
|
}); |
|
this._hibernate.classList.remove("hide"); |
|
} |
|
_setSuspend() { |
|
if (!lightdm.can_suspend) return; |
|
this._suspend.addEventListener("click", () => { |
|
this._do_suspend(); |
|
}); |
|
this._suspend.classList.remove("hide"); |
|
} |
|
_setCover() { |
|
this._cover.addEventListener("click", () => { |
|
this._cover.classList.add("hide"); |
|
}); |
|
this._cover.addEventListener("keydown", () => { |
|
this._cover.classList.add("hide"); |
|
}); |
|
} |
|
|
|
_setButtons() { |
|
this._setShutdown(); |
|
this._setRestart(); |
|
this._setHibernate(); |
|
this._setSuspend(); |
|
this._setCover(); |
|
} |
|
|
|
_init() { |
|
this._setButtons(); |
|
} |
|
}
|
|
|