(appName, msgBox)
| 694 | * @returns {0 | 1 | 2} 0 -> app doesn't exist, 1 -> app opened, 2 -> app was already opened |
| 695 | */ |
| 696 | const OpenApp = (appName, msgBox) => { |
| 697 | openedApps.push(appName); |
| 698 | |
| 699 | let elem = document.getElementById("app-"+appName); |
| 700 | if (!elem) { |
| 701 | if (Applications[appName] && !Applications[appName].usable) { |
| 702 | MessageBox("error", GetLocale("os_error"), GetLocale("os_fake_error").replace("{1}", appName)); |
| 703 | return 1; |
| 704 | } |
| 705 | |
| 706 | return 0; |
| 707 | } |
| 708 | elem.style.display = "flex"; |
| 709 | elem.style.visibility = "visible"; |
| 710 | |
| 711 | let wasOpen = true; |
| 712 | let taskbarIcon = document.getElementById("taskbar-"+appName); |
| 713 | |
| 714 | if (!taskbarIcon) { |
| 715 | wasOpen = false; |
| 716 | let taskbar = document.getElementById("left"); |
| 717 | taskbarIcon = document.createElement("button"); |
| 718 | taskbarIcon.id = "taskbar-"+appName; |
| 719 | taskbarIcon.classList.add("taskbar-icon"); |
| 720 | taskbarIcon.innerHTML = `<img src="assets/images/${msgBox ? appName.split("_")[1] : appName}.png">`; |
| 721 | taskbarIcon.onclick = () => { |
| 722 | if (elem.style.visibility === "hidden" || elem.style.zIndex < 9999999) { |
| 723 | FocusApp(false, appName); |
| 724 | elem.style.visibility = "visible"; |
| 725 | |
| 726 | if (appName == "console") { |
| 727 | let consoleInput = document.getElementById("console-input"); |
| 728 | if (consoleInput) consoleInput.focus(); |
| 729 | } |
| 730 | } |
| 731 | else { |
| 732 | MinimizeApp(appName); |
| 733 | } |
| 734 | } |
| 735 | taskbar.appendChild(taskbarIcon); |
| 736 | } |
| 737 | |
| 738 | elem.onmousedown = (e) => FocusApp(e, appName); |
| 739 | document.body.onmousedown = () => UnfocusAllApp(); |
| 740 | FocusApp(false, appName); |
| 741 | |
| 742 | if (!wasOpen) { |
| 743 | if (appName === "console") |
| 744 | ClearConsole(); |
| 745 | else if (appName === "mail") { |
| 746 | mailCreation = false; |
| 747 | document.getElementById("mail-create").innerText = GetLocale("mail_create"); |
| 748 | document.getElementById("mail-signout").style.display = "initial"; |
| 749 | document.getElementById("mail-refresh").style.display = "initial"; |
| 750 | document.getElementById("mail-creator").style.display = "none"; |
| 751 | document.getElementById("mail-reader").style.display = "none"; |
| 752 | document.getElementById("mail-container").style.display = "flex"; |
| 753 | } |
no test coverage detected