diff --git a/README.md b/README.md
index 55b1e2c..3ddd2f8 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,12 @@
+
+
+
+
+
+
A simple file explorer that was born because I wanted to learn the Rust language.
@@ -141,7 +147,7 @@ sudo dnf group install "C Development Tools and Libraries"
| macOS | Linux | Windows |
| ----- | ----- | ------- |
| fuse-t fuse-t-sshfs | libfuse | Not supported **_yet_** |
-
+
### Installation:
#### macOS
```
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index af7e911..d8e2b1f 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -4,7 +4,7 @@ version = 3
[[package]]
name = "CoDriver"
-version = "0.4.9"
+version = "0.4.95"
dependencies = [
"archiver-rs",
"chrono",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index c977539..66bf4e6 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,7 +1,7 @@
# cargo-features = ["profile-rustflags"]
[package]
name = "CoDriver"
-version = "0.4.9"
+version = "0.4.95"
description = "A simple file explorer"
authors = ["Ricky Dane Perlick"]
license = "BSD-2-Clause license"
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index 74fd57b..4726ab6 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -1,7 +1,7 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
-use chrono::prelude::{DateTime, Utc};
-use copy_dir::copy_dir;
+use chrono::prelude::DateTime;
+use chrono::Local;
#[allow(unused)]
use delete::{delete_file, rapid_delete_dir_all};
use flate2::read::GzDecoder;
@@ -54,8 +54,8 @@ use archiver_rs::Compressed;
mod rdpfs;
use substring::Substring;
+static mut LAST_DIR: String = String::new();
static mut ISCANCELED: bool = false;
-
static mut PATH_HISTORY: Vec = vec![];
// #[cfg(target_os = "windows")]
@@ -140,7 +140,7 @@ fn main() {
log,
get_config_location,
get_sshfs_mounts,
- unmount_network_drive
+ unmount_network_drive,
])
.plugin(tauri_plugin_drag::init())
.run(tauri::generate_context!())
@@ -520,12 +520,15 @@ async fn list_dirs() -> Vec {
.nth(&path.split(".").count() - 1)
.unwrap_or("");
let file_data = fs::metadata(&temp_item.path());
- let file_date: DateTime;
+ let file_date: DateTime;
let size = temp_item.metadata().unwrap().len();
- if file_data.is_ok() {
- file_date = file_data.unwrap().modified().unwrap().clone().into();
- } else {
- file_date = Utc::now();
+ match file_data {
+ Ok(file_data) => {
+ file_date = file_data.modified().unwrap().clone().into();
+ }
+ Err(_) => {
+ file_date = Local::now();
+ }
}
let is_dir_int = match temp_item.path().is_dir() {
true => 1,
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 022eddf..e0c1871 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -8,7 +8,7 @@
},
"package": {
"productName": "CoDriver",
- "version": "0.4.9"
+ "version": "0.4.95"
},
"tauri": {
"bundle": {
diff --git a/ui/main_logic.js b/ui/main_logic.js
index 565667e..e7bea72 100644
--- a/ui/main_logic.js
+++ b/ui/main_logic.js
@@ -29,24 +29,24 @@ getMatches().then((matches) => {
// :drag / Dragging functionality
async function startDrag(options, onEvent) {
- ds.break();
- await invoke("plugin:drag|start_drag", {
- item: options.item,
- image: options.icon,
- onEventFn: onEvent ? transformCallback(onEvent) : null,
- });
+ ds.break();
+ await invoke("plugin:drag|start_drag", {
+ item: options.item,
+ image: options.icon,
+ onEventFn: onEvent ? transformCallback(onEvent) : null,
+ });
}
const ds = new DragSelect({
- immediateDrag: false,
+ immediateDrag: false,
})
ds.subscribe('DS:select', async (payload) => {
- if (payload.item == SelectedElement || IsShiftDown === true || IsCtrlDown === true || IsMetaDown === true) return;
- selectItem(payload.item, "", true);
+ if (payload.item == SelectedElement || IsShiftDown === true || IsCtrlDown === true || IsMetaDown === true) return;
+ selectItem(payload.item, "", true);
});
ds.subscribe('DS:unselect', async (payload) => {
- deSelectitem(payload.item);
+ deSelectitem(payload.item);
});
/* region Global Variables */
@@ -143,20 +143,20 @@ let CurrentTheme = "0";
/* Upper right search bar logic */
document.querySelector(".search-bar-input").addEventListener("focusin", (e) => {
- $(".file-searchbar").css("width", "250px");
- IsInputFocused = true;
+ $(".file-searchbar").css("width", "250px");
+ IsInputFocused = true;
});
document.querySelector(".search-bar-input").addEventListener("focusout", (e) => {
- $(".file-searchbar").css("width", "200px");
- IsInputFocused = false;
+ $(".file-searchbar").css("width", "200px");
+ IsInputFocused = false;
});
document.querySelector(".search-bar-input").addEventListener("keyup", (e) => {
- if (e.keyCode === 13) {
- let fileName = $(".search-bar-input").val();
- searchFor(fileName);
- } else if (e.keyCode === 27) {
- cancelSearch();
- }
+ if (e.keyCode === 13) {
+ let fileName = $(".search-bar-input").val();
+ searchFor(fileName);
+ } else if (e.keyCode === 27) {
+ cancelSearch();
+ }
});
/* Quicksearch for dual pane view */
@@ -168,7 +168,7 @@ async function startFullSearch() {
$(".fullsearch-search-button").html(`
Stop
- `);
+ `);
document.querySelector(".fullsearch-search-button").addEventListener("click", async () => {
await stopFullSearch();
});
@@ -194,7 +194,7 @@ async function stopFullSearch() {
$(".fullsearch-search-button").html(`
Search
- `);
+ `);
document.querySelector(".fullsearch-search-button").addEventListener("click", async () => {
await startFullSearch();
});
@@ -205,202 +205,203 @@ document.addEventListener("keydown", async (e) => {
if (IsAltDown == true) return;
if (IsMetaDown == true) return;
if (IsCtrlDown == true) return;
- if (e.key === "Escape") {
- if (IsQuickSearchOpen == true) {
- goUp(false, true);
- }
- await resetEverything();
- $(".search-bar-input").blur();
- // Close all popups etc.
- ContextMenu.style.display = "none";
- if (DraggedOverElement != null) {
- DraggedOverElement.style.opacity = "1";
- }
- await stopSearching();
- document.querySelectorAll(".site-nav-bar-button").forEach((item) => {
- item.style.opacity = "1";
- });
- }
- if (IsInputFocused === false &&
- IsPopUpOpen === false &&
- IsMetaDown === false &&
- IsCtrlDown === false &&
- IsShiftDown === false &&
- !isShortcut(e.key) &&
- e.key != " "
- ) {
- CurrentQuickSearch += e.key;
- $(".instant-search-input").css("display", "block");
- $(".instant-search-input").val(CurrentQuickSearch);
- await searchFor(CurrentQuickSearch, 9999999, 1, true);
- setTimeout(() => {
- if (IsDualPaneEnabled === true) {
- goUp(true);
- } else {
- goLeft();
- }
- }, 250);
- CurrentQuickSearchTime = TIMETORESET;
- clearInterval(CurrentQuickSearchTimer);
- resetQuickSearch();
- }
+ if (e.key === "Escape") {
+ if (IsQuickSearchOpen == true) {
+ goUp(false, true);
+ }
+ await resetEverything();
+ $(".search-bar-input").blur();
+ // Close all popups etc.
+ ContextMenu.style.display = "none";
+ if (DraggedOverElement != null) {
+ DraggedOverElement.style.opacity = "1";
+ }
+ await stopSearching();
+ document.querySelectorAll(".site-nav-bar-button").forEach((item) => {
+ item.style.opacity = "1";
+ });
+ }
+ if (IsInputFocused === false &&
+ IsPopUpOpen === false &&
+ IsMetaDown === false &&
+ IsCtrlDown === false &&
+ IsShiftDown === false &&
+ !isShortcut(e.key) &&
+ e.key != " "
+ ) {
+ CurrentQuickSearch += e.key;
+ $(".instant-search-input").css("display", "block");
+ $(".instant-search-input").val(CurrentQuickSearch);
+ await searchFor(CurrentQuickSearch, 9999999, 1, true);
+ setTimeout(() => {
+ if (IsDualPaneEnabled === true) {
+ goUp(true);
+ } else {
+ goLeft();
+ }
+ }, 250);
+ CurrentQuickSearchTime = TIMETORESET;
+ clearInterval(CurrentQuickSearchTimer);
+ resetQuickSearch();
+ }
});
function resetQuickSearch() {
- CurrentQuickSearchTimer = setInterval(() => {
- if (CurrentQuickSearchTime <= 0) {
- clearInterval(CurrentQuickSearchTimer);
- CurrentQuickSearchTime = TIMETORESET;
- CurrentQuickSearch = "";
- $(".instant-search-input").val("");
- $(".instant-search-input").css("display", "none");
- } else {
- CurrentQuickSearchTime -= 50;
- }
- }, 100);
+ CurrentQuickSearchTimer = setInterval(() => {
+ if (CurrentQuickSearchTime <= 0) {
+ clearInterval(CurrentQuickSearchTimer);
+ CurrentQuickSearchTime = TIMETORESET;
+ CurrentQuickSearch = "";
+ $(".instant-search-input").val("");
+ $(".instant-search-input").css("display", "none");
+ } else {
+ CurrentQuickSearchTime -= 50;
+ }
+ }, 100);
}
async function resetEverything() {
closeLoadingPopup();
- closeSearchBar();
- closeSettings();
- closeFullSearchContainer();
- closeFtpConfig();
- closeItemPreview();
- closeMultiRenamePopup();
- closeCompressPopup();
- closeYtDownloadPopup();
- closeInfoProperties();
- resetProgressBar();
- closeInputDialogs();
- unSelectAllItems();
- closeConfirmPopup();
- closeCustomContextMenu();
+ closeSearchBar();
+ closeSettings();
+ closeFullSearchContainer();
+ closeFtpConfig();
+ closeItemPreview();
+ closeMultiRenamePopup();
+ closeCompressPopup();
+ closeYtDownloadPopup();
+ closeInfoProperties();
+ resetProgressBar();
+ closeInputDialogs();
+ unSelectAllItems();
+ closeConfirmPopup();
+ closeCustomContextMenu();
closeFindDuplicatesPopup();
- $(".popup-background").css("display", "none");
- IsPopUpOpen = false;
- IsInputFocused = false;
- IsDisableShortcuts = false;
- if (ArrCopyItems.length == 0) {
- IsCopyToCut = false;
- }
- $(".path-item")?.css("opacity", "1");
- $(".site-nav-bar-button").css("border", "1px solid transparent");
- $(".item-link").css("border", "1px solid transparent");
- $(".path-item").css("border", "1px solid transparent");
- CurrentQuickSearch = "";
- resetQuickSearch();
+ resetBackButton();
+ $(".popup-background").css("display", "none");
+ IsPopUpOpen = false;
+ IsInputFocused = false;
+ IsDisableShortcuts = false;
+ if (ArrCopyItems.length == 0) {
+ IsCopyToCut = false;
+ }
+ $(".path-item")?.css("opacity", "1");
+ $(".site-nav-bar-button").css("border", "1px solid transparent");
+ $(".item-link").css("border", "1px solid transparent");
+ $(".path-item").css("border", "1px solid transparent");
+ CurrentQuickSearch = "";
+ resetQuickSearch();
}
// Close context menu or new folder input dialog when click elsewhere
document.addEventListener("mousedown", (e) => {
- // Check if your click is outside of important elements
- if (
- !e.target.classList.contains("context-item-icon") &&
- !e.target.classList.contains("context-item") &&
- !e.target.classList.contains("open-with-item") &&
- !e.target.classList.contains("input-dialog") &&
- !e.target.classList.contains("confirm-popup") &&
- !e.target.classList.contains("uni-popup") &&
- !e.target.classList.contains("popup-body") &&
- !e.target.classList.contains("popup-body-content") &&
- !e.target.classList.contains("directory-entry") &&
- !e.target.classList.contains("disk-item") &&
- !e.target.classList.contains("item-button") &&
- !e.target.classList.contains("item-button-list") &&
- !e.target.classList.contains("item-icon") &&
- !e.target.classList.contains("item-button-list-text") &&
- !e.target.classList.contains("item-button-list-info-span") &&
- !e.target.classList.contains("disk-item-top") &&
- !e.target.classList.contains("disk-info") &&
- !e.target.classList.contains("item-button-text") &&
- !e.target.classList.contains("item-preview-file-content") &&
- !e.target.classList.contains("popup-header") &&
- !e.target.classList.contains("item-preview-copy-path-button")
- ) {
- ContextMenu.style.display = "none";
- $(".extra-c-menu")?.remove();
-
- // Reset context menu
- resetContextMenu();
-
- document
- .querySelector(".c-item-duplicates")
- .setAttribute("disabled", "true");
- document
- .querySelector(".c-item-duplicates")
- .classList.add("c-item-disabled");
- unSelectAllItems();
- if (DraggedOverElement != null) {
- DraggedOverElement.style.filter = "none";
- }
- // closeItemPreview();
- }
- if (IsPopUpOpen === true && !e.target.classList.contains("input-dialog") && !e.target.classList.contains("input-dialog-headline") && !e.target.classList.contains("text-input")) {
- closeInputDialogs();
+ // Check if your click is outside of important elements
+ if (
+ !e.target.classList.contains("context-item-icon") &&
+ !e.target.classList.contains("context-item") &&
+ !e.target.classList.contains("open-with-item") &&
+ !e.target.classList.contains("input-dialog") &&
+ !e.target.classList.contains("confirm-popup") &&
+ !e.target.classList.contains("uni-popup") &&
+ !e.target.classList.contains("popup-body") &&
+ !e.target.classList.contains("popup-body-content") &&
+ !e.target.classList.contains("directory-entry") &&
+ !e.target.classList.contains("disk-item") &&
+ !e.target.classList.contains("item-button") &&
+ !e.target.classList.contains("item-button-list") &&
+ !e.target.classList.contains("item-icon") &&
+ !e.target.classList.contains("item-button-list-text") &&
+ !e.target.classList.contains("item-button-list-info-span") &&
+ !e.target.classList.contains("disk-item-top") &&
+ !e.target.classList.contains("disk-info") &&
+ !e.target.classList.contains("item-button-text") &&
+ !e.target.classList.contains("item-preview-file-content") &&
+ !e.target.classList.contains("popup-header") &&
+ !e.target.classList.contains("item-preview-copy-path-button")
+ ) {
+ ContextMenu.style.display = "none";
+ $(".extra-c-menu")?.remove();
+
+ // Reset context menu
+ resetContextMenu();
+
+ document
+ .querySelector(".c-item-duplicates")
+ .setAttribute("disabled", "true");
+ document
+ .querySelector(".c-item-duplicates")
+ .classList.add("c-item-disabled");
+ unSelectAllItems();
+ if (DraggedOverElement != null) {
+ DraggedOverElement.style.filter = "none";
+ }
+ // closeItemPreview();
+ }
+ if (IsPopUpOpen === true && !e.target.classList.contains("input-dialog") && !e.target.classList.contains("input-dialog-headline") && !e.target.classList.contains("text-input")) {
+ closeInputDialogs();
IsInputFocused = false;
- }
- if (!e.target.classList.contains("c-item-custom")) {
- closeCustomContextMenu();
- }
- $(".site-nav-bar-button").css("border", "1px solid transparent");
- $(".item-link").css("border", "1px solid transparent");
- $(".path-item").css("border", "1px solid transparent");
+ }
+ if (!e.target.classList.contains("c-item-custom")) {
+ closeCustomContextMenu();
+ }
+ $(".site-nav-bar-button").css("border", "1px solid transparent");
+ $(".item-link").css("border", "1px solid transparent");
+ $(".path-item").css("border", "1px solid transparent");
});
// Open context menu for pasting for example
// :context open
document.addEventListener("contextmenu", (e) => {
- e.preventDefault();
- if (IsPopUpOpen == false && IsInputFocused == false) {
- ContextMenu.children[7].replaceWith(
- ContextMenu.children[7].cloneNode(true),
- );
-
- positionContextMenu(e);
-
- ContextMenu.children[7].addEventListener(
- "click",
- function () {
- createFileInputPrompt(e);
- },
- { once: true },
- );
-
- if (CopyFilePath == "") {
- document.querySelector(".c-item-paste").setAttribute("disabled", "true");
- document.querySelector(".c-item-paste").classList.add("c-item-disabled");
- } else {
- document.querySelector(".c-item-paste").removeAttribute("disabled");
- document
- .querySelector(".c-item-paste")
- .classList.remove("c-item-disabled");
- }
- document
- .querySelector(".c-item-ytdownload")
- .replaceWith(document.querySelector(".c-item-ytdownload").cloneNode(true));
- document.querySelector(".c-item-ytdownload").addEventListener(
- "click",
- async () => {
- await showYtDownload();
- },
- { once: true },
- );
- }
+ e.preventDefault();
+ if (IsPopUpOpen == false && IsInputFocused == false) {
+ ContextMenu.children[7].replaceWith(
+ ContextMenu.children[7].cloneNode(true),
+ );
+
+ positionContextMenu(e);
+
+ ContextMenu.children[7].addEventListener(
+ "click",
+ function () {
+ createFileInputPrompt(e);
+ },
+ { once: true },
+ );
+
+ if (CopyFilePath == "") {
+ document.querySelector(".c-item-paste").setAttribute("disabled", "true");
+ document.querySelector(".c-item-paste").classList.add("c-item-disabled");
+ } else {
+ document.querySelector(".c-item-paste").removeAttribute("disabled");
+ document
+ .querySelector(".c-item-paste")
+ .classList.remove("c-item-disabled");
+ }
+ document
+ .querySelector(".c-item-ytdownload")
+ .replaceWith(document.querySelector(".c-item-ytdownload").cloneNode(true));
+ document.querySelector(".c-item-ytdownload").addEventListener(
+ "click",
+ async () => {
+ await showYtDownload();
+ },
+ { once: true },
+ );
+ }
});
// Position contextmenu
function positionContextMenu(e) {
- ContextMenu.style.display = "flex";
+ ContextMenu.style.display = "flex";
- // Horizontal position
- if (ContextMenu.clientWidth + e.clientX >= window.innerWidth) {
- ContextMenu.style.left = e.clientX - ContextMenu.clientWidth + "px";
- } else {
- ContextMenu.style.left = e.clientX + "px";
- }
+ // Horizontal position
+ if (ContextMenu.clientWidth + e.clientX >= window.innerWidth) {
+ ContextMenu.style.left = e.clientX - ContextMenu.clientWidth + "px";
+ } else {
+ ContextMenu.style.left = e.clientX + "px";
+ }
- // Vertical position
+ // Vertical position
if (ContextMenu.offsetHeight + e.clientY <= window.innerHeight) {
ContextMenu.style.top = e.clientY + "px";
ContextMenu.style.bottom = null;
@@ -416,382 +417,382 @@ function positionContextMenu(e) {
/* :shortcuts Shortcuts definition */
function isShortcut(key) {
- if (key == "Meta" ||
- key == "Control" ||
- key == "Shift" ||
- key == "Alt" ||
- key == "CapsLock" ||
- key == "Enter" ||
- key == "Backspace" ||
- key == "Delete" ||
- key == "ArrowLeft" ||
- key == "ArrowRight" ||
- key == "ArrowUp" ||
- key == "ArrowDown" ||
- key == "Escape" ||
- key == "Tab" ||
- key == "F1" ||
- key == "F2" ||
- key == "F3" ||
- key == "F4" ||
- key == "F5" ||
- key == "F6" ||
- key == "F7" ||
- key == "F8" ||
- key == "F9" ||
- key == "F10" ||
- key == "F11" ||
- key == "F12" ||
- key == "F13" ||
- key == "Home" ||
- key == "End" ||
- key == "PageUp" ||
- key == "PageDown" ||
- key == "PrintScreen" ||
- key == "Insert" ||
- key == "Pause" ||
- key == "Help" ||
- key == "NumLock" ||
- key == "Clear" ||
- key == "ScrollLock" ||
- key == "+" ||
- key == "-" ||
- key == "*" ||
- key == "/" ||
- key == ",") {
- return true;
- } else {
- return false;
- }
+ if (key == "Meta" ||
+ key == "Control" ||
+ key == "Shift" ||
+ key == "Alt" ||
+ key == "CapsLock" ||
+ key == "Enter" ||
+ key == "Backspace" ||
+ key == "Delete" ||
+ key == "ArrowLeft" ||
+ key == "ArrowRight" ||
+ key == "ArrowUp" ||
+ key == "ArrowDown" ||
+ key == "Escape" ||
+ key == "Tab" ||
+ key == "F1" ||
+ key == "F2" ||
+ key == "F3" ||
+ key == "F4" ||
+ key == "F5" ||
+ key == "F6" ||
+ key == "F7" ||
+ key == "F8" ||
+ key == "F9" ||
+ key == "F10" ||
+ key == "F11" ||
+ key == "F12" ||
+ key == "F13" ||
+ key == "Home" ||
+ key == "End" ||
+ key == "PageUp" ||
+ key == "PageDown" ||
+ key == "PrintScreen" ||
+ key == "Insert" ||
+ key == "Pause" ||
+ key == "Help" ||
+ key == "NumLock" ||
+ key == "Clear" ||
+ key == "ScrollLock" ||
+ key == "+" ||
+ key == "-" ||
+ key == "*" ||
+ key == "/" ||
+ key == ",") {
+ return true;
+ } else {
+ return false;
+ }
}
document.onkeydown = async (e) => {
- if (IsDisableShortcuts === false) {
- // Shortcut for jumping to configured directory
- if (e.metaKey && Platform == "darwin") IsMetaDown = true;
- if (e.ctrlKey && Platform != "darwin") IsCtrlDown = true;
- if (e.key == "Shift") IsShiftDown = true;
- if (e.key == "Alt") IsAltDown = true;
- if (e.altKey && e.code == "Digit1") {
- if (ConfiguredPathOne == "") return;
- openItem(null, SelectedItemPaneSide, ConfiguredPathOne);
- }
- if (e.altKey && e.code == "Digit2") {
- if (ConfiguredPathTwo == "") return;
- openItem(null, SelectedItemPaneSide, ConfiguredPathTwo);
- }
- if (e.altKey && e.code == "Digit3") {
- if (ConfiguredPathThree == "") return;
- openItem(null, SelectedItemPaneSide, ConfiguredPathThree);
- }
-
- if (
- IsDualPaneEnabled == true &&
- IsDisableShortcuts == false &&
- IsPopUpOpen == false
- ) {
- // check if return is pressed
- if (!e.altKey && e.keyCode == 13) {
- e.preventDefault();
- e.stopPropagation();
- await openSelectedItem();
- }
- // check if backspace is pressed
- if (e.keyCode == 8 && IsPopUpOpen == false) {
- goBack();
- e.preventDefault();
- e.stopPropagation();
- }
- // check if lshift + f5 is pressed
- if (e.shiftKey && e.key == "F5") {
- e.preventDefault();
- e.stopPropagation();
- let isToMove = await confirm("Current selection will be moved over");
- if (isToMove == true) {
- IsCopyToCut = true;
- await pasteItem();
- IsShiftDown = false;
- }
- }
- // check if f5 is pressed
- else if (e.key == "F5" && IsTabsEnabled == false) {
- e.preventDefault();
- e.stopPropagation();
- let isToCopy = await confirm("Current selection will be copied over");
- if (isToCopy == true) {
- pasteItem();
- }
- }
- // check if arrow up is pressed
- if (e.keyCode == 38) {
- if (SelectedElement == null) {
- goUp(false, true);
- } else {
- goUp();
- }
- e.preventDefault();
- e.stopPropagation();
- }
- // check if arrow down is pressed
- if (e.keyCode == 40) {
- e.preventDefault();
- e.stopPropagation();
- if (SelectedElement == null) {
- goUp(false, true);
- } else {
- goDown();
- }
- }
- // check if tab is pressed
- if (e.keyCode == 9) {
- e.preventDefault();
- e.stopPropagation();
- goToOtherPane();
- }
- if (IsPopUpOpen == false) {
- // check if f8 is pressed
- if (e.keyCode == 119) {
- e.preventDefault();
- e.stopPropagation();
- openFullSearchContainer();
- }
- }
- if (e.key == "PageUp") {
- goUp();
- goUp();
- e.preventDefault();
- e.stopPropagation();
- }
- if (e.key == "PageDown") {
- goDown();
- goDown();
- e.preventDefault();
- e.stopPropagation();
- }
- } else if (IsItemPreviewOpen == true && IsDualPaneEnabled === true) {
- // check if arrow up is pressed
- if (e.keyCode == 38) {
- goUp();
- e.preventDefault();
- e.stopPropagation();
- }
- // check if arrow down is pressed
- if (e.keyCode == 40) {
- goDown(e);
- e.preventDefault();
- e.stopPropagation();
- }
- }
-
- // Check if cmd / ctrl + shift + c is pressed
- if (
- ((Platform != "darwin" && IsCtrlDown && e.altKey) ||
- (Platform == "darwin" && e.shiftKey)) &&
- e.key == "c"
- ) {
- await writeText(CurrentDir);
- showToast("Current dir path copied", ToastType.SUCCESS);
- return;
- }
- // Check if cmd / ctrl + f is pressed
- if (e.key == "f" && (e.ctrlKey || e.metaKey)) {
+ if (IsDisableShortcuts === false) {
+ // Shortcut for jumping to configured directory
+ if (e.metaKey && Platform == "darwin") IsMetaDown = true;
+ if (e.ctrlKey && Platform != "darwin") IsCtrlDown = true;
+ if (e.key == "Shift") IsShiftDown = true;
+ if (e.key == "Alt") IsAltDown = true;
+ if (e.altKey && e.code == "Digit1") {
+ if (ConfiguredPathOne == "") return;
+ openItem(null, SelectedItemPaneSide, ConfiguredPathOne);
+ }
+ if (e.altKey && e.code == "Digit2") {
+ if (ConfiguredPathTwo == "") return;
+ openItem(null, SelectedItemPaneSide, ConfiguredPathTwo);
+ }
+ if (e.altKey && e.code == "Digit3") {
+ if (ConfiguredPathThree == "") return;
+ openItem(null, SelectedItemPaneSide, ConfiguredPathThree);
+ }
+
+ if (
+ IsDualPaneEnabled == true &&
+ IsDisableShortcuts == false &&
+ IsPopUpOpen == false
+ ) {
+ // check if return is pressed
+ if (!e.altKey && e.keyCode == 13) {
+ e.preventDefault();
+ e.stopPropagation();
+ await openSelectedItem();
+ }
+ // check if backspace is pressed
+ if (e.keyCode == 8 && IsPopUpOpen == false) {
+ goBack();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // check if lshift + f5 is pressed
+ if (e.shiftKey && e.key == "F5") {
+ e.preventDefault();
+ e.stopPropagation();
+ let isToMove = await confirm("Current selection will be moved over");
+ if (isToMove == true) {
+ IsCopyToCut = true;
+ await pasteItem();
+ IsShiftDown = false;
+ }
+ }
+ // check if f5 is pressed
+ else if (e.key == "F5" && IsTabsEnabled == false) {
+ e.preventDefault();
+ e.stopPropagation();
+ let isToCopy = await confirm("Current selection will be copied over");
+ if (isToCopy == true) {
+ pasteItem();
+ }
+ }
+ // check if arrow up is pressed
+ if (e.keyCode == 38) {
+ if (SelectedElement == null) {
+ goUp(false, true);
+ } else {
+ goUp();
+ }
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // check if arrow down is pressed
+ if (e.keyCode == 40) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (SelectedElement == null) {
+ goUp(false, true);
+ } else {
+ goDown();
+ }
+ }
+ // check if tab is pressed
+ if (e.keyCode == 9) {
+ e.preventDefault();
+ e.stopPropagation();
+ goToOtherPane();
+ }
+ if (IsPopUpOpen == false) {
+ // check if f8 is pressed
+ if (e.keyCode == 119) {
+ e.preventDefault();
+ e.stopPropagation();
+ openFullSearchContainer();
+ }
+ }
+ if (e.key == "PageUp") {
+ goUp();
+ goUp();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ if (e.key == "PageDown") {
+ goDown();
+ goDown();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ } else if (IsItemPreviewOpen == true && IsDualPaneEnabled === true) {
+ // check if arrow up is pressed
+ if (e.keyCode == 38) {
+ goUp();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // check if arrow down is pressed
+ if (e.keyCode == 40) {
+ goDown(e);
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ }
+
+ // Check if cmd / ctrl + shift + c is pressed
+ if (
+ ((Platform != "darwin" && IsCtrlDown && e.altKey) ||
+ (Platform == "darwin" && e.shiftKey)) &&
+ e.key == "c"
+ ) {
+ await writeText(CurrentDir);
+ showToast("Current dir path copied", ToastType.SUCCESS);
+ return;
+ }
+ // Check if cmd / ctrl + f is pressed
+ if (e.key == "f" && (e.ctrlKey || e.metaKey)) {
if (IsDualPaneEnabled == true) return;
- $(".search-bar-input").focus();
- IsInputFocused = true;
- e.preventDefault();
- e.stopPropagation();
- }
- // Check if space is pressed on selected item
- if (e.key == " " && SelectedElement != null) {
- e.preventDefault();
- e.stopPropagation();
- if (IsPopUpOpen == false && IsInputFocused == false && IsItemPreviewOpen == false) {
- showItemPreview(SelectedElement);
- } else {
- closeItemPreview();
- }
- }
-
- if (IsPopUpOpen == false) {
- // check if del is pressed
- if (IsInputFocused == false && (e.keyCode == 46 || (e.metaKey && e.keyCode == 8))) {
- await deleteItems();
- closeLoadingPopup();
- await listDirectories();
- goUp();
- e.preventDefault();
- e.stopPropagation();
+ $(".search-bar-input").focus();
+ IsInputFocused = true;
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // Check if space is pressed on selected item
+ if (e.key == " " && SelectedElement != null) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (IsPopUpOpen == false && IsInputFocused == false && IsItemPreviewOpen == false) {
+ showItemPreview(SelectedElement);
+ } else {
+ closeItemPreview();
+ }
+ }
+
+ if (IsPopUpOpen == false) {
+ // check if del is pressed
+ if (IsInputFocused == false && (e.keyCode == 46 || (e.metaKey && e.keyCode == 8))) {
+ await deleteItems();
+ closeLoadingPopup();
+ await listDirectories();
+ goUp();
+ e.preventDefault();
+ e.stopPropagation();
return;
- }
- // Check if cmd / ctrl + a is pressed
- if (
- ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
- e.key == "a" &&
- IsInputFocused === false &&
- IsPopUpOpen === false
- ) {
- if (IsDualPaneEnabled) {
- if (SelectedItemPaneSide == "left") {
- await unSelectAllItems();
- for (let i = 0; i < LeftPaneItemCollection.children.length; i++) {
- selectItem(LeftPaneItemCollection.children[i]);
- }
- } else {
- await unSelectAllItems();
- for (let i = 0; i < RightPaneItemCollection.children.length; i++) {
- selectItem(RightPaneItemCollection.children[i]);
- }
- }
- } else {
- await unSelectAllItems();
- for (let i = 0; i < DirectoryList.children.length; i++) {
- selectItem(DirectoryList.children[i]);
- }
- }
- }
- if (
- (e.altKey && e.key == "Enter") ||
- e.key == "F2" ||
- (Platform == "darwin" &&
- e.key == "Enter" &&
- IsDualPaneEnabled == false &&
- IsInputFocused == false)
- ) {
- // check if alt + enter is pressed
- renameElementInputPrompt(SelectedElement);
- }
- // check if cmd / ctrl + r is pressed
- if (((e.ctrlKey && Platform != "darwin") || e.metaKey) && e.key == "r") {
- e.preventDefault();
- e.stopPropagation();
- await unSelectAllItems();
- refreshView();
- }
- // check if cmd / ctrl + c is pressed
- if (
- ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
- e.key == "c" &&
- IsInputFocused == false
- ) {
- copyItem(SelectedElement);
- e.preventDefault();
- e.stopPropagation();
- }
- // check if cmd / ctrl + x is pressed
- if (
- ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
- e.key == "x" &&
- IsInputFocused == false
- ) {
- copyItem(SelectedElement, true);
- e.preventDefault();
- e.stopPropagation();
- }
- // check if cmd / ctrl + v is pressed
- if (
- ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
- e.key == "v" &&
- IsInputFocused == false
- ) {
- pasteItem();
- e.preventDefault();
- e.stopPropagation();
- }
- // check if cmd / ctrl + g is pressed | Path input
- if (((e.ctrlKey && Platform != "darwin") || e.metaKey) && e.key == "g") {
- showInputPopup("Input path to jump to");
- e.preventDefault();
- e.stopPropagation();
- }
- // New folder input prompt when f7 is pressed
- if (e.key == "F7") {
- createFolderInputPrompt();
- e.preventDefault();
- e.stopPropagation();
- }
- // New file input prompt when f6 is pressed
- if (e.keyCode == 117) {
- createFileInputPrompt();
- e.preventDefault();
- e.stopPropagation();
- }
- // Disabled for instant quick search
- // check if cmd / ctrl + s is pressed
- // if (
- // ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
- // e.key === "s" &&
- // IsShowDisks == false
- // ) {
- // openSearchBar();
- // e.preventDefault();
- // e.stopPropagation();
- // }
-
- // check if ctrl / cmd + shift + m is pressed
- if (
- ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
- e.shiftKey &&
- (e.key == "M" || e.key == "m") &&
- ArrSelectedItems.length >= 1
- ) {
- showMultiRenamePopup();
- e.preventDefault();
- e.stopPropagation();
- }
-
- if (IsDualPaneEnabled === false) {
- // check if return is pressed
- if (!e.altKey && e.keyCode == 13 && Platform != "darwin") {
- await openSelectedItem();
- e.preventDefault();
- e.stopPropagation();
- }
- // check if backspace is pressed
- if (e.keyCode == 8 && IsPopUpOpen === false && IsInputFocused === false && ArrSelectedItems.length == 0) {
- goBack();
- e.preventDefault();
- e.stopPropagation();
- }
- }
- }
-
- if (IsDualPaneEnabled === false && (IsItemPreviewOpen === true && IsPopUpOpen === true || IsPopUpOpen === false) && IsInputFocused === false) {
- if (ViewMode == "wrap") {
- // check if arrow up is pressed
- if (e.keyCode == 38) {
- e.preventDefault();
- e.stopPropagation();
- goGridUp();
- }
- // check if arrow down is pressed
- if (e.key === "ArrowDown") {
- e.preventDefault();
- e.stopPropagation();
- goGridDown();
- }
- }
- // check if arrow left is pressed
- if (e.keyCode == 37 || ((ViewMode == "column" || ViewMode == "miller") && e.keyCode == 38)) {
- e.preventDefault();
- e.stopPropagation();
- goLeft();
- }
- // check if arrow right is pressed
- if (e.keyCode == 39 || ((ViewMode == "column" || ViewMode == "miller") && e.keyCode == 40)) {
- e.preventDefault();
- e.stopPropagation();
- goRight();
- }
- }
- }
+ }
+ // Check if cmd / ctrl + a is pressed
+ if (
+ ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
+ e.key == "a" &&
+ IsInputFocused === false &&
+ IsPopUpOpen === false
+ ) {
+ if (IsDualPaneEnabled) {
+ if (SelectedItemPaneSide == "left") {
+ await unSelectAllItems();
+ for (let i = 0; i < LeftPaneItemCollection.children.length; i++) {
+ selectItem(LeftPaneItemCollection.children[i]);
+ }
+ } else {
+ await unSelectAllItems();
+ for (let i = 0; i < RightPaneItemCollection.children.length; i++) {
+ selectItem(RightPaneItemCollection.children[i]);
+ }
+ }
+ } else {
+ await unSelectAllItems();
+ for (let i = 0; i < DirectoryList.children.length; i++) {
+ selectItem(DirectoryList.children[i]);
+ }
+ }
+ }
+ if (
+ (e.altKey && e.key == "Enter") ||
+ e.key == "F2" ||
+ (Platform == "darwin" &&
+ e.key == "Enter" &&
+ IsDualPaneEnabled == false &&
+ IsInputFocused == false)
+ ) {
+ // check if alt + enter is pressed
+ renameElementInputPrompt(SelectedElement);
+ }
+ // check if cmd / ctrl + r is pressed
+ if (((e.ctrlKey && Platform != "darwin") || e.metaKey) && e.key == "r") {
+ e.preventDefault();
+ e.stopPropagation();
+ await unSelectAllItems();
+ refreshView();
+ }
+ // check if cmd / ctrl + c is pressed
+ if (
+ ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
+ e.key == "c" &&
+ IsInputFocused == false
+ ) {
+ copyItem(SelectedElement);
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // check if cmd / ctrl + x is pressed
+ if (
+ ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
+ e.key == "x" &&
+ IsInputFocused == false
+ ) {
+ copyItem(SelectedElement, true);
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // check if cmd / ctrl + v is pressed
+ if (
+ ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
+ e.key == "v" &&
+ IsInputFocused == false
+ ) {
+ pasteItem();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // check if cmd / ctrl + g is pressed | Path input
+ if (((e.ctrlKey && Platform != "darwin") || e.metaKey) && e.key == "g") {
+ showInputPopup("Input path to jump to");
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // New folder input prompt when f7 is pressed
+ if (e.key == "F7") {
+ createFolderInputPrompt();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // New file input prompt when f6 is pressed
+ if (e.keyCode == 117) {
+ createFileInputPrompt();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // Disabled for instant quick search
+ // check if cmd / ctrl + s is pressed
+ // if (
+ // ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
+ // e.key === "s" &&
+ // IsShowDisks == false
+ // ) {
+ // openSearchBar();
+ // e.preventDefault();
+ // e.stopPropagation();
+ // }
+
+ // check if ctrl / cmd + shift + m is pressed
+ if (
+ ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
+ e.shiftKey &&
+ (e.key == "M" || e.key == "m") &&
+ ArrSelectedItems.length >= 1
+ ) {
+ showMultiRenamePopup();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+
+ if (IsDualPaneEnabled === false) {
+ // check if return is pressed
+ if (!e.altKey && e.keyCode == 13 && Platform != "darwin") {
+ await openSelectedItem();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // check if backspace is pressed
+ if (e.keyCode == 8 && IsPopUpOpen === false && IsInputFocused === false && ArrSelectedItems.length == 0) {
+ goBack();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ }
+ }
+
+ if (IsDualPaneEnabled === false && (IsItemPreviewOpen === true && IsPopUpOpen === true || IsPopUpOpen === false) && IsInputFocused === false) {
+ if (ViewMode == "wrap") {
+ // check if arrow up is pressed
+ if (e.keyCode == 38) {
+ e.preventDefault();
+ e.stopPropagation();
+ goGridUp();
+ }
+ // check if arrow down is pressed
+ if (e.key === "ArrowDown") {
+ e.preventDefault();
+ e.stopPropagation();
+ goGridDown();
+ }
+ }
+ // check if arrow left is pressed
+ if (e.keyCode == 37 || ((ViewMode == "column" || ViewMode == "miller") && e.keyCode == 38)) {
+ e.preventDefault();
+ e.stopPropagation();
+ goLeft();
+ }
+ // check if arrow right is pressed
+ if (e.keyCode == 39 || ((ViewMode == "column" || ViewMode == "miller") && e.keyCode == 40)) {
+ e.preventDefault();
+ e.stopPropagation();
+ goRight();
+ }
+ }
+ }
};
// Reset key toggle
document.onkeyup = (e) => {
- if (e.key == "G" || e.key == "g") IsGDown = false;
- if (e.keyCode === 91 && Platform == "darwin") IsMetaDown = false;
- if (e.key == "Control" && Platform != "darwin") IsCtrlDown = false;
- if (e.key == "Shift") IsShiftDown = false;
+ if (e.key == "G" || e.key == "g") IsGDown = false;
+ if (e.keyCode === 91 && Platform == "darwin") IsMetaDown = false;
+ if (e.key == "Control" && Platform != "darwin") IsCtrlDown = false;
+ if (e.key == "Shift") IsShiftDown = false;
if (e.key == "Alt") IsAltDown = false;
};
@@ -799,409 +800,408 @@ document.onkeyup = (e) => {
// check for click on one of the dual pane containers and set directory accordingly
document.querySelector(".dual-pane-left").addEventListener("click", () => {
- if (IsPopUpOpen == false && SelectedItemPaneSide != "left") {
- setCurrentDir(LeftDualPanePath, "left");
- }
+ if (IsPopUpOpen == false && SelectedItemPaneSide != "left") {
+ setCurrentDir(LeftDualPanePath, "left");
+ }
});
document
- .querySelector(".dual-pane-left")
- .addEventListener("contextmenu", () => {
- if (IsPopUpOpen == false && SelectedItemPaneSide != "left") {
- setCurrentDir(LeftDualPanePath, "left");
- }
- });
+ .querySelector(".dual-pane-left")
+ .addEventListener("contextmenu", () => {
+ if (IsPopUpOpen == false && SelectedItemPaneSide != "left") {
+ setCurrentDir(LeftDualPanePath, "left");
+ }
+ });
document.querySelector(".dual-pane-right").addEventListener("click", () => {
- if (IsPopUpOpen == false && SelectedItemPaneSide != "right") {
- setCurrentDir(RightDualPanePath, "right");
- }
+ if (IsPopUpOpen == false && SelectedItemPaneSide != "right") {
+ setCurrentDir(RightDualPanePath, "right");
+ }
});
document
- .querySelector(".dual-pane-right")
- .addEventListener("contextmenu", () => {
- if (IsPopUpOpen == false && SelectedItemPaneSide != "right") {
- setCurrentDir(RightDualPanePath, "right");
- }
- });
+ .querySelector(".dual-pane-right")
+ .addEventListener("contextmenu", () => {
+ if (IsPopUpOpen == false && SelectedItemPaneSide != "right") {
+ setCurrentDir(RightDualPanePath, "right");
+ }
+ });
// Main function to handle directory visualization
async function showItems(items, dualPaneSide = "", millerCol = 1) {
- await cancelSearch();
- IsShowDisks = false;
-
- if (items.length > 1000) {
- showLoadingPopup("Loading much data, please wait...");
- await new Promise(resolve => setTimeout(resolve, 50));
- }
-
- // Reset position when navigating into another directory
- document.querySelector(".explorer-container")?.scrollTo(0, 0);
-
- if (IsDualPaneEnabled == true) {
- if (dualPaneSide == "left") {
- document.querySelector(".dual-pane-left").innerHTML = "";
- document.querySelector(".dual-pane-left").scrollTop = 0;
- } else if (dualPaneSide == "right") {
- document.querySelector(".dual-pane-right").innerHTML = "";
- document.querySelector(".dual-pane-right").scrollTop = 0;
- } else {
- SelectedItemPaneSide = "left";
- document.querySelector(".dual-pane-left").innerHTML = "";
- document.querySelector(".dual-pane-left").scrollTop = 0;
- document.querySelector(".dual-pane-right").innerHTML = "";
- document.querySelector(".dual-pane-right").scrollTop = 0;
- }
- }
- document.querySelector(".normal-list-column-header").style.display = "block";
- document.querySelector(".disk-list-column-header").style.display = "none";
-
- DirectoryList = document.createElement("div");
- if (IsDualPaneEnabled == true) {
- DirectoryList.className = "directory-list-dual-pane";
- } else {
- DirectoryList.className = "directory-list";
- }
- if (IsShowHiddenFiles === false) {
- items = items.filter((str) => !str.name.startsWith(".") && !str.name.toLowerCase().includes("desktop.ini"));
- }
- items = items.filter((str) => !str.name.toLowerCase().includes("ntuser"));
- let counter = 0;
- items.forEach(async (item) => {
- let itemIconId = crypto.randomUUID();
- let itemLink = document.createElement("button");
- itemLink.setAttribute(
- "onclick",
- "interactWithItem(this, '" + dualPaneSide + "')",
- );
- itemLink.setAttribute("itempath", item.path);
- itemLink.setAttribute("itemindex", counter++);
- itemLink.setAttribute("itempaneside", dualPaneSide);
- itemLink.setAttribute("itemisdir", item.is_dir);
- itemLink.setAttribute("itemext", item.extension);
- itemLink.setAttribute("itemname", item.name);
- itemLink.setAttribute("itemsize", formatBytes(item.size));
- itemLink.setAttribute("itemrawsize", item.size);
- itemLink.setAttribute("itemmodified", item.last_modified);
- itemLink.setAttribute("draggable", true);
- itemLink.setAttribute("id", "item-link");
- itemLink.setAttribute("itemformillercol", parseInt(millerCol) + 1);
-
- let fileIcon = "resources/file-icon.png"; // Default
- let iconSize = "56px";
- if (item.is_dir == 1) {
- fileIcon = "resources/folder-icon.png";
- // Check for dir name to apply custom icons
+ await cancelSearch();
+ IsShowDisks = false;
+
+ if (items.length > 1000) {
+ showLoadingPopup("Loading much data, please wait...");
+ await new Promise(resolve => setTimeout(resolve, 50));
+ }
+
+ // Reset position when navigating into another directory
+ document.querySelector(".explorer-container")?.scrollTo(0, 0);
+
+ if (IsDualPaneEnabled == true) {
+ if (dualPaneSide == "left") {
+ document.querySelector(".dual-pane-left").innerHTML = "";
+ document.querySelector(".dual-pane-left").scrollTop = 0;
+ } else if (dualPaneSide == "right") {
+ document.querySelector(".dual-pane-right").innerHTML = "";
+ document.querySelector(".dual-pane-right").scrollTop = 0;
+ } else {
+ SelectedItemPaneSide = "left";
+ document.querySelector(".dual-pane-left").innerHTML = "";
+ document.querySelector(".dual-pane-left").scrollTop = 0;
+ document.querySelector(".dual-pane-right").innerHTML = "";
+ document.querySelector(".dual-pane-right").scrollTop = 0;
+ }
+ }
+ document.querySelector(".normal-list-column-header").style.display = "block";
+ document.querySelector(".disk-list-column-header").style.display = "none";
+
+ DirectoryList = document.createElement("div");
+ if (IsDualPaneEnabled == true) {
+ DirectoryList.className = "directory-list-dual-pane";
+ } else {
+ DirectoryList.className = "directory-list";
+ }
+ if (IsShowHiddenFiles === false) {
+ items = items.filter((str) => !str.name.startsWith(".") && !str.name.toLowerCase().includes("desktop.ini"));
+ }
+ items = items.filter((str) => !str.name.toLowerCase().includes("ntuser"));
+ let counter = 0;
+ items.forEach(async (item) => {
+ let itemIconId = crypto.randomUUID();
+ let itemLink = document.createElement("button");
+ itemLink.setAttribute(
+ "onclick",
+ "interactWithItem(this, '" + dualPaneSide + "')",
+ );
+ itemLink.setAttribute("itempath", item.path);
+ itemLink.setAttribute("itemindex", counter++);
+ itemLink.setAttribute("itempaneside", dualPaneSide);
+ itemLink.setAttribute("itemisdir", item.is_dir);
+ itemLink.setAttribute("itemext", item.extension);
+ itemLink.setAttribute("itemname", item.name);
+ itemLink.setAttribute("itemsize", formatBytes(item.size));
+ itemLink.setAttribute("itemrawsize", item.size);
+ itemLink.setAttribute("itemmodified", item.last_modified);
+ itemLink.setAttribute("draggable", true);
+ itemLink.setAttribute("id", "item-link");
+ itemLink.setAttribute("itemformillercol", parseInt(millerCol) + 1);
+
+ let fileIcon = "resources/file-icon.png"; // Default
+ let iconSize = "56px";
+ if (item.is_dir == 1) {
+ fileIcon = "resources/folder-icon.png";
+ // Check for dir name to apply custom icons
switch (item.name.toLowerCase()) {
case "downloads":
- fileIcon = "resources/folder-downloads.png";
- break;
+ fileIcon = "resources/folder-downloads.png";
+ break;
case "desktop":
case "schreibtisch":
- fileIcon = "resources/folder-desktop.png";
- break;
+ fileIcon = "resources/folder-desktop.png";
+ break;
case "dokumente":
case "doks":
case "documents":
case "docs":
- fileIcon = "resources/folder-docs.png";
- break;
+ fileIcon = "resources/folder-docs.png";
+ break;
case "musik":
case "music":
case "audio":
- fileIcon = "resources/folder-music.png";
- break;
+ fileIcon = "resources/folder-music.png";
+ break;
case "bilder":
case "fotos":
case "photos":
case "pictures":
case "images":
- fileIcon = "resources/folder-images.png";
- break;
+ fileIcon = "resources/folder-images.png";
+ break;
case "videos":
case "video":
case "movies":
case "movie":
case "films":
case "filme":
- fileIcon = "resources/folder-videos.png";
- break;
+ fileIcon = "resources/folder-videos.png";
+ break;
case "coding":
case "programming":
case "programmieren":
case "code":
- fileIcon = "resources/folder-coding.png";
- break;
+ fileIcon = "resources/folder-coding.png";
+ break;
case "werkzeuge":
case "tools":
- fileIcon = "resources/folder-tools.png";
- break;
+ fileIcon = "resources/folder-tools.png";
+ break;
case "public":
case "öffentlich":
case "shared":
case "geteilt":
- fileIcon = "resources/folder-public.png";
- break;
+ fileIcon = "resources/folder-public.png";
+ break;
case "games":
case "gaming":
case "spiele":
- fileIcon = "resources/folder-games.png";
- break;
+ fileIcon = "resources/folder-games.png";
+ break;
case "developer":
case "entwickler":
case "entwicklung":
case "development":
- fileIcon = "resources/folder-development.png";
- break;
+ fileIcon = "resources/folder-development.png";
+ break;
case "applications":
case "programme":
- fileIcon = "resources/folder-applications.png";
- break;
+ fileIcon = "resources/folder-applications.png";
+ break;
case "sdk":
case "sdks":
- fileIcon = "resources/folder-sdk.png";
+ fileIcon = "resources/folder-sdk.png";
default:
- fileIcon = "resources/folder-icon.png";
- break;
+ fileIcon = "resources/folder-icon.png";
+ break;
}
- } else {
- switch (item.extension.toLowerCase()) {
- case ".rs":
- fileIcon = "resources/rust-file.png";
- break;
- case ".js":
- case ".jsx":
- fileIcon = "resources/javascript-file.png";
- break;
- case ".css":
- case ".scss":
- fileIcon = "resources/css-file.png";
- break;
- case ".sql":
- case ".db":
- fileIcon = "resources/sql-file.png";
- break;
- case ".go":
- fileIcon = "resources/go-file.png";
- break;
- case ".md":
- fileIcon = "resources/markdown-file.png";
- break;
- case ".bin":
- fileIcon = "resources/bin-file.png";
- break;
- case ".json":
- case ".cs":
- case ".c":
- case ".xml":
- case ".htm":
- case ".html":
- case ".php":
- case ".py":
- case ".ts":
- case ".tsx":
- fileIcon = "resources/code-file.png";
- break;
- case ".png":
- case ".jpg":
- case ".jpeg":
- case ".gif":
- case ".webp":
- case ".svg":
- case ".ico":
- case ".bmp":
- case ".tiff":
- case ".tif":
- case ".jfif":
- case ".avif":
- case ".icns":
- if (IsImagePreview) {
- if (item.size < 10000000 && items.length < 1000) { // ~10 mb
- fileIcon = convertFileSrc(item.path); // Beispiel für die Verwendung der Funktion
- } else {
- fileIcon = "resources/img-file.png";
- }
- } else {
- fileIcon = "resources/img-file.png";
- }
- break;
- case ".pdf":
- if (IsImagePreview) {
- if (item.size < 5000000) { // ~5 mb
- fileIcon = convertFileSrc(item.path); // Beispiel für die Verwendung der Funktion
- }
- } else {
- fileIcon = "resources/pdf-file.png";
- }
- break;
- case ".txt":
- case ".rtf":
- fileIcon = "resources/text-file.png";
- break;
- case ".docx":
- case ".doc":
- fileIcon = "resources/word-file.png";
- break;
- case ".zip":
- case ".rar":
- case ".tar":
- case ".zst":
- case ".7z":
- case ".gz":
- case ".xz":
- case ".bz2":
- case ".lz":
- case ".lz4":
- case ".lzma":
- case ".lzo":
- case ".z":
- case ".zstd":
- case ".br":
- fileIcon = "resources/zip-file.png";
- break;
- case ".xlsx":
- fileIcon = "resources/spreadsheet-file.png";
- break;
- case ".appimage":
- fileIcon = "resources/appimage-file.png";
- break;
- case ".mp4":
- case ".mkv":
- case ".avi":
- case ".mov":
- case ".wmv":
- case ".flv":
- case ".webm":
- fileIcon = "resources/video-file.png";
- break;
- case ".mp3":
- case ".wav":
- case ".ogg":
- case ".opus":
- fileIcon = "resources/audio-file.png";
- break;
- case ".iso":
- fileIcon = "resources/iso-file.png";
- break;
- default:
- fileIcon = "resources/file-icon.png";
- break;
- }
- }
- itemLink.className = "item-link directory-entry";
- if (ViewMode == "wrap") {
- var itemButton = document.createElement("div");
- itemButton.innerHTML = `
-
- ${item.name}
- `;
- itemButton.className = "item-button directory-entry";
- itemLink.append(itemButton);
- DirectoryList.style.gridTemplateColumns =
- "repeat(auto-fill, minmax(80px, 1fr))";
- DirectoryList.style.rowGap = "15px";
- } else if (ViewMode == "column") {
- var itemButtonList = document.createElement("div");
- itemButtonList.innerHTML = `
-
-
- ${item.name}
-
-
- ${item.last_modified}
- ${formatBytes(parseInt(item.size), 2)}
-
- `;
- if (dualPaneSide != null && dualPaneSide != "") {
- itemButtonList.className = "directory-entry dual-pane-list-item";
- } else {
- itemButtonList.className = "item-button-list directory-entry";
- }
- itemLink.append(itemButtonList);
- DirectoryList.style.gridTemplateColumns = "unset";
- DirectoryList.style.rowGap = "2px";
- }
- else if (ViewMode == "miller") {
- var itemButtonList = document.createElement("div");
- itemButtonList.innerHTML = `
-
-
- ${item.name}
-
- `;
- if (dualPaneSide != null && dualPaneSide != "") {
- itemButtonList.className = "directory-entry dual-pane-list-item";
- } else {
- itemButtonList.className = "item-button-list directory-entry";
- }
- itemLink.append(itemButtonList);
- DirectoryList.style.gridTemplateColumns = "unset";
- DirectoryList.style.rowGap = "1px";
- }
- DirectoryList.append(itemLink);
- ArrDirectoryItems.push(itemLink);
- let itemIconElement = document.getElementById(itemIconId);
+ } else {
+ switch (item.extension.toLowerCase()) {
+ case ".rs":
+ fileIcon = "resources/rust-file.png";
+ break;
+ case ".js":
+ case ".jsx":
+ fileIcon = "resources/javascript-file.png";
+ break;
+ case ".css":
+ case ".scss":
+ fileIcon = "resources/css-file.png";
+ break;
+ case ".sql":
+ case ".db":
+ fileIcon = "resources/sql-file.png";
+ break;
+ case ".go":
+ fileIcon = "resources/go-file.png";
+ break;
+ case ".md":
+ fileIcon = "resources/markdown-file.png";
+ break;
+ case ".bin":
+ fileIcon = "resources/bin-file.png";
+ break;
+ case ".json":
+ case ".cs":
+ case ".c":
+ case ".xml":
+ case ".htm":
+ case ".html":
+ case ".php":
+ case ".py":
+ case ".ts":
+ case ".tsx":
+ fileIcon = "resources/code-file.png";
+ break;
+ case ".png":
+ case ".jpg":
+ case ".jpeg":
+ case ".gif":
+ case ".webp":
+ case ".svg":
+ case ".ico":
+ case ".bmp":
+ case ".tiff":
+ case ".tif":
+ case ".jfif":
+ case ".avif":
+ case ".icns":
+ if (IsImagePreview) {
+ if (item.size < 10000000 && items.length < 1000) { // ~10 mb
+ fileIcon = convertFileSrc(item.path); // Beispiel für die Verwendung der Funktion
+ } else {
+ fileIcon = "resources/img-file.png";
+ }
+ } else {
+ fileIcon = "resources/img-file.png";
+ }
+ break;
+ case ".pdf":
+ if (IsImagePreview) {
+ if (item.size < 5000000) { // ~5 mb
+ fileIcon = convertFileSrc(item.path); // Beispiel für die Verwendung der Funktion
+ }
+ } else {
+ fileIcon = "resources/pdf-file.png";
+ }
+ break;
+ case ".txt":
+ case ".rtf":
+ fileIcon = "resources/text-file.png";
+ break;
+ case ".docx":
+ case ".doc":
+ fileIcon = "resources/word-file.png";
+ break;
+ case ".zip":
+ case ".rar":
+ case ".tar":
+ case ".zst":
+ case ".7z":
+ case ".gz":
+ case ".xz":
+ case ".bz2":
+ case ".lz":
+ case ".lz4":
+ case ".lzma":
+ case ".lzo":
+ case ".z":
+ case ".zstd":
+ case ".br":
+ fileIcon = "resources/zip-file.png";
+ break;
+ case ".xlsx":
+ fileIcon = "resources/spreadsheet-file.png";
+ break;
+ case ".appimage":
+ fileIcon = "resources/appimage-file.png";
+ break;
+ case ".mp4":
+ case ".mkv":
+ case ".avi":
+ case ".mov":
+ case ".wmv":
+ case ".flv":
+ case ".webm":
+ fileIcon = "resources/video-file.png";
+ break;
+ case ".mp3":
+ case ".wav":
+ case ".ogg":
+ case ".opus":
+ fileIcon = "resources/audio-file.png";
+ break;
+ case ".iso":
+ fileIcon = "resources/iso-file.png";
+ break;
+ default:
+ fileIcon = "resources/file-icon.png";
+ break;
+ }
+ }
+ itemLink.className = "item-link directory-entry";
+ if (ViewMode == "wrap") {
+ var itemButton = document.createElement("div");
+ itemButton.innerHTML = `
+
+ ${item.name}
+ `;
+ itemButton.className = "item-button directory-entry";
+ itemLink.append(itemButton);
+ DirectoryList.style.gridTemplateColumns =
+ "repeat(auto-fill, minmax(80px, 1fr))";
+ DirectoryList.style.rowGap = "15px";
+ } else if (ViewMode == "column") {
+ var itemButtonList = document.createElement("div");
+ itemButtonList.innerHTML = `
+
+
+ ${item.name}
+
+
+ ${item.last_modified}
+ ${formatBytes(parseInt(item.size), 2)}
+
+ `;
+ if (dualPaneSide != null && dualPaneSide != "") {
+ itemButtonList.className = "directory-entry dual-pane-list-item";
+ } else {
+ itemButtonList.className = "item-button-list directory-entry";
+ }
+ itemLink.append(itemButtonList);
+ DirectoryList.style.gridTemplateColumns = "unset";
+ DirectoryList.style.rowGap = "2px";
+ }
+ else if (ViewMode == "miller") {
+ var itemButtonList = document.createElement("div");
+ itemButtonList.innerHTML = `
+
+
+ ${item.name}
+
+ `;
+ if (dualPaneSide != null && dualPaneSide != "") {
+ itemButtonList.className = "directory-entry dual-pane-list-item";
+ } else {
+ itemButtonList.className = "item-button-list directory-entry";
+ }
+ itemLink.append(itemButtonList);
+ DirectoryList.style.gridTemplateColumns = "unset";
+ DirectoryList.style.rowGap = "1px";
+ }
+ DirectoryList.append(itemLink);
+ ArrDirectoryItems.push(itemLink);
+ let itemIconElement = document.getElementById(itemIconId);
if (itemIconElement) {
if (item.size > 10000000) { // ~10 mb
item.src = convertFileSrc(await getThumbnail(item.path));
}
}
- });
- DirectoryList.querySelectorAll("#item-link").forEach((item) => {
- // Start dragging item
- item.ondragstart = async (e) => {
- e.preventDefault();
- IsFileOpIntern = true;
- let icon = DefaultFileIcon;
- if (item.getAttribute("itemisdir") == 1) {
- icon = DefaultFolderIcon;
- }
- if (
- ArrSelectedItems.find(
- (itemOfArray) =>
- itemOfArray.getAttribute("itempath") ==
- item.getAttribute("itempath"),
- ) == null ||
- ArrSelectedItems.length == 0
- ) {
- ArrSelectedItems.push(item);
- }
- let arr = ArrSelectedItems.map((item) => item.getAttribute("itempath"));
- if (
- Platform != "darwin" &&
- (Platform.includes("win") || Platform.includes("linux"))
- ) {
- await startDrag({ item: arr, icon: icon });
- await unSelectAllItems();
- await refreshView();
- } else {
- await startDrag({ item: arr, icon: icon });
- await unSelectAllItems();
- await refreshView();
- }
- };
- // Accept file drop into folders
- item.addEventListener("dragover", (e) => {
- MousePos = [e.clientX, e.clientY];
- if (item.getAttribute("itemisdir") == "1") {
- if (!ArrSelectedItems.includes(item)) {
- item.style.opacity = "0.5";
- item.style.border = "1px solid var(--textColor)";
- DraggedOverElement = item;
- }
- }
- });
- item.addEventListener("dragleave", () => {
- item.style.opacity = "1";
- item.style.border = "1px solid transparent";
- });
- // :item_right_click :context_menu | showItems()
- // Open context menu when right-clicking on file/folder
- item.addEventListener("contextmenu", async (e) => {
- e.preventDefault();
- console.log(IsPopUpOpen, IsInputFocused);
- if (IsPopUpOpen == false && IsInputFocused == false) {
- setupItemContextMenu(item, e);
- }
- });
+ });
+ DirectoryList.querySelectorAll("#item-link").forEach((item) => {
+ // Start dragging item
+ item.ondragstart = async (e) => {
+ e.preventDefault();
+ IsFileOpIntern = true;
+ let icon = DefaultFileIcon;
+ if (item.getAttribute("itemisdir") == 1) {
+ icon = DefaultFolderIcon;
+ }
+ if (
+ ArrSelectedItems.find(
+ (itemOfArray) =>
+ itemOfArray.getAttribute("itempath") ==
+ item.getAttribute("itempath"),
+ ) == null ||
+ ArrSelectedItems.length == 0
+ ) {
+ ArrSelectedItems.push(item);
+ }
+ let arr = ArrSelectedItems.map((item) => item.getAttribute("itempath"));
+ if (
+ Platform != "darwin" &&
+ (Platform.includes("win") || Platform.includes("linux"))
+ ) {
+ await startDrag({ item: arr, icon: icon });
+ await unSelectAllItems();
+ await refreshView();
+ } else {
+ await startDrag({ item: arr, icon: icon });
+ await unSelectAllItems();
+ await refreshView();
+ }
+ };
+ // Accept file drop into folders
+ item.addEventListener("dragover", (e) => {
+ MousePos = [e.clientX, e.clientY];
+ if (item.getAttribute("itemisdir") == "1") {
+ if (!ArrSelectedItems.includes(item)) {
+ item.style.opacity = "0.5";
+ item.style.border = "1px solid var(--textColor)";
+ DraggedOverElement = item;
+ }
+ }
+ });
+ item.addEventListener("dragleave", () => {
+ item.style.opacity = "1";
+ item.style.border = "1px solid transparent";
+ });
+ // :item_right_click :context_menu | showItems()
+ // Open context menu when right-clicking on file/folder
+ item.addEventListener("contextmenu", async (e) => {
+ e.preventDefault();
+ if (IsPopUpOpen == false && IsInputFocused == false) {
+ setupItemContextMenu(item, e);
+ }
+ });
(async () => {
if (isImage(item.getAttribute("itemext"))) {
if (item.getAttribute("itemrawsize") > 10000000) { // ~10 mb
@@ -1211,1865 +1211,1867 @@ async function showItems(items, dualPaneSide = "", millerCol = 1) {
item.querySelector("img").src = convertFileSrc(await invoke("get_app_icns", { path: item.getAttribute("itempath") }));
}
})();
- });
- if (IsDualPaneEnabled == true) {
- if (dualPaneSide == "left") {
- document.querySelector(".dual-pane-left").append(DirectoryList);
- LeftDualPanePath = CurrentDir;
- LeftPaneItemCollection = DirectoryList;
- } else if (dualPaneSide == "right") {
- document.querySelector(".dual-pane-right").append(DirectoryList);
- RightDualPanePath = CurrentDir;
- RightPaneItemCollection = DirectoryList;
- }
- } else if (ViewMode == "miller") {
- $(".miller-col-" + millerCol).html("");
- $(".miller-col-" + millerCol).append(DirectoryList);
- $(".miller-col-" + millerCol).attr("miller-col-path", CurrentDir);
- CurrentMillerCol = millerCol;
- } else {
- document.querySelector(".explorer-container").innerHTML = "";
- document.querySelector(".explorer-container").append(DirectoryList);
- }
- ds.setSettings({
- selectables: document.querySelectorAll(".item-link"),
- area: document.querySelector(".explorer-container"),
- draggability: false
});
- closeLoadingPopup();
+ if (IsDualPaneEnabled == true) {
+ if (dualPaneSide == "left") {
+ document.querySelector(".dual-pane-left").append(DirectoryList);
+ LeftDualPanePath = CurrentDir;
+ LeftPaneItemCollection = DirectoryList;
+ } else if (dualPaneSide == "right") {
+ document.querySelector(".dual-pane-right").append(DirectoryList);
+ RightDualPanePath = CurrentDir;
+ RightPaneItemCollection = DirectoryList;
+ }
+ } else if (ViewMode == "miller") {
+ $(".miller-col-" + millerCol).html("");
+ $(".miller-col-" + millerCol).append(DirectoryList);
+ $(".miller-col-" + millerCol).attr("miller-col-path", CurrentDir);
+ CurrentMillerCol = millerCol;
+ } else {
+ document.querySelector(".explorer-container").innerHTML = "";
+ document.querySelector(".explorer-container").append(DirectoryList);
+ }
+ ds.setSettings({
+ selectables: document.querySelectorAll(".item-link"),
+ area: document.querySelector(".explorer-container"),
+ draggability: false
+ });
+ closeLoadingPopup();
}
listen("addSingleItem", async (item) => {
- item = JSON.parse(item.payload);
- // We need to wait here, otherwise the function won't be triggered
- setTimeout(async () => {
- if (IsDualPaneEnabled == true) {
- await addSingleItem(item, SelectedItemPaneSide);
- } else {
- await addSingleItem(item);
- }
- }, 10);
+ item = JSON.parse(item.payload);
+ // We need to wait here, otherwise the function won't be triggered
+ setTimeout(async () => {
+ if (IsDualPaneEnabled == true) {
+ await addSingleItem(item, SelectedItemPaneSide);
+ } else {
+ await addSingleItem(item);
+ }
+ }, 10);
});
async function addSingleItem(item, dualPaneSide = "", millerCol = 1, itemIndex = 0) {
- if (IsShowHiddenFiles === false) {
- if (item.name.startsWith(".") == true || item.name.toLowerCase().includes("desktop.ini")) {
- return;
- }
- }
- if (item.name.toLowerCase().includes("ntuser")) {
- return;
- }
- IsShowDisks = false;
- // Reset position when navigating in another directory
- window.scrollTo(0, 0);
- if (IsDualPaneEnabled == true) {
- if (dualPaneSide == "left") {
- document.querySelector(".dual-pane-left").scrollTop = 0;
- } else if (dualPaneSide == "right") {
- document.querySelector(".dual-pane-right").scrollTop = 0;
- } else {
- document.querySelector(".dual-pane-left").scrollTop = 0;
- document.querySelector(".dual-pane-right").scrollTop = 0;
- }
- }
- document.querySelector(".normal-list-column-header").style.display = "block";
- document.querySelector(".disk-list-column-header").style.display = "none";
-
- let itemLink = document.createElement("button");
- itemLink.setAttribute(
- "onclick",
- "interactWithItem(this, '" + dualPaneSide + "')",
- );
- itemLink.setAttribute("itempath", item.path);
- itemLink.setAttribute("itemindex", FoundItemsCountIndex++);
- itemLink.setAttribute("itempaneside", dualPaneSide);
- itemLink.setAttribute("itemisdir", item.is_dir ? 1 : 0);
- itemLink.setAttribute("itemext", item.extension);
- itemLink.setAttribute("itemname", item.name);
- itemLink.setAttribute("itemsize", formatBytes(item.size));
- itemLink.setAttribute("itemrawsize", item.size);
- itemLink.setAttribute("itemmodified", item.last_modified);
- itemLink.setAttribute("draggable", true);
- itemLink.setAttribute("id", "item-link");
- itemLink.setAttribute("itemformillercol", parseInt(millerCol) + 1);
-
- let fileIcon = "resources/file-icon.png"; // Default
- let iconSize = "56px";
- if (item.is_dir == 1) {
- fileIcon = "resources/folder-icon.png";
- // Check for dir name to apply custom icons
- if (item.name.toLowerCase().includes("downloads")) {
- fileIcon = "resources/folder-downloads.png";
- } else if (
- item.name.toLowerCase().includes("desktop") ||
- item.name.toLowerCase().includes("schreibtisch")
- ) {
- fileIcon = "resources/folder-desktop.png";
- } else if (
- item.name.toLowerCase().includes("dokumente") ||
- item.name.toLowerCase().includes("documents") ||
- item.name.toLowerCase().includes("docs")
- ) {
- fileIcon = "resources/folder-docs.png";
- } else if (
- item.name.toLowerCase().includes("musik") ||
- item.name.toLowerCase().includes("music")
- ) {
- fileIcon = "resources/folder-music.png";
- } else if (
- item.name.toLowerCase().includes("bilder") ||
- item.name.toLowerCase().includes("pictures") ||
- item.name.toLowerCase().includes("images")
- ) {
- fileIcon = "resources/folder-images.png";
- } else if (
- item.name.toLowerCase().includes("videos") ||
- item.name.toLowerCase().includes("movies") ||
- item.name.toLowerCase().includes("films") ||
- item.name.toLowerCase().includes("filme")
- ) {
- fileIcon = "resources/folder-videos.png";
- } else if (
- item.name.toLowerCase().includes("coding") ||
- item.name.toLowerCase().includes("programming") ||
- item.name.toLowerCase().includes("programmieren") ||
- item.name.toLowerCase().includes("code")
- ) {
- fileIcon = "resources/folder-coding.png";
- } else if (
- item.name.toLowerCase().includes("werkzeuge") ||
- item.name.toLowerCase().includes("tools")
- ) {
- fileIcon = "resources/folder-tools.png";
- } else if (
- item.name.toLowerCase().includes("public") ||
- item.name.toLowerCase().includes("öffentlich") ||
- item.name.toLowerCase().includes("shared") ||
- item.name.toLowerCase().includes("geteilt")
- ) {
- fileIcon = "resources/folder-public.png";
- } else if (
- item.name.toLowerCase().includes("games") ||
- item.name.toLowerCase().includes("spiele")
- ) {
- fileIcon = "resources/folder-games.png";
- } else if (
- item.name.toLowerCase().includes("developer") ||
- item.name.toLowerCase().includes("development")
- ) {
- fileIcon = "resources/folder-development.png";
- }
- } else {
- switch (item.extension) {
- case ".rs":
- fileIcon = "resources/rust-file.png";
- break;
- case ".js":
- case ".jsx":
- fileIcon = "resources/javascript-file.png";
- break;
- case ".css":
- case ".scss":
- fileIcon = "resources/css-file.png";
- break;
- case ".sql":
- case ".db":
- fileIcon = "resources/sql-file.png";
- break;
- case ".go":
- fileIcon = "resources/go-file.png";
- break;
- case ".md":
- fileIcon = "resources/markdown-file.png";
- break;
- case ".bin":
- fileIcon = "resources/bin-file.png";
- break;
- case ".json":
- case ".cs":
- case ".c":
- case ".xml":
- case ".htm":
- case ".html":
- case ".php":
- case ".py":
- case ".ts":
- case ".tsx":
- fileIcon = "resources/code-file.png";
- break;
- case ".png":
- case ".jpg":
- case ".jpeg":
- case ".gif":
- case ".webp":
- case ".svg":
- case ".ico":
- case ".bmp":
- case ".tiff":
- case ".tif":
- case ".jfif":
- case ".avif":
- case ".icns":
- if (IsImagePreview) {
- if (item.size < 10000000) { // ~10 mb
- fileIcon = convertFileSrc(item.path);
- }
- else {
- fileIcon = "resources/img-file.png";
- }
- } else {
- fileIcon = "resources/img-file.png";
- }
- break;
- case ".pdf":
- if (IsImagePreview) {
- fileIcon = convertFileSrc(item.path);
- } else {
- fileIcon = "resources/pdf-file.png";
- }
- break;
- case ".txt":
- fileIcon = "resources/text-file.png";
- break;
- case ".docx":
- case ".doc":
- fileIcon = "resources/word-file.png";
- break;
- case ".zip":
- case ".rar":
- case ".tar":
- case ".zst":
- case ".7z":
- case ".gz":
- case ".xz":
- case ".bz2":
- case ".lz":
- case ".lz4":
- case ".lzma":
- case ".lzo":
- case ".z":
- case ".zstd":
- case ".br":
- fileIcon = "resources/zip-file.png";
- break;
- case ".xlsx":
- fileIcon = "resources/spreadsheet-file.png";
- break;
- case ".appimage":
- fileIcon = "resources/appimage-file.png";
- break;
- case ".mp4":
- case ".mkv":
- case ".avi":
- case ".mov":
- case ".wmv":
- case ".flv":
- case ".webm":
- fileIcon = "resources/video-file.png";
- break;
- case ".mp3":
- case ".wav":
- case ".ogg":
- case ".opus":
- fileIcon = "resources/audio-file.png";
- break;
- case ".iso":
- fileIcon = "resources/iso-file.png";
- break;
- default:
- fileIcon = "resources/file-icon.png";
- break;
- }
- }
- itemLink.className = "item-link directory-entry";
- if (ViewMode == "wrap") {
- var itemButton = document.createElement("div");
- itemButton.innerHTML = `
-
- ${item.name}
- `;
- itemButton.className = "item-button directory-entry";
- itemLink.append(itemButton);
- $(".directory-list").css(
- "gridTemplateColumns",
- "repeat(auto-fill, minmax(80px, 1fr))",
- );
- $(".directory-list").css("rowGap", "15px");
- } else if (ViewMode == "column") {
- var itemButtonList = document.createElement("div");
- itemButtonList.innerHTML = `
-
-
- ${item.name}
-
-
- ${item.last_modified}
- ${formatBytes(parseInt(item.size), 2)}
-
- `;
- if (dualPaneSide != null && dualPaneSide != "") {
- itemButtonList.className = "directory-entry dual-pane-list-item";
- } else {
- itemButtonList.className = "item-button-list directory-entry";
- }
- itemLink.append(itemButtonList);
- $(".directory-list").css("gridTemplateColumns", "unset");
- $(".directory-list").css("rowGap", "2px");
- }
- if (ViewMode == "miller") {
- $(".directory-list").style.gridTemplateColumns = "unset";
- $(".directory-list").style.rowGap = "1px";
- }
- // Start dragging item
- itemLink.ondragstart = async (e) => {
- e.preventDefault();
- IsFileOpIntern = true;
- let icon = DefaultFileIcon;
- if (itemLink.getAttribute("itemisdir") == 1) {
- icon = DefaultFolderIcon;
- }
- if (
- ArrSelectedItems.find(
- (itemOfArray) =>
- itemOfArray.getAttribute("itempath") ==
- itemLink.getAttribute("itempath"),
- ) == null ||
- ArrSelectedItems.length == 0
- ) {
- ArrSelectedItems.push(itemLink);
- }
- let arr = ArrSelectedItems.map((item) => item.getAttribute("itempath"));
- if (
- Platform != "darwin" &&
- (Platform.includes("win") || Platform.includes("linux"))
- ) {
- await startDrag({ item: arr, icon: "" });
- unSelectAllItems();
- } else {
- await startDrag({ item: arr, icon: icon });
- unSelectAllItems();
- }
- };
- // Accept file drop into folders
- itemLink.addEventListener("dragover", (e) => {
- MousePos = [e.clientX, e.clientY];
- if (itemLink.getAttribute("itemisdir") == "1") {
- if (!ArrSelectedItems.includes(itemLink)) {
- itemLink.style.opacity = "0.5";
- itemLink.style.border = "1px solid var(--textColor)";
- DraggedOverElement = itemLink;
- }
- }
- });
- itemLink.addEventListener("dragleave", () => {
- itemLink.style.opacity = "1";
- itemLink.style.border = "1px solid transparent";
- });
- // :item_right_click :context_menu | AddSingleItem()
- // Open context menu when right-clicking on file/folder
- itemLink.addEventListener("contextmenu", async (e) => {
- e.preventDefault();
- if (IsPopUpOpen == false && IsInputFocused == false) {
- setupItemContextMenu(itemLink, e);
- }
- });
-
- if (IsDualPaneEnabled === true) {
- if (dualPaneSide === "left") {
- $(".dual-pane-left").append(itemLink);
- LeftPaneItemCollection = document.querySelector(".dual-pane-left");
- goUp(false, true);
- } else if (dualPaneSide === "right") {
- $(".dual-pane-right").append(itemLink);
- RightPaneItemCollection = document.querySelector(".dual-pane-right");
- goUp(false, true);
- }
- }
- else {
- $(".directory-list").append(itemLink);
- }
- ArrDirectoryItems.push(itemLink);
+ if (IsShowHiddenFiles === false) {
+ if (item.name.startsWith(".") == true || item.name.toLowerCase().includes("desktop.ini")) {
+ return;
+ }
+ }
+ if (item.name.toLowerCase().includes("ntuser")) {
+ return;
+ }
+ IsShowDisks = false;
+ // Reset position when navigating in another directory
+ window.scrollTo(0, 0);
+ if (IsDualPaneEnabled == true) {
+ if (dualPaneSide == "left") {
+ document.querySelector(".dual-pane-left").scrollTop = 0;
+ } else if (dualPaneSide == "right") {
+ document.querySelector(".dual-pane-right").scrollTop = 0;
+ } else {
+ document.querySelector(".dual-pane-left").scrollTop = 0;
+ document.querySelector(".dual-pane-right").scrollTop = 0;
+ }
+ }
+ document.querySelector(".normal-list-column-header").style.display = "block";
+ document.querySelector(".disk-list-column-header").style.display = "none";
+
+ let itemLink = document.createElement("button");
+ itemLink.setAttribute(
+ "onclick",
+ "interactWithItem(this, '" + dualPaneSide + "')",
+ );
+ itemLink.setAttribute("itempath", item.path);
+ itemLink.setAttribute("itemindex", FoundItemsCountIndex++);
+ itemLink.setAttribute("itempaneside", dualPaneSide);
+ itemLink.setAttribute("itemisdir", item.is_dir ? 1 : 0);
+ itemLink.setAttribute("itemext", item.extension);
+ itemLink.setAttribute("itemname", item.name);
+ itemLink.setAttribute("itemsize", formatBytes(item.size));
+ itemLink.setAttribute("itemrawsize", item.size);
+ itemLink.setAttribute("itemmodified", item.last_modified);
+ itemLink.setAttribute("draggable", true);
+ itemLink.setAttribute("id", "item-link");
+ itemLink.setAttribute("itemformillercol", parseInt(millerCol) + 1);
+
+ let fileIcon = "resources/file-icon.png"; // Default
+ let iconSize = "56px";
+ if (item.is_dir == 1) {
+ fileIcon = "resources/folder-icon.png";
+ // Check for dir name to apply custom icons
+ if (item.name.toLowerCase().includes("downloads")) {
+ fileIcon = "resources/folder-downloads.png";
+ } else if (
+ item.name.toLowerCase().includes("desktop") ||
+ item.name.toLowerCase().includes("schreibtisch")
+ ) {
+ fileIcon = "resources/folder-desktop.png";
+ } else if (
+ item.name.toLowerCase().includes("dokumente") ||
+ item.name.toLowerCase().includes("documents") ||
+ item.name.toLowerCase().includes("docs")
+ ) {
+ fileIcon = "resources/folder-docs.png";
+ } else if (
+ item.name.toLowerCase().includes("musik") ||
+ item.name.toLowerCase().includes("music")
+ ) {
+ fileIcon = "resources/folder-music.png";
+ } else if (
+ item.name.toLowerCase().includes("bilder") ||
+ item.name.toLowerCase().includes("pictures") ||
+ item.name.toLowerCase().includes("images")
+ ) {
+ fileIcon = "resources/folder-images.png";
+ } else if (
+ item.name.toLowerCase().includes("videos") ||
+ item.name.toLowerCase().includes("movies") ||
+ item.name.toLowerCase().includes("films") ||
+ item.name.toLowerCase().includes("filme")
+ ) {
+ fileIcon = "resources/folder-videos.png";
+ } else if (
+ item.name.toLowerCase().includes("coding") ||
+ item.name.toLowerCase().includes("programming") ||
+ item.name.toLowerCase().includes("programmieren") ||
+ item.name.toLowerCase().includes("code")
+ ) {
+ fileIcon = "resources/folder-coding.png";
+ } else if (
+ item.name.toLowerCase().includes("werkzeuge") ||
+ item.name.toLowerCase().includes("tools")
+ ) {
+ fileIcon = "resources/folder-tools.png";
+ } else if (
+ item.name.toLowerCase().includes("public") ||
+ item.name.toLowerCase().includes("öffentlich") ||
+ item.name.toLowerCase().includes("shared") ||
+ item.name.toLowerCase().includes("geteilt")
+ ) {
+ fileIcon = "resources/folder-public.png";
+ } else if (
+ item.name.toLowerCase().includes("games") ||
+ item.name.toLowerCase().includes("spiele")
+ ) {
+ fileIcon = "resources/folder-games.png";
+ } else if (
+ item.name.toLowerCase().includes("developer") ||
+ item.name.toLowerCase().includes("development")
+ ) {
+ fileIcon = "resources/folder-development.png";
+ }
+ } else {
+ switch (item.extension) {
+ case ".rs":
+ fileIcon = "resources/rust-file.png";
+ break;
+ case ".js":
+ case ".jsx":
+ fileIcon = "resources/javascript-file.png";
+ break;
+ case ".css":
+ case ".scss":
+ fileIcon = "resources/css-file.png";
+ break;
+ case ".sql":
+ case ".db":
+ fileIcon = "resources/sql-file.png";
+ break;
+ case ".go":
+ fileIcon = "resources/go-file.png";
+ break;
+ case ".md":
+ fileIcon = "resources/markdown-file.png";
+ break;
+ case ".bin":
+ fileIcon = "resources/bin-file.png";
+ break;
+ case ".json":
+ case ".cs":
+ case ".c":
+ case ".xml":
+ case ".htm":
+ case ".html":
+ case ".php":
+ case ".py":
+ case ".ts":
+ case ".tsx":
+ fileIcon = "resources/code-file.png";
+ break;
+ case ".png":
+ case ".jpg":
+ case ".jpeg":
+ case ".gif":
+ case ".webp":
+ case ".svg":
+ case ".ico":
+ case ".bmp":
+ case ".tiff":
+ case ".tif":
+ case ".jfif":
+ case ".avif":
+ case ".icns":
+ if (IsImagePreview) {
+ if (item.size < 10000000) { // ~10 mb
+ fileIcon = convertFileSrc(item.path);
+ }
+ else {
+ fileIcon = "resources/img-file.png";
+ }
+ } else {
+ fileIcon = "resources/img-file.png";
+ }
+ break;
+ case ".pdf":
+ if (IsImagePreview) {
+ fileIcon = convertFileSrc(item.path);
+ } else {
+ fileIcon = "resources/pdf-file.png";
+ }
+ break;
+ case ".txt":
+ fileIcon = "resources/text-file.png";
+ break;
+ case ".docx":
+ case ".doc":
+ fileIcon = "resources/word-file.png";
+ break;
+ case ".zip":
+ case ".rar":
+ case ".tar":
+ case ".zst":
+ case ".7z":
+ case ".gz":
+ case ".xz":
+ case ".bz2":
+ case ".lz":
+ case ".lz4":
+ case ".lzma":
+ case ".lzo":
+ case ".z":
+ case ".zstd":
+ case ".br":
+ fileIcon = "resources/zip-file.png";
+ break;
+ case ".xlsx":
+ fileIcon = "resources/spreadsheet-file.png";
+ break;
+ case ".appimage":
+ fileIcon = "resources/appimage-file.png";
+ break;
+ case ".mp4":
+ case ".mkv":
+ case ".avi":
+ case ".mov":
+ case ".wmv":
+ case ".flv":
+ case ".webm":
+ fileIcon = "resources/video-file.png";
+ break;
+ case ".mp3":
+ case ".wav":
+ case ".ogg":
+ case ".opus":
+ fileIcon = "resources/audio-file.png";
+ break;
+ case ".iso":
+ fileIcon = "resources/iso-file.png";
+ break;
+ default:
+ fileIcon = "resources/file-icon.png";
+ break;
+ }
+ }
+ itemLink.className = "item-link directory-entry";
+ if (ViewMode == "wrap") {
+ var itemButton = document.createElement("div");
+ itemButton.innerHTML = `
+
+ ${item.name}
+ `;
+ itemButton.className = "item-button directory-entry";
+ itemLink.append(itemButton);
+ $(".directory-list").css(
+ "gridTemplateColumns",
+ "repeat(auto-fill, minmax(80px, 1fr))",
+ );
+ $(".directory-list").css("rowGap", "15px");
+ } else if (ViewMode == "column") {
+ var itemButtonList = document.createElement("div");
+ itemButtonList.innerHTML = `
+
+
+ ${item.name}
+
+
+ ${item.last_modified}
+ ${formatBytes(parseInt(item.size), 2)}
+
+ `;
+ if (dualPaneSide != null && dualPaneSide != "") {
+ itemButtonList.className = "directory-entry dual-pane-list-item";
+ } else {
+ itemButtonList.className = "item-button-list directory-entry";
+ }
+ itemLink.append(itemButtonList);
+ $(".directory-list").css("gridTemplateColumns", "unset");
+ $(".directory-list").css("rowGap", "2px");
+ }
+ if (ViewMode == "miller") {
+ $(".directory-list").style.gridTemplateColumns = "unset";
+ $(".directory-list").style.rowGap = "1px";
+ }
+ // Start dragging item
+ itemLink.ondragstart = async (e) => {
+ e.preventDefault();
+ IsFileOpIntern = true;
+ let icon = DefaultFileIcon;
+ if (itemLink.getAttribute("itemisdir") == 1) {
+ icon = DefaultFolderIcon;
+ }
+ if (
+ ArrSelectedItems.find(
+ (itemOfArray) =>
+ itemOfArray.getAttribute("itempath") ==
+ itemLink.getAttribute("itempath"),
+ ) == null ||
+ ArrSelectedItems.length == 0
+ ) {
+ ArrSelectedItems.push(itemLink);
+ }
+ let arr = ArrSelectedItems.map((item) => item.getAttribute("itempath"));
+ if (
+ Platform != "darwin" &&
+ (Platform.includes("win") || Platform.includes("linux"))
+ ) {
+ await startDrag({ item: arr, icon: "" });
+ unSelectAllItems();
+ } else {
+ await startDrag({ item: arr, icon: icon });
+ unSelectAllItems();
+ }
+ };
+ // Accept file drop into folders
+ itemLink.addEventListener("dragover", (e) => {
+ MousePos = [e.clientX, e.clientY];
+ if (itemLink.getAttribute("itemisdir") == "1") {
+ if (!ArrSelectedItems.includes(itemLink)) {
+ itemLink.style.opacity = "0.5";
+ itemLink.style.border = "1px solid var(--textColor)";
+ DraggedOverElement = itemLink;
+ }
+ }
+ });
+ itemLink.addEventListener("dragleave", () => {
+ itemLink.style.opacity = "1";
+ itemLink.style.border = "1px solid transparent";
+ });
+ // :item_right_click :context_menu | AddSingleItem()
+ // Open context menu when right-clicking on file/folder
+ itemLink.addEventListener("contextmenu", async (e) => {
+ e.preventDefault();
+ if (IsPopUpOpen == false && IsInputFocused == false) {
+ setupItemContextMenu(itemLink, e);
+ }
+ });
+
+ if (IsDualPaneEnabled === true) {
+ if (dualPaneSide === "left") {
+ $(".dual-pane-left").append(itemLink);
+ LeftPaneItemCollection = document.querySelector(".dual-pane-left");
+ goUp(false, true);
+ } else if (dualPaneSide === "right") {
+ $(".dual-pane-right").append(itemLink);
+ RightPaneItemCollection = document.querySelector(".dual-pane-right");
+ goUp(false, true);
+ }
+ }
+ else {
+ $(".directory-list").append(itemLink);
+ }
+ ArrDirectoryItems.push(itemLink);
}
async function getCurrentDir() {
- return await invoke("get_current_dir");
+ return await invoke("get_current_dir");
}
async function setCurrentDir(currentDir = "", dualPaneSide = "") {
- if (currentDir == "") return;
-
- if (dualPaneSide != "") {
- SelectedItemPaneSide = dualPaneSide;
- }
-
- await invoke("set_dir", { currentDir }).then(async (isSuccess) => {
- if (isSuccess === false) {
- alert("Switching directory failed. Probably no permissions.");
- return;
- }
- CurrentDir = currentDir;
- let currentDirContainer = document.querySelector(".current-path");
- currentDirContainer.innerHTML = "";
- let currentPathTracker = "/";
- if (Platform != "darwin" && Platform.includes("win")) {
- currentPathTracker = "";
- }
- currentDir.split("/").forEach((path) => {
- if (path == "") return;
- let pathItem = document.createElement("button");
- pathItem.textContent = path;
- pathItem.className = "path-item";
- currentPathTracker += path + "/";
- pathItem.setAttribute("itempath", currentPathTracker);
- pathItem.setAttribute("itempaneside", dualPaneSide);
- pathItem.setAttribute("itemisdir", 1);
- pathItem.setAttribute(
- "onClick",
- "openItem(this, '" + dualPaneSide + "', '')",
- );
- pathItem.ondragover = (e) => {
- MousePos = [e.clientX, e.clientY-60];
- e.preventDefault();
- pathItem.style.opacity = 0.5;
- pathItem.style.border = "1px solid var(--textColor)";
- DraggedOverElement = pathItem;
- }
- pathItem.ondragleave = (e) => {
- e.preventDefault();
- pathItem.style.opacity = 1;
- pathItem.style.border = "1px solid transparent";
- }
- let divider = document.createElement("i");
- divider.className = "fa fa-chevron-right";
- divider.style.color = "var(--textColor)";
- currentDirContainer.appendChild(pathItem);
- currentDirContainer.appendChild(divider);
- });
- try {
- if (currentDirContainer?.lastElementChild?.textContent !== "/") {
- currentDirContainer?.removeChild(currentDirContainer?.lastElementChild);
- }
- }
- catch (err) {
+ if (currentDir == "") return;
+
+ if (dualPaneSide != "") {
+ SelectedItemPaneSide = dualPaneSide;
+ }
+
+ await invoke("set_dir", { currentDir }).then(async (isSuccess) => {
+ if (isSuccess === false) {
+ alert("Switching directory failed. Probably no permissions.");
+ return;
+ }
+ CurrentDir = currentDir;
+ let currentDirContainer = document.querySelector(".current-path");
+ currentDirContainer.innerHTML = "";
+ let currentPathTracker = "/";
+ if (Platform != "darwin" && Platform.includes("win")) {
+ currentPathTracker = "";
+ }
+ currentDir.split("/").forEach((path) => {
+ if (path == "") return;
+ let pathItem = document.createElement("button");
+ pathItem.textContent = path;
+ pathItem.className = "path-item";
+ currentPathTracker += path + "/";
+ pathItem.setAttribute("itempath", currentPathTracker);
+ pathItem.setAttribute("itempaneside", dualPaneSide);
+ pathItem.setAttribute("itemisdir", 1);
+ pathItem.setAttribute(
+ "onClick",
+ "openItem(this, '" + dualPaneSide + "', '')",
+ );
+ pathItem.ondragover = (e) => {
+ MousePos = [e.clientX, e.clientY-60];
+ e.preventDefault();
+ pathItem.style.opacity = 0.5;
+ pathItem.style.border = "1px solid var(--textColor)";
+ DraggedOverElement = pathItem;
+ }
+ pathItem.ondragleave = (e) => {
+ e.preventDefault();
+ pathItem.style.opacity = 1;
+ pathItem.style.border = "1px solid transparent";
+ }
+ let divider = document.createElement("i");
+ divider.className = "fa fa-chevron-right";
+ divider.style.color = "var(--textColor)";
+ currentDirContainer.appendChild(pathItem);
+ currentDirContainer.appendChild(divider);
+ });
+ try {
+ if (currentDirContainer?.lastElementChild?.textContent !== "/") {
+ currentDirContainer?.removeChild(currentDirContainer?.lastElementChild);
+ }
+ }
+ catch (err) {
await writeLog(err);
- }
- });
-
- if (dualPaneSide == "left") {
- LeftDualPanePath = currentDir;
- $(".dual-pane-left").css("box-shadow", "inset 0px 0px 30px 3px var(--transparentColorActive)");
- $(".dual-pane-right").css("box-shadow", "none");
- } else if (dualPaneSide == "right") {
- RightDualPanePath = currentDir;
- $(".dual-pane-right").css("box-shadow", "inset 0px 0px 30px 3px var(--transparentColorActive)");
- $(".dual-pane-left").css("box-shadow", "none");
- }
+ }
+ });
+
+ if (dualPaneSide == "left") {
+ LeftDualPanePath = currentDir;
+ $(".dual-pane-left").css("box-shadow", "inset 0px 0px 30px 3px var(--transparentColorActive)");
+ $(".dual-pane-right").css("box-shadow", "none");
+ } else if (dualPaneSide == "right") {
+ RightDualPanePath = currentDir;
+ $(".dual-pane-right").css("box-shadow", "inset 0px 0px 30px 3px var(--transparentColorActive)");
+ $(".dual-pane-left").css("box-shadow", "none");
+ }
}
async function deleteItems() {
- ContextMenu.style.display = "none";
- let msg = "Do you really want to delete: ";
- for (let i = 0; i < ArrSelectedItems.length; i++) {
- if (i == 0) {
- msg += "";
- } else {
- msg += " ";
- }
- }
- let arr = ArrSelectedItems.map((item) => item.getAttribute("itempath"));
- let isConfirm = await confirmPopup(msg, PopupType.DELETE);
- if (isConfirm == true) {
- let actionId = new Date().getMilliseconds();
- createNewAction(actionId, "Deleting", "Delete Items", "Delete Items");
- for (let i = 0; i < arr.length; i++) {
- let actFileName = arr[i];
- await invoke("delete_item", { actFileName });
- }
- IsCopyToCut = false;
- await listDirectories();
- ArrSelectedItems = [];
- showToast("Deletion of items is done", ToastType.INFO);
- removeAction(actionId);
- }
+ ContextMenu.style.display = "none";
+ let msg = "Do you really want to delete: ";
+ for (let i = 0; i < ArrSelectedItems.length; i++) {
+ if (i == 0) {
+ msg += "";
+ } else {
+ msg += " ";
+ }
+ }
+ let arr = ArrSelectedItems.map((item) => item.getAttribute("itempath"));
+ let isConfirm = await confirmPopup(msg, PopupType.DELETE);
+ if (isConfirm == true) {
+ let actionId = new Date().getMilliseconds();
+ createNewAction(actionId, "Deleting", "Delete Items", "Delete Items");
+ for (let i = 0; i < arr.length; i++) {
+ let actFileName = arr[i];
+ await invoke("delete_item", { actFileName });
+ }
+ IsCopyToCut = false;
+ await listDirectories();
+ ArrSelectedItems = [];
+ showToast("Deletion of items is done", ToastType.INFO);
+ removeAction(actionId);
+ }
}
async function copyItem(item, toCut = false, fromInternal = false) {
- if (item == null) {
- return;
- }
- CopyFilePath = item?.getAttribute("itempath");
- let tempCopyFilePath = item?.getAttribute("itempath").split("/");
- CopyFileName = tempCopyFilePath[tempCopyFilePath.length - 1].replace("'", "");
- if (fromInternal == false) {
- ArrCopyItems = [];
- }
- if (ArrSelectedItems.length > 0) {
- for (let i = 0; i < ArrSelectedItems.length; i++) {
- if (toCut === true) {
- ArrSelectedItems[i].style.opacity = "0.5";
- ArrSelectedItems[i].style.filter = "blur(2px)";
- }
- ArrCopyItems.push(ArrSelectedItems[i]);
- }
- } else {
- ArrCopyItems.push(item);
- if (toCut === true) {
- item.style.opacity = "0.5";
- item.style.filter = "blur(2px)";
- }
- }
- ContextMenu.style.display = "none";
- await writeText(CopyFilePath);
- if (toCut == true) {
- IsCopyToCut = true;
- } else {
- IsCopyToCut = false;
- }
+ if (item == null) {
+ return;
+ }
+ CopyFilePath = item?.getAttribute("itempath");
+ let tempCopyFilePath = item?.getAttribute("itempath").split("/");
+ CopyFileName = tempCopyFilePath[tempCopyFilePath.length - 1].replace("'", "");
+ if (fromInternal == false) {
+ ArrCopyItems = [];
+ }
+ if (ArrSelectedItems.length > 0) {
+ for (let i = 0; i < ArrSelectedItems.length; i++) {
+ if (toCut === true) {
+ ArrSelectedItems[i].style.opacity = "0.5";
+ ArrSelectedItems[i].style.filter = "blur(2px)";
+ }
+ ArrCopyItems.push(ArrSelectedItems[i]);
+ }
+ } else {
+ ArrCopyItems.push(item);
+ if (toCut === true) {
+ item.style.opacity = "0.5";
+ item.style.filter = "blur(2px)";
+ }
+ }
+ ContextMenu.style.display = "none";
+ await writeText(CopyFilePath);
+ if (toCut == true) {
+ IsCopyToCut = true;
+ } else {
+ IsCopyToCut = false;
+ }
}
async function extractItem(item) {
- let compressFilePath = item.getAttribute("itempath");
- let compressFileName = compressFilePath.split("/")[compressFilePath.split("/").length - 1].replace("'", "");
- ContextMenu.style.display = "none";
- let isExtracting = await confirmPopup("Do you want to extract " + compressFileName + "?", PopupType.EXTRACT);
- if (isExtracting == true) {
- ContextMenu.style.display = "none";
- let extractFilePath = item.getAttribute("itempath");
- let extractFileName = item.getAttribute("itemname");
- if (extractFileName != "") {
- let fromPath = extractFilePath.toString();
- await invoke("extract_item", { fromPath, appWindow });
- showToast("Extraction done", ToastType.SUCCESS);
- await listDirectories();
- }
- }
+ let compressFilePath = item.getAttribute("itempath");
+ let compressFileName = compressFilePath.split("/")[compressFilePath.split("/").length - 1].replace("'", "");
+ ContextMenu.style.display = "none";
+ let isExtracting = await confirmPopup("Do you want to extract " + compressFileName + "?", PopupType.EXTRACT);
+ if (isExtracting == true) {
+ ContextMenu.style.display = "none";
+ let extractFilePath = item.getAttribute("itempath");
+ let extractFileName = item.getAttribute("itemname");
+ if (extractFileName != "") {
+ let fromPath = extractFilePath.toString();
+ await invoke("extract_item", { fromPath, appWindow });
+ showToast("Extraction done", ToastType.SUCCESS);
+ await listDirectories();
+ }
+ }
}
async function showCompressPopup(item) {
- IsPopUpOpen = true;
- ContextMenu.style.display = "none";
- let arrCompressItems = ArrSelectedItems;
- if (ArrSelectedItems.length > 1) {
- arrCompressItems = ArrSelectedItems;
- } else {
- arrCompressItems = [item];
- }
- let compressFileName = "";
- if (arrCompressItems.length > 1) {
- for (let i = 0; i < arrCompressItems.length; i++) {
- compressFileName += arrCompressItems[i].getAttribute("itemname") + " ";
- }
- } else {
- compressFileName = item.getAttribute("itemname");
- }
- if (compressFileName != "") {
- let popup = document.createElement("div");
- popup.innerHTML = `
-
-
-
Selected item
-
${compressFileName}
-
-
-
- `;
- popup.className = "uni-popup compression-popup";
- document.querySelector("body").append(popup);
- document
- .querySelector(".compress-item-button")
- .addEventListener("click", async () => {
- await compressItem(
- arrCompressItems,
- $(".compression-popup-level-input").val(),
- );
- });
- $(".compression-popup-level-input").on(
- "focus",
- () => (IsInputFocused = true),
- );
- $(".compression-popup-level-input").on(
- "blur",
- () => (IsInputFocused = false),
- );
- $(".compression-popup-level-input").on("keyup", (e) => {
- if (
- ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
- e.key == "Enter"
- ) {
- $(".compress-item-button").click();
- }
- });
- }
+ IsPopUpOpen = true;
+ ContextMenu.style.display = "none";
+ let arrCompressItems = ArrSelectedItems;
+ if (ArrSelectedItems.length > 1) {
+ arrCompressItems = ArrSelectedItems;
+ } else {
+ arrCompressItems = [item];
+ }
+ let compressFileName = "";
+ if (arrCompressItems.length > 1) {
+ for (let i = 0; i < arrCompressItems.length; i++) {
+ compressFileName += arrCompressItems[i].getAttribute("itemname") + " ";
+ }
+ } else {
+ compressFileName = item.getAttribute("itemname");
+ }
+ if (compressFileName != "") {
+ let popup = document.createElement("div");
+ popup.innerHTML = `
+
+
+
Selected item
+
${compressFileName}
+
+
+
+ `;
+ popup.className = "uni-popup compression-popup";
+ document.querySelector("body").append(popup);
+ document
+ .querySelector(".compress-item-button")
+ .addEventListener("click", async () => {
+ await compressItem(
+ arrCompressItems,
+ $(".compression-popup-level-input").val(),
+ );
+ });
+ $(".compression-popup-level-input").on(
+ "focus",
+ () => (IsInputFocused = true),
+ );
+ $(".compression-popup-level-input").on(
+ "blur",
+ () => (IsInputFocused = false),
+ );
+ $(".compression-popup-level-input").on("keyup", (e) => {
+ if (
+ ((e.ctrlKey && Platform != "darwin") || e.metaKey) &&
+ e.key == "Enter"
+ ) {
+ $(".compress-item-button").click();
+ }
+ });
+ }
}
async function compressItem(arrItems, compressionLevel = 3) {
- closeCompressPopup();
- if (arrItems.length > 1) {
- ContextMenu.style.display = "none";
- await invoke("arr_compress_items", {
- arrItems: arrItems.map((item) => item.getAttribute("itempath")),
- compressionLevel: parseInt(compressionLevel),
- appWindow
- });
- await listDirectories();
- showToast("Compressing done", ToastType.INFO);
- } else {
- let item = arrItems[0];
- let compressFilePath = item.getAttribute("itempath");
- let compressFileName = item.getAttribute("itemname");
- if (compressFileName != "") {
- // open compressing... popup
- ContextMenu.style.display = "none";
- SelectedItemPaneSide = item.getAttribute("itempaneside");
- await invoke("compress_item", {
- fromPath: compressFilePath,
- compressionLevel: parseInt(compressionLevel),
- pathToZip: compressFilePath,
- appWindow
- });
- await listDirectories();
- showToast("Compressing done", ToastType.INFO);
- }
- }
+ closeCompressPopup();
+ if (arrItems.length > 1) {
+ ContextMenu.style.display = "none";
+ await invoke("arr_compress_items", {
+ arrItems: arrItems.map((item) => item.getAttribute("itempath")),
+ compressionLevel: parseInt(compressionLevel),
+ appWindow
+ });
+ await listDirectories();
+ showToast("Compressing done", ToastType.INFO);
+ } else {
+ let item = arrItems[0];
+ let compressFilePath = item.getAttribute("itempath");
+ let compressFileName = item.getAttribute("itemname");
+ if (compressFileName != "") {
+ // open compressing... popup
+ ContextMenu.style.display = "none";
+ SelectedItemPaneSide = item.getAttribute("itempaneside");
+ await invoke("compress_item", {
+ fromPath: compressFilePath,
+ compressionLevel: parseInt(compressionLevel),
+ pathToZip: compressFilePath,
+ appWindow
+ });
+ await listDirectories();
+ showToast("Compressing done", ToastType.INFO);
+ }
+ }
}
async function closeCompressPopup() {
- $(".compression-popup").remove();
- IsPopUpOpen = false;
+ $(".compression-popup").remove();
+ IsPopUpOpen = false;
IsInputFocused = false;
}
function showLoadingPopup(msg) {
- let body = document.querySelector("body");
- let popup = document.createElement("div");
- popup.innerHTML = `
- ${msg}
-
- `;
- popup.className = "uni-popup loading-popup";
- body.append(popup);
- IsPopUpOpen = true;
+ let body = document.querySelector("body");
+ let popup = document.createElement("div");
+ popup.innerHTML = `
+ ${msg}
+
+ `;
+ popup.className = "uni-popup loading-popup";
+ body.append(popup);
+ IsPopUpOpen = true;
}
function closeLoadingPopup() {
- $(".loading-popup").remove();
- IsPopUpOpen = false;
+ $(".loading-popup").remove();
+ IsPopUpOpen = false;
}
function showInputPopup(msg) {
- let body = document.querySelector("body");
- let popup = document.createElement("div");
- popup.innerHTML = `
- ${msg}
-
- `;
- popup.className = "input-popup input-dialog uni-popup";
- popup.children[1].addEventListener("keyup", async (e) => {
- if (e.keyCode == 13) {
+ let body = document.querySelector("body");
+ let popup = document.createElement("div");
+ popup.innerHTML = `
+ ${msg}
+
+ `;
+ popup.className = "input-popup input-dialog uni-popup";
+ popup.children[1].addEventListener("keyup", async (e) => {
+ if (e.keyCode == 13) {
await openDirAndSwitch(popup.children[1].value);
- await listDirectories();
- closeInputPopup();
- }
- });
- body.append(popup);
- IsPopUpOpen = true;
- popup.children[1].focus();
- IsInputFocused = true;
- popup.children[1].addEventListener("focusout", () => {
- resetEverything();
- IsInputFocused = false;
- });
+ await listDirectories();
+ closeInputPopup();
+ }
+ });
+ body.append(popup);
+ IsPopUpOpen = true;
+ popup.children[1].focus();
+ IsInputFocused = true;
+ popup.children[1].addEventListener("focusout", () => {
+ resetEverything();
+ IsInputFocused = false;
+ });
}
function closeInputPopup() {
- $(".input-popup").remove();
- IsPopUpOpen = false;
+ $(".input-popup").remove();
+ IsPopUpOpen = false;
IsInputFocused = false;
}
async function itemMoveTo(isForDualPane = false) {
- ContextMenu.style.display = "none";
- let selectedPath = "";
- if (isForDualPane == false) {
- selectedPath = await open({ multiple: false, directory: true });
- } else {
- switch (SelectedItemPaneSide) {
- case "left":
- await setCurrentDir(RightDualPanePath, "right");
- selectedPath = CurrentDir;
- break;
- case "right":
- await setCurrentDir(LeftDualPanePath, "left");
- selectedPath = CurrentDir;
- break;
- }
- }
- if (selectedPath != "" && selectedPath != null) {
- await invoke("arr_copy_paste", {
- appWindow,
- arrItems: ArrSelectedItems.map((item) => item.getAttribute("itempath")),
- isForDualPane: isForDualPane ? "1" : "0",
- copyToPath: selectedPath,
- }).then(async () => {
- await invoke("arr_delete_items", {
- arrItems: ArrSelectedItems.map((item) => item.getAttribute("itempath")),
- });
- if (isForDualPane) {
- refreshBothViews(SelectedItemPaneSide);
- } else {
- refreshView();
- }
- });
- }
+ ContextMenu.style.display = "none";
+ let selectedPath = "";
+ if (isForDualPane == false) {
+ selectedPath = await open({ multiple: false, directory: true });
+ } else {
+ switch (SelectedItemPaneSide) {
+ case "left":
+ await setCurrentDir(RightDualPanePath, "right");
+ selectedPath = CurrentDir;
+ break;
+ case "right":
+ await setCurrentDir(LeftDualPanePath, "left");
+ selectedPath = CurrentDir;
+ break;
+ }
+ }
+ if (selectedPath != "" && selectedPath != null) {
+ await invoke("arr_copy_paste", {
+ appWindow,
+ arrItems: ArrSelectedItems.map((item) => item.getAttribute("itempath")),
+ isForDualPane: isForDualPane ? "1" : "0",
+ copyToPath: selectedPath,
+ }).then(async () => {
+ await invoke("arr_delete_items", {
+ arrItems: ArrSelectedItems.map((item) => item.getAttribute("itempath")),
+ });
+ if (isForDualPane) {
+ refreshBothViews(SelectedItemPaneSide);
+ } else {
+ refreshView();
+ }
+ });
+ }
}
async function pasteItem(copyToPath = "") {
- let arr = [];
- if (IsDualPaneEnabled == true) {
- arr = ArrSelectedItems;
- } else {
- arr = ArrCopyItems;
- }
-
- arr = arr.map((item) => ({
- name: item.getAttribute("itemname") ?? "",
- path: item.getAttribute("itempath") ?? "",
- is_dir: parseInt(item.getAttribute("itemisdir") ?? 0) ?? 0,
- size: item.getAttribute("itemrawsize") ?? "",
- last_modified: item.getAttribute("itemmodified") ?? "",
- extension: item.getAttribute("itemext") ?? "",
- }));
-
- ContextMenu.style.display = "none";
- if (IsDualPaneEnabled == true) {
- if (SelectedItemPaneSide == "left") {
- await invoke("set_dir", { currentDir: RightDualPanePath });
- await invoke("arr_copy_paste", {
- appWindow,
- arrItems: arr,
- isForDualPane: "1",
- copyToPath,
- });
- } else if (SelectedItemPaneSide == "right") {
- await invoke("set_dir", { currentDir: LeftDualPanePath });
- await invoke("arr_copy_paste", {
- appWindow,
- arrItems: arr,
- isForDualPane: "1",
- copyToPath,
- });
- }
- } else {
- await invoke("arr_copy_paste", {
- appWindow,
- arrItems: arr,
- isForDualPane: "0",
- copyToPath,
- });
- ContextMenu.style.display = "none";
- }
- if (IsCopyToCut == true) {
+ let arr = [];
+ if (IsDualPaneEnabled == true) {
+ arr = ArrSelectedItems;
+ } else {
+ arr = ArrCopyItems;
+ }
+
+ arr = arr.map((item) => ({
+ name: item.getAttribute("itemname") ?? "",
+ path: item.getAttribute("itempath") ?? "",
+ is_dir: parseInt(item.getAttribute("itemisdir") ?? 0) ?? 0,
+ size: item.getAttribute("itemrawsize") ?? "",
+ last_modified: item.getAttribute("itemmodified") ?? "",
+ extension: item.getAttribute("itemext") ?? "",
+ }));
+
+ ContextMenu.style.display = "none";
+ if (IsDualPaneEnabled == true) {
+ if (SelectedItemPaneSide == "left") {
+ await invoke("set_dir", { currentDir: RightDualPanePath });
+ await invoke("arr_copy_paste", {
+ appWindow,
+ arrItems: arr,
+ isForDualPane: "1",
+ copyToPath,
+ });
+ } else if (SelectedItemPaneSide == "right") {
+ await invoke("set_dir", { currentDir: LeftDualPanePath });
+ await invoke("arr_copy_paste", {
+ appWindow,
+ arrItems: arr,
+ isForDualPane: "1",
+ copyToPath,
+ });
+ }
+ } else {
+ await invoke("arr_copy_paste", {
+ appWindow,
+ arrItems: arr,
+ isForDualPane: "0",
+ copyToPath,
+ });
+ ContextMenu.style.display = "none";
+ }
+ if (IsCopyToCut == true) {
arr = arr.map((element) => element.path);
if (arr.includes(copyToPath)) {
alert("Cannot copy to the same directory");
writeLog("Cannot copy to the same directory");
return;
}
- await invoke("arr_delete_items", {
- arrItems: arr,
- });
- ArrCopyItems = [];
- if (IsDualPaneEnabled === true) {
- refreshBothViews(SelectedItemPaneSide);
- }
- await listDirectories();
- IsCopyToCut = false;
- }
- else {
- await unSelectAllItems();
- await listDirectories(true);
- }
- if (arr.length >= 1) {
- showToast("Done copying some files", ToastType.SUCCESS);
- }
+ await invoke("arr_delete_items", {
+ arrItems: arr,
+ });
+ ArrCopyItems = [];
+ if (IsDualPaneEnabled === true) {
+ refreshBothViews(SelectedItemPaneSide);
+ }
+ await listDirectories();
+ IsCopyToCut = false;
+ }
+ else {
+ await unSelectAllItems();
+ await listDirectories(true);
+ }
+ if (arr.length >= 1) {
+ showToast("Done copying some files", ToastType.SUCCESS);
+ }
}
function resetProgressBar() {
- document.querySelector(".progress-bar-text").textContent = "";
- document.querySelector(".progress-bar-item-text").textContent = "";
- document.querySelector(".progress-bar-fill").style.width = "0px";
- document.querySelector(".progress-bar-container-popup").style.display = "none";
- document.querySelector(".progress-bar-2-fill").style.width = "0px";
+ document.querySelector(".progress-bar-text").textContent = "";
+ document.querySelector(".progress-bar-item-text").textContent = "";
+ document.querySelector(".progress-bar-fill").style.width = "0px";
+ document.querySelector(".progress-bar-container-popup").style.display = "none";
+ document.querySelector(".progress-bar-2-fill").style.width = "0px";
}
function createFolderInputPrompt() {
- document.querySelectorAll(".input-dialog").forEach((item) => {
- item.remove();
- });
- let nameInput = document.createElement("div");
- nameInput.className = "input-dialog uni-popup";
- nameInput.innerHTML = `
-
-
- `;
- document.querySelector("body").append(nameInput);
- ContextMenu.style.display = "none";
- nameInput.children[1].focus();
- IsInputFocused = true;
- IsDisableShortcuts = true;
- IsPopUpOpen = false;
- nameInput.addEventListener("keyup", (e) => {
- if (e.keyCode === 13) {
- createFolder(nameInput.children[1].value);
- resetEverything();
- nameInput.remove();
- }
- });
- IsPopUpOpen = true;
- nameInput.addEventListener("focusout", () => {
- IsInputFocused = false;
- });
- nameInput.addEventListener("focusin", () => {
- IsInputFocused = true;
- });
+ document.querySelectorAll(".input-dialog").forEach((item) => {
+ item.remove();
+ });
+ let nameInput = document.createElement("div");
+ nameInput.className = "input-dialog uni-popup";
+ nameInput.innerHTML = `
+
+
+ `;
+ document.querySelector("body").append(nameInput);
+ ContextMenu.style.display = "none";
+ nameInput.children[1].focus();
+ IsInputFocused = true;
+ IsDisableShortcuts = true;
+ IsPopUpOpen = false;
+ nameInput.addEventListener("keyup", (e) => {
+ if (e.keyCode === 13) {
+ createFolder(nameInput.children[1].value);
+ resetEverything();
+ nameInput.remove();
+ }
+ });
+ IsPopUpOpen = true;
+ nameInput.addEventListener("focusout", () => {
+ IsInputFocused = false;
+ });
+ nameInput.addEventListener("focusin", () => {
+ IsInputFocused = true;
+ });
}
function createFileInputPrompt(e) {
- $(".input-dialog").remove();
- let nameInput = document.createElement("div");
- nameInput.className = "input-dialog";
- nameInput.innerHTML = `
-
-
- `;
- document.querySelector("body").append(nameInput);
- ContextMenu.style.display = "none";
- nameInput.children[1].focus();
- IsInputFocused = true;
- IsDisableShortcuts = true;
- nameInput.addEventListener("keyup", (e) => {
- if (e.keyCode === 13) {
- createFile(nameInput.children[1].value);
- resetEverything();
- nameInput.remove();
- }
- });
- IsPopUpOpen = true;
- nameInput.addEventListener("focusout", () => {
- IsInputFocused = false;
- });
- nameInput.addEventListener("focusin", () => {
- IsInputFocused = true;
- });
+ $(".input-dialog").remove();
+ let nameInput = document.createElement("div");
+ nameInput.className = "input-dialog";
+ nameInput.innerHTML = `
+
+
+ `;
+ document.querySelector("body").append(nameInput);
+ ContextMenu.style.display = "none";
+ nameInput.children[1].focus();
+ IsInputFocused = true;
+ IsDisableShortcuts = true;
+ nameInput.addEventListener("keyup", (e) => {
+ if (e.keyCode === 13) {
+ createFile(nameInput.children[1].value);
+ resetEverything();
+ nameInput.remove();
+ }
+ });
+ IsPopUpOpen = true;
+ nameInput.addEventListener("focusout", () => {
+ IsInputFocused = false;
+ });
+ nameInput.addEventListener("focusin", () => {
+ IsInputFocused = true;
+ });
}
function closeInputDialogs() {
- $(".input-dialog").remove();
- IsDisableShortcuts = false;
- IsPopUpOpen = false;
+ $(".input-dialog").remove();
+ IsDisableShortcuts = false;
+ IsPopUpOpen = false;
}
function renameElementInputPrompt(item) {
- unSelectAllItems();
- let tempFilePath = item.getAttribute("itempath");
- let tempRenameFilePath = item.getAttribute("itempath").split("/");
- let tempFileName = tempRenameFilePath[tempRenameFilePath.length - 1].replace(
- "'",
- "",
- );
- let nameInput = document.createElement("div");
-
- nameInput.className = "input-dialog";
- nameInput.innerHTML = `
-
-
- `;
-
- document.querySelector("body").append(nameInput);
- ContextMenu.style.display = "none";
- IsDisableShortcuts = true;
- IsPopUpOpen = true;
- nameInput.children[1].focus();
- IsInputFocused = true;
- nameInput.addEventListener("keydown", (e) => {
- if (e.key == "Enter" && IsPopUpOpen == true) {
- renameElement(tempFilePath, nameInput.children[1].value);
- nameInput.remove();
- IsDisableShortcuts = false;
- IsPopUpOpen = false;
- }
- });
- nameInput.addEventListener("focusout", () => {
+ unSelectAllItems();
+ let tempFilePath = item.getAttribute("itempath");
+ let tempRenameFilePath = item.getAttribute("itempath").split("/");
+ let tempFileName = tempRenameFilePath[tempRenameFilePath.length - 1].replace(
+ "'",
+ "",
+ );
+ let nameInput = document.createElement("div");
+
+ nameInput.className = "input-dialog";
+ nameInput.innerHTML = `
+
+
+ `;
+
+ document.querySelector("body").append(nameInput);
+ ContextMenu.style.display = "none";
+ IsDisableShortcuts = true;
+ IsPopUpOpen = true;
+ nameInput.children[1].focus();
+ IsInputFocused = true;
+ nameInput.addEventListener("keydown", (e) => {
+ if (e.key == "Enter" && IsPopUpOpen == true) {
+ renameElement(tempFilePath, nameInput.children[1].value);
+ nameInput.remove();
+ IsDisableShortcuts = false;
+ IsPopUpOpen = false;
+ }
+ });
+ nameInput.addEventListener("focusout", () => {
IsInputFocused = false;
- });
- nameInput.addEventListener("focusin", () => {
- IsInputFocused = true;
- });
- IsPopUpOpen = true;
+ });
+ nameInput.addEventListener("focusin", () => {
+ IsInputFocused = true;
+ });
+ IsPopUpOpen = true;
}
async function createFolder(folderName) {
- let isDualPaneEnabled = IsDualPaneEnabled;
- await invoke("create_folder", { folderName, isDualPaneEnabled });
- listDirectories();
+ let isDualPaneEnabled = IsDualPaneEnabled;
+ await invoke("create_folder", { folderName, isDualPaneEnabled });
+ listDirectories();
}
async function createFile(fileName) {
- await invoke("create_file", { fileName });
- listDirectories();
+ await invoke("create_file", { fileName });
+ listDirectories();
}
async function renameElement(path, newName) {
- await invoke("rename_element", { path, newName, appWindow });
- IsInputFocused = false;
- await listDirectories();
+ await invoke("rename_element", { path, newName, appWindow });
+ IsInputFocused = false;
+ await listDirectories();
}
async function showAppInfo() {
- alert(`
- App version: ${await getVersion()}
- Tauri version: ${await getTauriVersion()}
- Architecture: ${await arch()}
- Developer: Ricky Dane
- `);
+ alert(`
+ App version: ${await getVersion()}
+ Tauri version: ${await getTauriVersion()}
+ Architecture: ${await arch()}
+ Developer: Ricky Dane
+ `);
}
async function checkAppConfig() {
- await applyPlatformFeatures();
- await invoke("check_app_config").then(async (appConfig) => {
- let viewMode = appConfig.view_mode.replaceAll('"', "");
- switch (viewMode) {
- case "wrap":
- ViewMode = "miller";
- break;
- case "column":
- ViewMode = "wrap";
- break;
- case "miller":
- ViewMode = "column";
- break;
- }
-
- await switchView();
-
- // document.querySelector(".context-open-in-terminal").style.display = "none";
-
- if (appConfig.is_dual_pane_enabled.includes("1")) {
- document.querySelector(".show-dual-pane-checkbox").checked = true;
- document.querySelector(".switch-dualpane-view-button").style.display =
- "block";
- } else {
- document.querySelector(".show-dual-pane-checkbox").checked = false;
- document.querySelector(".switch-dualpane-view-button").style.display =
- "none";
- }
- if (appConfig.is_select_mode.includes("1")) {
- document.querySelector("#choose-interaction-mode").checked = true;
- IsSelectMode = true;
- } else {
- document.querySelector("#choose-interaction-mode").checked = false;
- IsSelectMode = false;
- }
-
- if (appConfig.is_image_preview.includes("1")) {
- document.querySelector(".image-preview-checkbox").checked =
- IsImagePreview = true;
- } else {
- document.querySelector(".image-preview-checkbox").checked = false;
- }
-
- // Theme options
- CurrentTheme = appConfig.current_theme;
- appConfig.themes = await invoke("get_themes");
- // Fallback when there's no theme installed
- if (appConfig.themes.length == 0) {
- appConfig.themes = [
- {
- "name": "Default",
- "primary_color": "#3f4352",
- "secondary_color": "rgba(56, 59, 71, 1)",
- "tertiary_color": "#474b5c",
- "text_color": "rgba(255, 255, 255, 0.8)",
- "text_color2": "rgba(255, 255, 255, 0.6)",
- "text_color3": "rgb(255, 255, 255)",
- "transparent_color": "rgba(0, 0, 0, 0.15)",
- "transparent_color_active": "rgba(0, 0, 0, 0.25)",
- "site_bar_color": "rgb(45, 47, 57)",
- "nav_bar_color": "rgba(30, 30, 40, 0.5)"
- }
- ];
- }
- let themeSelect = document.querySelector(".theme-select");
- themeSelect.innerHTML = "";
- let themeCounter = 0;
- appConfig.themes.forEach((theme) => {
- let themeOption = document.createElement("option");
- themeOption.value = themeCounter;
- themeOption.textContent = theme.name;
- themeSelect.appendChild(themeOption);
- themeCounter++;
- });
-
- // Set current theme
- themeSelect.value = CurrentTheme;
-
- checkColorMode(appConfig);
-
- // General configurations
- document.querySelector(".configured-path-one-input").value = ConfiguredPathOne = appConfig.configured_path_one;
- document.querySelector(".configured-path-two-input").value = ConfiguredPathTwo = appConfig.configured_path_two;
- document.querySelector(".configured-path-three-input").value = ConfiguredPathThree = appConfig.configured_path_three;
- document.querySelector(".launch-path-input").value = appConfig.launch_path;
- document.querySelector(".search-depth-input").value = SettingsSearchDepth = parseInt(appConfig.search_depth);
- document.querySelector(".max-items-input").value = SettingsMaxItems = parseInt(appConfig.max_items);
-
- if (appConfig.is_dual_pane_active.includes("1")) {
- await switchToDualPane();
- if (appConfig.launch_path.length >= 1) {
- let path = appConfig.launch_path;
- let isSwitched = await invoke("open_dir", { path });
- if (isSwitched === true) {
- await setCurrentDir(path, "left");
- await listDirectories();
- }
- } else {
- await initDualPane(await getCurrentDir());
- await goHome();
- }
- } else if (appConfig.launch_path.length >= 1 && IsFirstRun == true) {
- let path = appConfig.launch_path;
- let isSwitched = await invoke("open_dir", { path });
- if (isSwitched === true) {
- await setCurrentDir(path, "left");
- await listDirectories();
- } else {
- alert("No directory found or unable to open due to missing permissions");
- }
- } else {
- await initDualPane(await getCurrentDir());
- await goHome();
- }
- });
- await unSelectAllItems();
- IsFirstRun = false;
+ await applyPlatformFeatures();
+ await invoke("check_app_config").then(async (appConfig) => {
+ let viewMode = appConfig.view_mode.replaceAll('"', "");
+ switch (viewMode) {
+ case "wrap":
+ ViewMode = "miller";
+ break;
+ case "column":
+ ViewMode = "wrap";
+ break;
+ case "miller":
+ ViewMode = "column";
+ break;
+ }
+
+ await switchView();
+
+ // document.querySelector(".context-open-in-terminal").style.display = "none";
+
+ if (appConfig.is_dual_pane_enabled.includes("1")) {
+ document.querySelector(".show-dual-pane-checkbox").checked = true;
+ document.querySelector(".switch-dualpane-view-button").style.display =
+ "block";
+ } else {
+ document.querySelector(".show-dual-pane-checkbox").checked = false;
+ document.querySelector(".switch-dualpane-view-button").style.display =
+ "none";
+ }
+ if (appConfig.is_select_mode.includes("1")) {
+ document.querySelector("#choose-interaction-mode").checked = true;
+ IsSelectMode = true;
+ } else {
+ document.querySelector("#choose-interaction-mode").checked = false;
+ IsSelectMode = false;
+ }
+
+ if (appConfig.is_image_preview.includes("1")) {
+ document.querySelector(".image-preview-checkbox").checked =
+ IsImagePreview = true;
+ } else {
+ document.querySelector(".image-preview-checkbox").checked = false;
+ }
+
+ // Theme options
+ CurrentTheme = appConfig.current_theme;
+ appConfig.themes = await invoke("get_themes");
+ // Fallback when there's no theme installed
+ if (appConfig.themes.length == 0) {
+ appConfig.themes = [
+ {
+ "name": "Default",
+ "primary_color": "#3f4352",
+ "secondary_color": "rgba(56, 59, 71, 1)",
+ "tertiary_color": "#474b5c",
+ "text_color": "rgba(255, 255, 255, 0.8)",
+ "text_color2": "rgba(255, 255, 255, 0.6)",
+ "text_color3": "rgb(255, 255, 255)",
+ "transparent_color": "rgba(0, 0, 0, 0.15)",
+ "transparent_color_active": "rgba(0, 0, 0, 0.25)",
+ "site_bar_color": "rgb(45, 47, 57)",
+ "nav_bar_color": "rgba(30, 30, 40, 0.5)"
+ }
+ ];
+ }
+ let themeSelect = document.querySelector(".theme-select");
+ themeSelect.innerHTML = "";
+ let themeCounter = 0;
+ appConfig.themes.forEach((theme) => {
+ let themeOption = document.createElement("option");
+ themeOption.value = themeCounter;
+ themeOption.textContent = theme.name;
+ themeSelect.appendChild(themeOption);
+ themeCounter++;
+ });
+
+ // Set current theme
+ themeSelect.value = CurrentTheme;
+
+ checkColorMode(appConfig);
+
+ // General configurations
+ document.querySelector(".configured-path-one-input").value = ConfiguredPathOne = appConfig.configured_path_one;
+ document.querySelector(".configured-path-two-input").value = ConfiguredPathTwo = appConfig.configured_path_two;
+ document.querySelector(".configured-path-three-input").value = ConfiguredPathThree = appConfig.configured_path_three;
+ document.querySelector(".launch-path-input").value = appConfig.launch_path;
+ document.querySelector(".search-depth-input").value = SettingsSearchDepth = parseInt(appConfig.search_depth);
+ document.querySelector(".max-items-input").value = SettingsMaxItems = parseInt(appConfig.max_items);
+
+ if (appConfig.is_dual_pane_active.includes("1")) {
+ await switchToDualPane();
+ if (appConfig.launch_path.length >= 1) {
+ let path = appConfig.launch_path;
+ let isSwitched = await invoke("open_dir", { path });
+ if (isSwitched === true) {
+ await setCurrentDir(path, "left");
+ await listDirectories();
+ }
+ } else {
+ await initDualPane(await getCurrentDir());
+ await goHome();
+ }
+ } else if (appConfig.launch_path.length >= 1 && IsFirstRun == true) {
+ let path = appConfig.launch_path;
+ let isSwitched = await invoke("open_dir", { path });
+ if (isSwitched === true) {
+ await setCurrentDir(path, "left");
+ await listDirectories();
+ } else {
+ alert("No directory found or unable to open due to missing permissions");
+ }
+ } else {
+ await initDualPane(await getCurrentDir());
+ await goHome();
+ }
+ });
+ await configBackButton();
+ await unSelectAllItems();
+ IsFirstRun = false;
}
async function applyPlatformFeatures() {
- Platform = await platform();
- // Check for macOS and position titlebar buttons on the left
- if (Platform == "darwin") {
- let headerNav = document.querySelector(".header-nav");
- // headerNav.style.borderBottom = "none";
- headerNav.style.boxShadow = "none";
- $(".site-nav-bar").css("padding-top", "50px");
- $(".search-bar-input").attr("placeholder", "Cmd + F");
- $(".settings-ui-header").css("padding", "5px 5px 5px 100px");
- } else {
- appWindow.transparent = true;
- appWindow.setDecorations(false);
- $(".windows-linux-titlebar-buttons").css("display", "flex");
- $('.minimize-button').on('click', () => appWindow.minimize())
- $('.maximize-button').on('click', () => appWindow.toggleMaximize())
- $('.close-button').on('click', () => appWindow.close())
- $(".search-bar-input").attr("placeholder", "Ctrl + F");
- }
- DefaultFileIcon = await resolveResource("resources/file-icon.png");
- DefaultFolderIcon = await resolveResource("resources/folder-icon.png");
+ Platform = await platform();
+ // Check for macOS and position titlebar buttons on the left
+ if (Platform == "darwin") {
+ let headerNav = document.querySelector(".header-nav");
+ // headerNav.style.borderBottom = "none";
+ headerNav.style.boxShadow = "none";
+ $(".site-nav-bar").css("padding-top", "50px");
+ $(".search-bar-input").attr("placeholder", "Cmd + F");
+ $(".settings-ui-header").css("padding", "5px 5px 5px 100px");
+ } else {
+ appWindow.transparent = true;
+ appWindow.setDecorations(false);
+ $(".windows-linux-titlebar-buttons").css("display", "flex");
+ $('.minimize-button').on('click', () => appWindow.minimize())
+ $('.maximize-button').on('click', () => appWindow.toggleMaximize())
+ $('.close-button').on('click', () => appWindow.close())
+ $(".search-bar-input").attr("placeholder", "Ctrl + F");
+ }
+ DefaultFileIcon = await resolveResource("resources/file-icon.png");
+ DefaultFolderIcon = await resolveResource("resources/folder-icon.png");
}
async function listDisks() {
- await invoke("list_disks").then((disks) => {
- IsShowDisks = true;
- document.querySelector(".disk-list-column-header").style.display = "block";
- document.querySelector(".normal-list-column-header").style.display = "none";
- document.querySelector(".tab-container-" + CurrentActiveTab).innerHTML = "";
- DirectoryList = document.createElement("div");
- DirectoryList.className = "directory-list";
- disks.forEach((item) => {
- let itemLink = document.createElement("button");
- itemLink.setAttribute(
- "itempath",
- item.path.replace('"', "").replace('"', ""),
- );
- itemLink.setAttribute(
- "itemname",
- item.name.replace('"', "").replace('"', ""),
- );
- itemLink.setAttribute("itemisdir", 1);
- itemLink.setAttribute("onclick", "interactWithItem(this, '')");
- itemLink.className = "item-link directory-entry";
- let itemButton = document.createElement("div");
- if (item.name == "") {
- item.name = "/";
- }
- itemButton.innerHTML = `
-
-
-
-
- Description: ${item.name}
- File-System: ${item.format.replace('"', "").replace('"', "")}
-
-
- Total space: ${formatBytes(item.capacity)}
- Available space: ${formatBytes(item.avail)}
-
-
-
-
- Usage: ${formatBytes(item.capacity)} / ${formatBytes(item.avail)} available (${evalCurrentLoad(item.avail, item.capacity)}%)
-
-
- `;
- itemButton.className = "disk-item-button-button directory-entry";
- let itemButtonList = document.createElement("div");
- itemButtonList.innerHTML = `
-
-
- ${item.name}
-
-
- ${formatBytes(item.avail)}
- ${formatBytes(item.capacity)}
-
- `;
- itemButtonList.className = "item-button-list directory-entry";
- if (ViewMode == "column") {
- itemButton.style.display = "none";
- DirectoryList.style.gridTemplateColumns = "unset";
- DirectoryList.style.rowGap = "2px";
- } else {
- itemButtonList.style.display = "none";
- DirectoryList.style.gridTemplateColumns = "unset";
- DirectoryList.style.rowGap = "10px";
- }
- itemButton.style.width = "100%";
- itemButton.style.height = "100px";
- itemLink.append(itemButton);
- itemLink.append(itemButtonList);
- DirectoryList.append(itemLink);
- document.querySelector(".current-path").innerHTML = `
- Disks
- `;
- });
- });
- document.querySelector(".tab-container-" + CurrentActiveTab).append(DirectoryList);
- insertSiteNavButtons();
+ await invoke("list_disks").then((disks) => {
+ IsShowDisks = true;
+ document.querySelector(".disk-list-column-header").style.display = "block";
+ document.querySelector(".normal-list-column-header").style.display = "none";
+ document.querySelector(".tab-container-" + CurrentActiveTab).innerHTML = "";
+ DirectoryList = document.createElement("div");
+ DirectoryList.className = "directory-list";
+ disks.forEach((item) => {
+ let itemLink = document.createElement("button");
+ itemLink.setAttribute(
+ "itempath",
+ item.path.replace('"', "").replace('"', ""),
+ );
+ itemLink.setAttribute(
+ "itemname",
+ item.name.replace('"', "").replace('"', ""),
+ );
+ itemLink.setAttribute("itemisdir", 1);
+ itemLink.setAttribute("onclick", "interactWithItem(this, '')");
+ itemLink.className = "item-link directory-entry";
+ let itemButton = document.createElement("div");
+ if (item.name == "") {
+ item.name = "/";
+ }
+ itemButton.innerHTML = `
+
+
+
+
+ Description: ${item.name}
+ File-System: ${item.format.replace('"', "").replace('"', "")}
+
+
+ Total space: ${formatBytes(item.capacity)}
+ Available space: ${formatBytes(item.avail)}
+
+
+
+
+ Usage: ${formatBytes(item.capacity)} / ${formatBytes(item.avail)} available (${evalCurrentLoad(item.avail, item.capacity)}%)
+
+
+ `;
+ itemButton.className = "disk-item-button-button directory-entry";
+ let itemButtonList = document.createElement("div");
+ itemButtonList.innerHTML = `
+
+
+ ${item.name}
+
+
+ ${formatBytes(item.avail)}
+ ${formatBytes(item.capacity)}
+
+ `;
+ itemButtonList.className = "item-button-list directory-entry";
+ if (ViewMode == "column") {
+ itemButton.style.display = "none";
+ DirectoryList.style.gridTemplateColumns = "unset";
+ DirectoryList.style.rowGap = "2px";
+ } else {
+ itemButtonList.style.display = "none";
+ DirectoryList.style.gridTemplateColumns = "unset";
+ DirectoryList.style.rowGap = "10px";
+ }
+ itemButton.style.width = "100%";
+ itemButton.style.height = "100px";
+ itemLink.append(itemButton);
+ itemLink.append(itemButtonList);
+ DirectoryList.append(itemLink);
+ document.querySelector(".current-path").innerHTML = `
+ Disks
+ `;
+ });
+ });
+ document.querySelector(".tab-container-" + CurrentActiveTab).append(DirectoryList);
+ insertSiteNavButtons();
}
async function listDirectories(fromDualPaneCopy = false) {
- let lsItems = await invoke("list_dirs");
- if (IsDualPaneEnabled == true) {
- ViewMode = "column";
- if (fromDualPaneCopy == true) {
- switch (SelectedItemPaneSide) {
- case "left":
- CurrentDir = RightDualPanePath;
- await showItems(lsItems, "right");
- break;
- case "right":
- CurrentDir = LeftDualPanePath;
- await showItems(lsItems, "left");
- break;
- }
- }
- else {
- await showItems(lsItems, SelectedItemPaneSide);
- }
- goUp(false, true);
- } else {
- await showItems(lsItems, "", CurrentMillerCol);
- }
- setTimeout(() => {
- ds.setSettings({
- selectables: document.querySelectorAll(".item-link"),
- });
- }, 500);
+ let lsItems = await invoke("list_dirs");
+ if (IsDualPaneEnabled == true) {
+ ViewMode = "column";
+ if (fromDualPaneCopy == true) {
+ switch (SelectedItemPaneSide) {
+ case "left":
+ CurrentDir = RightDualPanePath;
+ await showItems(lsItems, "right");
+ break;
+ case "right":
+ CurrentDir = LeftDualPanePath;
+ await showItems(lsItems, "left");
+ break;
+ }
+ }
+ else {
+ await showItems(lsItems, SelectedItemPaneSide);
+ }
+ goUp(false, true);
+ } else {
+ await showItems(lsItems, "", CurrentMillerCol);
+ }
+ setTimeout(() => {
+ ds.setSettings({
+ selectables: document.querySelectorAll(".item-link"),
+ });
+ }, 500);
}
async function refreshView() {
- await listDirectories();
+ await listDirectories();
}
async function refreshBothViews(dualPaneSide = "") {
- switch (dualPaneSide) {
- case "left":
- await setCurrentDir(RightDualPanePath, "right");
- await listDirectories();
- await setCurrentDir(LeftDualPanePath, "left");
- await listDirectories();
- goUp(false, true);
- break;
- case "right":
- await setCurrentDir(LeftDualPanePath, "left");
- await listDirectories();
- await setCurrentDir(RightDualPanePath, "right");
- await listDirectories();
- goUp(false, true);
- break;
- }
+ switch (dualPaneSide) {
+ case "left":
+ await setCurrentDir(RightDualPanePath, "right");
+ await listDirectories();
+ await setCurrentDir(LeftDualPanePath, "left");
+ await listDirectories();
+ goUp(false, true);
+ break;
+ case "right":
+ await setCurrentDir(LeftDualPanePath, "left");
+ await listDirectories();
+ await setCurrentDir(RightDualPanePath, "right");
+ await listDirectories();
+ goUp(false, true);
+ break;
+ }
}
async function interactWithItem(
- element = null,
- dualPaneSide = "",
- shortcutPath = null,
+ element = null,
+ dualPaneSide = "",
+ shortcutPath = null,
) {
- let isDir = element?.getAttribute("itemisdir");
- if (dualPaneSide == "left") {
- document.querySelector(".dual-pane-left").style.boxShadow =
- "inset 0px 0px 30px 3px rgba(0, 0, 0, 0.2)";
- document.querySelector(".dual-pane-right").style.boxShadow = "none";
- } else if (dualPaneSide == "right") {
- document.querySelector(".dual-pane-right").style.boxShadow =
- "inset 0px 0px 30px 3px rgba(0, 0, 0, 0.2)";
- document.querySelector(".dual-pane-left").style.boxShadow = "none";
- }
- // Interaction mode: Select
- if (
- element != null &&
- element != SelectedItemToOpen &&
- IsSelectMode == true &&
- (isDir == 0 || ViewMode != "miller" || IsMetaDown == true)
- ) {
- if (IsShiftDown === true) {
- if (IsDualPaneEnabled === false) {
- let firstIndex = parseInt(SelectedElement.getAttribute("itemindex"));
- let lastIndex = parseInt(element.getAttribute("itemindex"));
- unSelectAllItems();
- if (firstIndex < lastIndex) {
- for (let i = firstIndex; i <= lastIndex; i++) {
- selectItem(DirectoryList.children[i]);
- }
- }
- else {
- for (let i = firstIndex; i >= lastIndex; i--) {
- selectItem(DirectoryList.children[i]);
- }
- }
- }
- else {
- if (dualPaneSide == "left") {
- let firstIndex = parseInt(SelectedElement?.getAttribute("itemindex") ?? 0);
- let lastIndex = parseInt(element.getAttribute("itemindex"));
- unSelectAllItems();
- if (firstIndex < lastIndex) {
- for (let i = firstIndex; i <= lastIndex; i++) {
- selectItem(LeftPaneItemCollection.children[i]);
- }
- }
- else {
- for (let i = firstIndex; i >= lastIndex; i--) {
- selectItem(LeftPaneItemCollection.children[i]);
- }
- }
- }
- else {
- let firstIndex = parseInt(SelectedElement?.getAttribute("itemindex") ?? ß);
- let lastIndex = parseInt(element.getAttribute("itemindex"));
- unSelectAllItems();
- if (firstIndex < lastIndex) {
- for (let i = firstIndex; i <= lastIndex; i++) {
- selectItem(RightPaneItemCollection.children[i]);
- }
- }
- else {
- for (let i = firstIndex; i >= lastIndex; i--) {
- selectItem(RightPaneItemCollection.children[i]);
- }
- }
- }
- }
- }
- else {
- selectItem(element);
- }
- }
- // Interaction mode: Open item
- else if (
- (element != null &&
- (element == SelectedItemToOpen || IsSelectMode == false)) ||
- (isDir == 1 && ViewMode == "miller" && IsMetaDown == false)
- ) {
- await openItem(element, dualPaneSide, shortcutPath);
- }
- // Double click logic / reset after 500 ms to force double click to open
- setTimeout(() => {
- SelectedItemToOpen = null;
- }, 250); // Maybe make this customizable in the future
+ let isDir = element?.getAttribute("itemisdir");
+ if (dualPaneSide == "left") {
+ document.querySelector(".dual-pane-left").style.boxShadow =
+ "inset 0px 0px 30px 3px rgba(0, 0, 0, 0.2)";
+ document.querySelector(".dual-pane-right").style.boxShadow = "none";
+ } else if (dualPaneSide == "right") {
+ document.querySelector(".dual-pane-right").style.boxShadow =
+ "inset 0px 0px 30px 3px rgba(0, 0, 0, 0.2)";
+ document.querySelector(".dual-pane-left").style.boxShadow = "none";
+ }
+ // Interaction mode: Select
+ if (
+ element != null &&
+ element != SelectedItemToOpen &&
+ IsSelectMode == true &&
+ (isDir == 0 || ViewMode != "miller" || IsMetaDown == true)
+ ) {
+ if (IsShiftDown === true) {
+ if (IsDualPaneEnabled === false) {
+ let firstIndex = parseInt(SelectedElement.getAttribute("itemindex"));
+ let lastIndex = parseInt(element.getAttribute("itemindex"));
+ unSelectAllItems();
+ if (firstIndex < lastIndex) {
+ for (let i = firstIndex; i <= lastIndex; i++) {
+ selectItem(DirectoryList.children[i]);
+ }
+ }
+ else {
+ for (let i = firstIndex; i >= lastIndex; i--) {
+ selectItem(DirectoryList.children[i]);
+ }
+ }
+ }
+ else {
+ if (dualPaneSide == "left") {
+ let firstIndex = parseInt(SelectedElement?.getAttribute("itemindex") ?? 0);
+ let lastIndex = parseInt(element.getAttribute("itemindex"));
+ unSelectAllItems();
+ if (firstIndex < lastIndex) {
+ for (let i = firstIndex; i <= lastIndex; i++) {
+ selectItem(LeftPaneItemCollection.children[i]);
+ }
+ }
+ else {
+ for (let i = firstIndex; i >= lastIndex; i--) {
+ selectItem(LeftPaneItemCollection.children[i]);
+ }
+ }
+ }
+ else {
+ let firstIndex = parseInt(SelectedElement?.getAttribute("itemindex") ?? ß);
+ let lastIndex = parseInt(element.getAttribute("itemindex"));
+ unSelectAllItems();
+ if (firstIndex < lastIndex) {
+ for (let i = firstIndex; i <= lastIndex; i++) {
+ selectItem(RightPaneItemCollection.children[i]);
+ }
+ }
+ else {
+ for (let i = firstIndex; i >= lastIndex; i--) {
+ selectItem(RightPaneItemCollection.children[i]);
+ }
+ }
+ }
+ }
+ }
+ else {
+ selectItem(element);
+ }
+ }
+ // Interaction mode: Open item
+ else if (
+ (element != null &&
+ (element == SelectedItemToOpen || IsSelectMode == false)) ||
+ (isDir == 1 && ViewMode == "miller" && IsMetaDown == false)
+ ) {
+ await openItem(element, dualPaneSide, shortcutPath);
+ }
+ // Double click logic / reset after 500 ms to force double click to open
+ setTimeout(() => {
+ SelectedItemToOpen = null;
+ }, 250); // Maybe make this customizable in the future
}
async function openItem(element, dualPaneSide, shortcutDirPath = null) {
- let isDir =
- element != null
- ? parseInt(element.getAttribute("itemisdir"))
- : shortcutDirPath != null
- ? 1
- : 0;
- let path = element != null ? element.getAttribute("itempath") : shortcutDirPath;
- let millerCol = element != null ? element.getAttribute("itemformillercol") : null;
- let ext = element != null ? element.getAttribute("itemext") : null;
- if (IsPopUpOpen == false || IsQuickSearchOpen === true) {
- if (
- IsItemPreviewOpen == false &&
- isDir == 1 &&
- ext != ".app"
- ) {
- // Open directory
- let isSwitched = await invoke("open_dir", { path });
- if (isSwitched == true) {
- if (IsDualPaneEnabled === false) {
- if (ViewMode == "miller") {
- $(".selected-item").removeClass("selected-item");
- element.classList.add("selected-item");
- await removeExcessMillerCols(parseInt(millerCol));
- await addMillerCol(millerCol);
- await setMillerColActive(null, millerCol);
- await listDirectories();
- }
- else {
- await listDirectories();
- }
- await setCurrentDir(path);
- } else {
- if (dualPaneSide == "left") {
- LeftDualPanePath = path;
- } else {
- RightDualPanePath = path;
- }
- SelectedItemPaneSide = dualPaneSide;
- await setCurrentDir(path, SelectedItemPaneSide);
- await listDirectories();
- }
- await unSelectAllItems();
- } else {
- alert("Could not open directory");
- return;
- }
- } else if (IsItemPreviewOpen == false) {
- await invoke("open_item", { path });
- }
- }
+ let isDir =
+ element != null
+ ? parseInt(element.getAttribute("itemisdir"))
+ : shortcutDirPath != null
+ ? 1
+ : 0;
+ let path = element != null ? element.getAttribute("itempath") : shortcutDirPath;
+ let millerCol = element != null ? element.getAttribute("itemformillercol") : null;
+ let ext = element != null ? element.getAttribute("itemext") : null;
+ if (IsPopUpOpen == false || IsQuickSearchOpen === true) {
+ if (
+ IsItemPreviewOpen == false &&
+ isDir == 1 &&
+ ext != ".app"
+ ) {
+ // Open directory
+ let isSwitched = await invoke("open_dir", { path });
+ if (isSwitched == true) {
+ await configBackButton(CurrentDir);
+ if (IsDualPaneEnabled === false) {
+ if (ViewMode == "miller") {
+ $(".selected-item").removeClass("selected-item");
+ element.classList.add("selected-item");
+ await removeExcessMillerCols(parseInt(millerCol));
+ await addMillerCol(millerCol);
+ await setMillerColActive(null, millerCol);
+ await listDirectories();
+ }
+ else {
+ await listDirectories();
+ }
+ await setCurrentDir(path);
+ } else {
+ if (dualPaneSide == "left") {
+ LeftDualPanePath = path;
+ } else {
+ RightDualPanePath = path;
+ }
+ SelectedItemPaneSide = dualPaneSide;
+ await setCurrentDir(path, SelectedItemPaneSide);
+ await listDirectories();
+ }
+ await unSelectAllItems();
+ } else {
+ alert("Could not open directory");
+ return;
+ }
+ } else if (IsItemPreviewOpen == false) {
+ await invoke("open_item", { path });
+ }
+ }
}
async function selectItem(element, dualPaneSide = "", isNotReset = false) {
ContextMenu.style.display = "none";
- let path = element?.getAttribute("itempath");
- let index = element?.getAttribute("itemindex");
- // Reset colored selection
- if (SelectedElement != null && IsMetaDown == false && IsCtrlDown == false && IsShiftDown == false && (isNotReset === false)) {
- ArrSelectedItems.forEach((item) => {
- if (IsDualPaneEnabled) {
- item.classList.remove("selected-item");
- } else if (ViewMode == "column" || ViewMode == "miller") {
- if (IsShowDisks) {
- item.children[1].classList.remove("selected-item");
- } else {
- item.children[0].classList.remove("selected-item");
- }
- } else {
- if (IsShowDisks == true) {
- item.children[0].classList.remove("selected-item");
- } else {
- item.children[0].classList.remove(
- "selected-item",
- );
- item.children[0].children[1].classList.remove(
- "selected-item-min",
- );
- }
- }
- });
- ArrSelectedItems = [];
- }
- SelectedElement = element; // Switch to new element / selection
- SelectedItemToOpen = isNotReset ? null : element;
- if (IsDualPaneEnabled) {
- SelectedElement.children[0].classList.add("selected-item");
- } else if (ViewMode == "column" || ViewMode == "miller") {
- if (IsShowDisks) {
- SelectedElement?.children[1].classList.add("selected-item");
- } else {
- SelectedElement?.children[0].classList.add("selected-item");
- }
- } else {
- if (IsShowDisks == true) {
- SelectedElement.children[0].classList.add("selected-item");
- } else {
- SelectedElement.children[0].children[0].classList.add(
- "selected-item",
- );
- SelectedElement.children[0].children[1].classList.add(
- "selected-item-min",
- );
- }
- }
- SelectedItemPath = path;
- if (dualPaneSide != "" && dualPaneSide != null) {
- SelectedItemPaneSide = dualPaneSide;
- }
- if (dualPaneSide == "left") {
- LeftPaneItemIndex = index;
- } else if (dualPaneSide == "right") {
- RightPaneItemIndex = index;
- }
- // Switch item preview when already open
- if (IsItemPreviewOpen == true) {
- showItemPreview(SelectedElement, true);
- }
- ArrSelectedItems.push(SelectedElement);
+ let path = element?.getAttribute("itempath");
+ let index = element?.getAttribute("itemindex");
+ // Reset colored selection
+ if (SelectedElement != null && IsMetaDown == false && IsCtrlDown == false && IsShiftDown == false && (isNotReset === false)) {
+ ArrSelectedItems.forEach((item) => {
+ if (IsDualPaneEnabled) {
+ item.children[0].classList.remove("selected-item");
+ } else if (ViewMode == "column" || ViewMode == "miller") {
+ if (IsShowDisks) {
+ item.children[1].classList.remove("selected-item");
+ } else {
+ item.children[0].classList.remove("selected-item");
+ }
+ } else {
+ if (IsShowDisks == true) {
+ item.children[0].classList.remove("selected-item");
+ } else {
+ item.children[0].classList.remove(
+ "selected-item",
+ );
+ item.children[0].children[1].classList.remove(
+ "selected-item-min",
+ );
+ }
+ }
+ });
+ ArrSelectedItems = [];
+ }
+ SelectedElement = element; // Switch to new element / selection
+ SelectedItemToOpen = isNotReset ? null : element;
+ if (IsDualPaneEnabled) {
+ SelectedElement?.children[0].classList.add("selected-item");
+ } else if (ViewMode == "column" || ViewMode == "miller") {
+ if (IsShowDisks) {
+ SelectedElement?.children[1].classList.add("selected-item");
+ } else {
+ SelectedElement?.children[0].classList.add("selected-item");
+ }
+ } else {
+ if (IsShowDisks == true) {
+ SelectedElement?.children[0].classList.add("selected-item");
+ } else {
+ SelectedElement?.children[0].children[0].classList.add(
+ "selected-item",
+ );
+ SelectedElement?.children[0].children[1].classList.add(
+ "selected-item-min",
+ );
+ }
+ }
+ SelectedItemPath = path;
+ if (dualPaneSide != "" && dualPaneSide != null) {
+ SelectedItemPaneSide = dualPaneSide;
+ }
+ if (dualPaneSide == "left") {
+ LeftPaneItemIndex = index;
+ } else if (dualPaneSide == "right") {
+ RightPaneItemIndex = index;
+ }
+ // Switch item preview when already open
+ if (IsItemPreviewOpen == true) {
+ showItemPreview(SelectedElement, true);
+ }
+ ArrSelectedItems.push(SelectedElement);
}
function deSelectitem(item) {
- if (IsDualPaneEnabled) {
- item.children[0].classList.remove("selected-item");
- } else if (ViewMode == "column") {
- item.children[0].classList.remove("selected-item");
- } else {
- item.children[0].children[0].classList.remove("selected-item");
- item.children[0].children[1].classList.remove(
- "selected-item-min",
- );
- }
+ if (IsDualPaneEnabled) {
+ item.children[0].classList.remove("selected-item");
+ } else if (ViewMode == "column") {
+ item.children[0].classList.remove("selected-item");
+ } else {
+ item.children[0].children[0].classList.remove("selected-item");
+ item.children[0].children[1].classList.remove(
+ "selected-item-min",
+ );
+ }
}
async function unSelectAllItems() {
- if (ArrSelectedItems.length > 0) {
- for (let i = 0; i < ArrSelectedItems.length; i++) {
- if (IsDualPaneEnabled) {
- ArrSelectedItems[i].children[0].classList.remove("selected-item");
- } else if (ViewMode == "column" || ViewMode == "miller") {
- ArrSelectedItems[i].children[0].classList.remove("selected-item");
- } else {
- try {
- if (IsShowDisks === true) {
- ArrSelectedItems[i].children[0].classList.remove("selected-item");
- ArrSelectedItems[i].children[1].classList.remove("selected-item-min");
- } else {
- ArrSelectedItems[i].children[0].children[0].classList.remove("selected-item");
- ArrSelectedItems[i].children[0].children[1].classList.remove("selected-item-min");
- }
- } catch (e) {
- writeLog(e);
- }
- }
- }
- }
- SelectedElement = null;
- ArrSelectedItems = [];
- SelectedItemToOpen = null;
- $(".selected-item").removeClass("selected-item");
- $(".selected-item-min").removeClass("selected-item-min");
+ if (ArrSelectedItems.length > 0) {
+ for (let i = 0; i < ArrSelectedItems.length; i++) {
+ if (IsDualPaneEnabled == true) {
+ ArrSelectedItems[i].children[0].classList.remove("selected-item");
+ } else if (ViewMode == "column" || ViewMode == "miller") {
+ ArrSelectedItems[i].children[0].classList.remove("selected-item");
+ } else {
+ try {
+ if (IsShowDisks === true) {
+ ArrSelectedItems[i].children[0].classList.remove("selected-item");
+ ArrSelectedItems[i].children[1].classList.remove("selected-item-min");
+ } else {
+ ArrSelectedItems[i].children[0].children[0].classList.remove("selected-item");
+ ArrSelectedItems[i].children[0].children[1].classList.remove("selected-item-min");
+ }
+ } catch (e) {
+ writeLog(e);
+ }
+ }
+ }
+ }
+ SelectedElement = null;
+ ArrSelectedItems = [];
+ SelectedItemToOpen = null;
+ $(".selected-item")?.removeClass("selected-item");
+ $(".selected-item-min")?.removeClass("selected-item-min");
}
async function goHome() {
- await invoke("go_home");
- await listDirectories();
- await setCurrentDir(await getCurrentDir());
+ await invoke("go_home");
+ await listDirectories();
+ await setCurrentDir(await getCurrentDir());
}
async function goBack() {
- if (IsDualPaneEnabled === true) {
- if (SelectedItemPaneSide == "left") {
- LeftPaneItemIndex = LastLeftPaneIndex ?? 0;
- } else {
- RightPaneItemIndex = LastRightPaneIndex ?? 0;
- }
- }
- if (IsMetaDown == false) {
- await invoke("go_back", { isDualPane: IsDualPaneEnabled });
- await listDirectories();
- }
- await setCurrentDir(await getCurrentDir());
+ if (IsDualPaneEnabled === true) {
+ if (SelectedItemPaneSide == "left") {
+ LeftPaneItemIndex = LastLeftPaneIndex ?? 0;
+ } else {
+ RightPaneItemIndex = LastRightPaneIndex ?? 0;
+ }
+ }
+ if (IsMetaDown == false) {
+ await invoke("go_back", { isDualPane: IsDualPaneEnabled });
+ await listDirectories();
+ }
+ await setCurrentDir(await getCurrentDir());
}
function goUp(isSwitched = false, toFirst = false) {
- if (IsDualPaneEnabled === true) {
- let element = null;
- let selectedItemIndex = 0;
- if (toFirst == false) {
- if (SelectedElement != null) {
- if (SelectedItemPaneSide == "left") {
- selectedItemIndex = LeftPaneItemIndex;
- if (LeftPaneItemIndex > 0 && isSwitched == true) {
- selectedItemIndex = LeftPaneItemIndex;
- element =
- LeftPaneItemCollection.querySelectorAll(".item-link")[
- selectedItemIndex
- ];
- } else if (parseInt(selectedItemIndex) < 1) {
- selectedItemIndex = 0;
- element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
- } else {
- selectedItemIndex = parseInt(selectedItemIndex) - 1;
- element =
- LeftPaneItemCollection.querySelectorAll(".item-link")[
- selectedItemIndex
- ];
- }
- LeftPaneItemIndex = selectedItemIndex;
- } else if (SelectedItemPaneSide == "right") {
- selectedItemIndex = RightPaneItemIndex;
- if (RightPaneItemIndex > 0 && isSwitched == true) {
- selectedItemIndex = RightPaneItemIndex;
- element =
- RightPaneItemCollection.querySelectorAll(".item-link")[
- selectedItemIndex
- ];
- } else if (parseInt(selectedItemIndex) - 1 < 1) {
- selectedItemIndex = 0;
- element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
- } else {
- selectedItemIndex = parseInt(selectedItemIndex) - 1;
- element =
- RightPaneItemCollection.querySelectorAll(".item-link")[
- selectedItemIndex
- ];
- }
- RightPaneItemIndex = selectedItemIndex;
- }
- SelectedElement.style.backgroundColor = "transparent";
- } else {
- SelectedItemPaneSide = "left";
- if (SelectedItemPaneSide == "right") {
- RightPaneItemIndex = 0;
- element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
- } else {
- LeftPaneItemIndex = 0;
- element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
- }
- if (element != null && element != SelectedElement) {
- element.onclick();
- }
- }
- if (
- element != SelectedElement &&
- SelectedElement != null &&
- element != null
- ) {
- SelectedElement.style.backgroundColor = "transparent";
- element.onclick();
- }
-
- /* Scroll logic */
- if (SelectedItemPaneSide == "left") {
- if (
- parseInt(selectedItemIndex) * 38 -
- document.querySelector(".dual-pane-left").scrollTop <
- 10
- ) {
- document.querySelector(".dual-pane-left").scrollTop -= 38;
- }
- } else if (SelectedItemPaneSide == "right") {
- if (
- parseInt(selectedItemIndex) * 38 -
- document.querySelector(".dual-pane-right").scrollTop <
- 10
- ) {
- document.querySelector(".dual-pane-right").scrollTop -= 38;
- }
- }
- } else {
- if (SelectedItemPaneSide == "right") {
- RightPaneItemIndex = 0;
- element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
- } else {
- LeftPaneItemIndex = 0;
- element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
- }
- if (element != null && element != SelectedElement) {
- element.onclick();
- }
- }
- }
+ if (IsDualPaneEnabled === true) {
+ let element = null;
+ let selectedItemIndex = 0;
+ if (toFirst == false) {
+ if (SelectedElement != null) {
+ if (SelectedItemPaneSide == "left") {
+ selectedItemIndex = LeftPaneItemIndex;
+ if (LeftPaneItemIndex > 0 && isSwitched == true) {
+ selectedItemIndex = LeftPaneItemIndex;
+ element =
+ LeftPaneItemCollection.querySelectorAll(".item-link")[
+ selectedItemIndex
+ ];
+ } else if (parseInt(selectedItemIndex) < 1) {
+ selectedItemIndex = 0;
+ element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
+ } else {
+ selectedItemIndex = parseInt(selectedItemIndex) - 1;
+ element =
+ LeftPaneItemCollection.querySelectorAll(".item-link")[
+ selectedItemIndex
+ ];
+ }
+ LeftPaneItemIndex = selectedItemIndex;
+ } else if (SelectedItemPaneSide == "right") {
+ selectedItemIndex = RightPaneItemIndex;
+ if (RightPaneItemIndex > 0 && isSwitched == true) {
+ selectedItemIndex = RightPaneItemIndex;
+ element =
+ RightPaneItemCollection.querySelectorAll(".item-link")[
+ selectedItemIndex
+ ];
+ } else if (parseInt(selectedItemIndex) - 1 < 1) {
+ selectedItemIndex = 0;
+ element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
+ } else {
+ selectedItemIndex = parseInt(selectedItemIndex) - 1;
+ element =
+ RightPaneItemCollection.querySelectorAll(".item-link")[
+ selectedItemIndex
+ ];
+ }
+ RightPaneItemIndex = selectedItemIndex;
+ }
+ SelectedElement.style.backgroundColor = "transparent";
+ } else {
+ SelectedItemPaneSide = "left";
+ if (SelectedItemPaneSide == "right") {
+ RightPaneItemIndex = 0;
+ element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
+ } else {
+ LeftPaneItemIndex = 0;
+ element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
+ }
+ if (element != null && element != SelectedElement) {
+ element.onclick();
+ }
+ }
+ if (
+ element != SelectedElement &&
+ SelectedElement != null &&
+ element != null
+ ) {
+ SelectedElement.style.backgroundColor = "transparent";
+ element.onclick();
+ }
+
+ /* Scroll logic */
+ if (SelectedItemPaneSide == "left") {
+ if (
+ parseInt(selectedItemIndex) * 38 -
+ document.querySelector(".dual-pane-left").scrollTop <
+ 10
+ ) {
+ document.querySelector(".dual-pane-left").scrollTop -= 38;
+ }
+ } else if (SelectedItemPaneSide == "right") {
+ if (
+ parseInt(selectedItemIndex) * 38 -
+ document.querySelector(".dual-pane-right").scrollTop <
+ 10
+ ) {
+ document.querySelector(".dual-pane-right").scrollTop -= 38;
+ }
+ }
+ } else {
+ if (SelectedItemPaneSide == "right") {
+ RightPaneItemIndex = 0;
+ element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
+ } else {
+ LeftPaneItemIndex = 0;
+ element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
+ }
+ if (element != null && element != SelectedElement) {
+ element.onclick();
+ }
+ }
+ }
}
function goDown() {
- let element = null;
- let selectedItemIndex = 0;
- if (SelectedElement != null) {
- selectedItemIndex = SelectedElement.getAttribute("itemindex");
- if (SelectedItemPaneSide == "left") {
- if (
- parseInt(selectedItemIndex) + 1 >=
- LeftPaneItemCollection.querySelectorAll(".item-link").length - 1
- ) {
- selectedItemIndex =
- LeftPaneItemCollection.querySelectorAll(".item-link").length - 1;
- element =
- LeftPaneItemCollection.querySelectorAll(".item-link")[
- parseInt(selectedItemIndex)
- ];
- } else {
- selectedItemIndex = parseInt(selectedItemIndex) + 1;
- element =
- LeftPaneItemCollection.querySelectorAll(".item-link")[
- selectedItemIndex
- ];
- }
- LeftPaneItemIndex = selectedItemIndex;
- } else if (SelectedItemPaneSide == "right") {
- if (
- parseInt(selectedItemIndex) + 1 >=
- RightPaneItemCollection.querySelectorAll(".item-link").length - 1
- ) {
- selectedItemIndex =
- RightPaneItemCollection.querySelectorAll(".item-link").length - 1;
- element =
- RightPaneItemCollection.querySelectorAll(".item-link")[
- selectedItemIndex
- ];
- } else {
- selectedItemIndex = parseInt(selectedItemIndex) + 1;
- element =
- RightPaneItemCollection.querySelectorAll(".item-link")[
- selectedItemIndex
- ];
- }
- RightPaneItemIndex = selectedItemIndex;
- }
- } else {
- if (SelectedItemPaneSide == "left") {
- element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
- selectedItemIndex = 0;
- LeftPaneItemIndex = selectedItemIndex;
- } else if (SelectedItemPaneSide == "right") {
- element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
- selectedItemIndex = 0;
- RightPaneItemIndex = selectedItemIndex;
- }
- }
- if (
- element != null &&
- element != SelectedElement &&
- SelectedElement != null
- ) {
- SelectedElement.children[0].style.backgroundColor = "transparent";
- element.onclick();
- }
-
- /* Scroll logic */
- if (SelectedItemPaneSide == "left") {
- if (
- parseInt(selectedItemIndex) * 38 -
- document.querySelector(".dual-pane-left").scrollTop >
- window.innerHeight - 150
- ) {
- document.querySelector(".dual-pane-left").scrollTop += 38;
- }
- } else if (SelectedItemPaneSide == "right") {
- if (
- parseInt(selectedItemIndex) * 38 -
- document.querySelector(".dual-pane-right").scrollTop >
- window.innerHeight - 150
- ) {
- document.querySelector(".dual-pane-right").scrollTop += 38;
- }
- }
+ let element = null;
+ let selectedItemIndex = 0;
+ if (SelectedElement != null) {
+ selectedItemIndex = SelectedElement.getAttribute("itemindex");
+ if (SelectedItemPaneSide == "left") {
+ if (
+ parseInt(selectedItemIndex) + 1 >=
+ LeftPaneItemCollection.querySelectorAll(".item-link").length - 1
+ ) {
+ selectedItemIndex =
+ LeftPaneItemCollection.querySelectorAll(".item-link").length - 1;
+ element =
+ LeftPaneItemCollection.querySelectorAll(".item-link")[
+ parseInt(selectedItemIndex)
+ ];
+ } else {
+ selectedItemIndex = parseInt(selectedItemIndex) + 1;
+ element =
+ LeftPaneItemCollection.querySelectorAll(".item-link")[
+ selectedItemIndex
+ ];
+ }
+ LeftPaneItemIndex = selectedItemIndex;
+ } else if (SelectedItemPaneSide == "right") {
+ if (
+ parseInt(selectedItemIndex) + 1 >=
+ RightPaneItemCollection.querySelectorAll(".item-link").length - 1
+ ) {
+ selectedItemIndex =
+ RightPaneItemCollection.querySelectorAll(".item-link").length - 1;
+ element =
+ RightPaneItemCollection.querySelectorAll(".item-link")[
+ selectedItemIndex
+ ];
+ } else {
+ selectedItemIndex = parseInt(selectedItemIndex) + 1;
+ element =
+ RightPaneItemCollection.querySelectorAll(".item-link")[
+ selectedItemIndex
+ ];
+ }
+ RightPaneItemIndex = selectedItemIndex;
+ }
+ } else {
+ if (SelectedItemPaneSide == "left") {
+ element = LeftPaneItemCollection.querySelectorAll(".item-link")[0];
+ selectedItemIndex = 0;
+ LeftPaneItemIndex = selectedItemIndex;
+ } else if (SelectedItemPaneSide == "right") {
+ element = RightPaneItemCollection.querySelectorAll(".item-link")[0];
+ selectedItemIndex = 0;
+ RightPaneItemIndex = selectedItemIndex;
+ }
+ }
+ if (
+ element != null &&
+ element != SelectedElement &&
+ SelectedElement != null
+ ) {
+ SelectedElement.children[0].style.backgroundColor = "transparent";
+ element.onclick();
+ }
+
+ /* Scroll logic */
+ if (SelectedItemPaneSide == "left") {
+ if (
+ parseInt(selectedItemIndex) * 38 -
+ document.querySelector(".dual-pane-left").scrollTop >
+ window.innerHeight - 150
+ ) {
+ document.querySelector(".dual-pane-left").scrollTop += 38;
+ }
+ } else if (SelectedItemPaneSide == "right") {
+ if (
+ parseInt(selectedItemIndex) * 38 -
+ document.querySelector(".dual-pane-right").scrollTop >
+ window.innerHeight - 150
+ ) {
+ document.querySelector(".dual-pane-right").scrollTop += 38;
+ }
+ }
}
async function goToOtherPane() {
- if (SelectedItemPaneSide == "right") {
- await setCurrentDir(LeftDualPanePath, "left");
- } else {
- await setCurrentDir(RightDualPanePath, "right");
- }
- try {
- goUp(true);
- }
- catch (e) {
+ if (SelectedItemPaneSide == "right") {
+ await setCurrentDir(LeftDualPanePath, "left");
+ } else {
+ await setCurrentDir(RightDualPanePath, "right");
+ }
+ try {
+ goUp(true);
+ }
+ catch (e) {
writeLog(e);
- }
+ }
}
async function initDualPane(path = "") {
- LeftDualPanePath = path;
- RightDualPanePath = path;
- SelectedItemIndex = 0;
- SelectedItemPaneSide = "left";
- await refreshBothViews();
- goUp(false, true);
+ LeftDualPanePath = path;
+ RightDualPanePath = path;
+ SelectedItemIndex = 0;
+ SelectedItemPaneSide = "left";
+ await refreshBothViews();
+ goUp(false, true);
}
function goLeft(isToFirst = false, index = null) {
- if (index == null) {
- if (SelectedElement == null) {
- index = 0;
- }
- else {
- index = parseInt(SelectedElement?.getAttribute("itemindex")) - 1 ?? 0;
- }
- }
- if (index < 0) {
- index = 0;
- }
- SelectedElement = DirectoryList.children[index];
- selectItem(SelectedElement);
+ if (index == null) {
+ if (SelectedElement == null) {
+ index = 0;
+ }
+ else {
+ index = parseInt(SelectedElement?.getAttribute("itemindex")) - 1 ?? 0;
+ }
+ }
+ if (index < 0) {
+ index = 0;
+ }
+ SelectedElement = DirectoryList.children[index];
+ selectItem(SelectedElement);
}
function goRight(isToFirst = false, index = null) {
- if (index == null) {
- if (SelectedElement == null) {
- index = 0;
- }
- else {
- index = parseInt(SelectedElement?.getAttribute("itemindex")) + 1 ?? 0;
- }
- }
- if (index > DirectoryList.children.length - 1) {
- index = DirectoryList.children.length - 1;
- }
- SelectedElement = DirectoryList.children[index];
- selectItem(SelectedElement);
+ if (index == null) {
+ if (SelectedElement == null) {
+ index = 0;
+ }
+ else {
+ index = parseInt(SelectedElement?.getAttribute("itemindex")) + 1 ?? 0;
+ }
+ }
+ if (index > DirectoryList.children.length - 1) {
+ index = DirectoryList.children.length - 1;
+ }
+ SelectedElement = DirectoryList.children[index];
+ selectItem(SelectedElement);
}
function goGridUp() {
- var rowlen = Array.prototype.reduce.call(DirectoryList.children, function (prev, next) {
- if (!prev[2]) {
- var ret = next.getBoundingClientRect().left
- // if increasing, increment unter
- if (!(prev[0] > -1 && ret < prev[1])) { prev[0]++ }
- else { prev[2] = 1 } // else stop counting
- }
- return [prev[0], ret, prev[2]] // [counter, elem, stop-counting]
- }, [0, null, 0])[0];
- let index = 0;
- if (SelectedElement != null) {
- index = parseInt(SelectedElement?.getAttribute("itemindex")) - rowlen;
- }
- goLeft(false, index);
+ var rowlen = Array.prototype.reduce.call(DirectoryList.children, function (prev, next) {
+ if (!prev[2]) {
+ var ret = next.getBoundingClientRect().left
+ // if increasing, increment unter
+ if (!(prev[0] > -1 && ret < prev[1])) { prev[0]++ }
+ else { prev[2] = 1 } // else stop counting
+ }
+ return [prev[0], ret, prev[2]] // [counter, elem, stop-counting]
+ }, [0, null, 0])[0];
+ let index = 0;
+ if (SelectedElement != null) {
+ index = parseInt(SelectedElement?.getAttribute("itemindex")) - rowlen;
+ }
+ goLeft(false, index);
}
function goGridDown() {
- var rowlen = Array.prototype.reduce.call(DirectoryList.children, function (prev, next) {
- if (!prev[2]) {
- var ret = next.getBoundingClientRect().left
- // if increasing, increment counter
- if (!(prev[0] > -1 && ret < prev[1])) { prev[0]++ }
- else { prev[2] = 1 } // else stop counting
- }
- return [prev[0], ret, prev[2]] // [counter, elem, stop-counting]
- }, [0, null, 0])[0];
- let index = 0;
- if (SelectedElement != null) {
- index = parseInt(SelectedElement?.getAttribute("itemindex")) + rowlen;
- }
- goRight(false, index);
+ var rowlen = Array.prototype.reduce.call(DirectoryList.children, function (prev, next) {
+ if (!prev[2]) {
+ var ret = next.getBoundingClientRect().left
+ // if increasing, increment counter
+ if (!(prev[0] > -1 && ret < prev[1])) { prev[0]++ }
+ else { prev[2] = 1 } // else stop counting
+ }
+ return [prev[0], ret, prev[2]] // [counter, elem, stop-counting]
+ }, [0, null, 0])[0];
+ let index = 0;
+ if (SelectedElement != null) {
+ index = parseInt(SelectedElement?.getAttribute("itemindex")) + rowlen;
+ }
+ goRight(false, index);
}
async function openSelectedItem() {
- if (IsDualPaneEnabled === true) {
- if (SelectedItemPaneSide == "left") {
- LastLeftPaneIndex = LeftPaneItemIndex;
- }
- else {
- LastRightPaneIndex = RightPaneItemIndex;
- }
- if (SelectedElement != null) {
- await openItem(SelectedElement, SelectedItemPaneSide);
- }
- }
- else {
- if (SelectedElement != null) {
- await openItem(SelectedElement);
- }
- }
- goUp(false, true);
+ if (IsDualPaneEnabled === true) {
+ if (SelectedItemPaneSide == "left") {
+ LastLeftPaneIndex = LeftPaneItemIndex;
+ }
+ else {
+ LastRightPaneIndex = RightPaneItemIndex;
+ }
+ if (SelectedElement != null) {
+ await openItem(SelectedElement, SelectedItemPaneSide);
+ }
+ }
+ else {
+ if (SelectedElement != null) {
+ await openItem(SelectedElement);
+ }
+ }
+ goUp(false, true);
}
async function goToDir(directory) {
- await invoke("go_to_dir", { directory }).then(async (items) => {
- if (IsDualPaneEnabled == true) {
- await showItems(items, SelectedItemPaneSide);
- } else {
- await showItems(items);
- }
- });
- await setCurrentDir(await getCurrentDir());
+ await invoke("go_to_dir", { directory }).then(async (items) => {
+ if (IsDualPaneEnabled == true) {
+ await showItems(items, SelectedItemPaneSide);
+ } else {
+ await showItems(items);
+ }
+ });
+ await setCurrentDir(await getCurrentDir());
}
async function openInTerminal() {
- if (!await invoke("open_in_terminal", {"path": ArrSelectedItems.length === 0 ? CurrentDir : SelectedItemPath})) {
- if (Platform === "linux") {
- showToast("Failed to open terminal. Make sure exo-open is installed and configured.", ToastType.ERROR, 5000);
- } else {
- showToast("Failed to open terminal.", ToastType.ERROR);
- }
- }
-
- ContextMenu.style.display = "none";
+ if (!await invoke("open_in_terminal", {"path": ArrSelectedItems.length === 0 ? CurrentDir : SelectedItemPath})) {
+ if (Platform === "linux") {
+ showToast("Failed to open terminal. Make sure exo-open is installed and configured.", ToastType.ERROR, 5000);
+ } else {
+ showToast("Failed to open terminal.", ToastType.ERROR);
+ }
+ }
+
+ ContextMenu.style.display = "none";
}
async function searchFor(
- fileName = "",
- maxItems = SettingsMaxItems,
- searchDepth = SettingsSearchDepth,
- isQuickSearch = false,
- fileContent = "",
+ fileName = "",
+ maxItems = SettingsMaxItems,
+ searchDepth = SettingsSearchDepth,
+ isQuickSearch = false,
+ fileContent = "",
) {
- if (IsSearching === true) return;
- if (fileName.length > 1 || isQuickSearch == true) {
- $(".is-file-searching").css("display", "block");
- document.querySelector(".cancel-search-button").style.display = "block";
- if (IsDualPaneEnabled === true) {
- if (SelectedItemPaneSide === "left") {
- $(".dual-pane-left").html("");
- }
- else {
- $(".dual-pane-right").html("");
- }
- }
- else {
- $(".directory-list").html("");
- }
- IsSearching = true;
- FoundItemsCountIndex = 0;
- await invoke("search_for", {
- fileName,
- maxItems,
- searchDepth,
- fileContent,
- appWindow,
- isQuickSearch
- });
- setTimeout(() => {
- ds.setSettings({
- selectables: ArrDirectoryItems,
- });
- }, 250);
- } else {
+ if (IsSearching === true) return;
+ if (fileName.length > 1 || isQuickSearch == true) {
+ $(".is-file-searching").css("display", "block");
+ document.querySelector(".cancel-search-button").style.display = "block";
+ if (IsDualPaneEnabled === true) {
+ if (SelectedItemPaneSide === "left") {
+ $(".dual-pane-left").html("");
+ }
+ else {
+ $(".dual-pane-right").html("");
+ }
+ }
+ else {
+ $(".directory-list").html("");
+ }
+ IsSearching = true;
+ FoundItemsCountIndex = 0;
+ await invoke("search_for", {
+ fileName,
+ maxItems,
+ searchDepth,
+ fileContent,
+ appWindow,
+ isQuickSearch
+ });
+ setTimeout(() => {
+ ds.setSettings({
+ selectables: ArrDirectoryItems,
+ });
+ }, 250);
+ } else {
stopFullSearch();
- alert("Type in a minimum of 2 characters");
- }
- IsSearching = false;
- IsFullSearching = false;
+ alert("Type in a minimum of 2 characters");
+ }
+ IsSearching = false;
+ IsFullSearching = false;
}
function openFullSearchContainer() {
- document.querySelector(".search-full-container").style.display = "flex";
- document.querySelector(".full-dualpane-search-input").focus();
- IsInputFocused = true;
- IsPopUpOpen = true;
- IsDisableShortcuts = true;
+ document.querySelector(".search-full-container").style.display = "flex";
+ document.querySelector(".full-dualpane-search-input").focus();
+ IsInputFocused = true;
+ IsPopUpOpen = true;
+ IsDisableShortcuts = true;
document.querySelectorAll(".trigger-for-full-search").forEach(element => element.addEventListener("keydown", (e) => {
if (e.key == "Enter") {
startFullSearch();
@@ -3078,603 +3080,606 @@ function openFullSearchContainer() {
}
function closeFullSearchContainer() {
- document.querySelector(".search-full-container").style.display = "none";
- IsPopUpOpen = false;
- IsDisableShortcuts = false;
- IsInputFocused = false;
+ document.querySelector(".search-full-container").style.display = "none";
+ IsPopUpOpen = false;
+ IsDisableShortcuts = false;
+ IsInputFocused = false;
}
document.querySelector(".dualpane-search-input").addEventListener("keyup", async (e) => {
- if (e.keyCode == 13) { // 13 = Enter
- closeSearchBar();
- if (IsDualPaneEnabled == true) {
- await openSelectedItem(SelectedElement);
- }
- } else if (IsQuickSearchOpen == true && e.key !== "Escape" && e.key != "Shift" && e.key != "Control" && e.key != "Alt" && e.key != "Meta") {
- await searchFor($(".dualpane-search-input").val(), 999999, 1, true);
- } else {
- goUp(false, true);
- }
+ if (e.keyCode == 13) { // 13 = Enter
+ closeSearchBar();
+ if (IsDualPaneEnabled == true) {
+ await openSelectedItem(SelectedElement);
+ }
+ } else if (IsQuickSearchOpen == true && e.key !== "Escape" && e.key != "Shift" && e.key != "Control" && e.key != "Alt" && e.key != "Meta") {
+ await searchFor($(".dualpane-search-input").val(), 999999, 1, true);
+ } else {
+ goUp(false, true);
+ }
});
function openSearchBar() {
- document.querySelector(".search-bar-container").style.display = "flex";
- document.querySelector(".dualpane-search-input").focus();
- IsInputFocused = true;
- IsDisableShortcuts = true;
- IsQuickSearchOpen = true;
- IsPopUpOpen = true;
- document.querySelector(".dualpane-search-input").addEventListener("focusout", () => {
- resetEverything();
- });
+ document.querySelector(".search-bar-container").style.display = "flex";
+ document.querySelector(".dualpane-search-input").focus();
+ IsInputFocused = true;
+ IsDisableShortcuts = true;
+ IsQuickSearchOpen = true;
+ IsPopUpOpen = true;
+ document.querySelector(".dualpane-search-input").addEventListener("focusout", () => {
+ resetEverything();
+ });
}
function closeSearchBar() {
- document.querySelector(".dualpane-search-input").value = "";
- document.querySelector(".search-bar-container").style.display = "none";
- IsDisableShortcuts = false;
- IsQuickSearchOpen = false;
- IsPopUpOpen = false;
+ document.querySelector(".dualpane-search-input").value = "";
+ document.querySelector(".search-bar-container").style.display = "none";
+ IsDisableShortcuts = false;
+ IsQuickSearchOpen = false;
+ IsPopUpOpen = false;
}
async function cancelSearch() {
- document.querySelector(".cancel-search-button").style.display = "none";
- document.querySelector(".search-bar-input").value = "";
- await invoke("stop_searching");
- // await listDirectories();
+ document.querySelector(".cancel-search-button").style.display = "none";
+ document.querySelector(".search-bar-input").value = "";
+ await invoke("stop_searching");
+ // await listDirectories();
}
async function switchView() {
- if (IsDualPaneEnabled == false) {
- if (ViewMode == "wrap") {
- document.querySelectorAll(".directory-list").forEach((list) => {
- list.style.gridTemplateColumns = "unset";
- list.style.rowGap = "2px";
- });
- if (IsShowDisks == false) {
- document.querySelector(".switch-view-button").innerHTML =
- ` `;
- } else {
- document.querySelector(".switch-view-button").innerHTML =
- ` `;
- }
- document
- .querySelectorAll(".item-button")
- .forEach((item) => (item.style.display = "none"));
- document
- .querySelectorAll(".item-button-list")
- .forEach((item) => (item.style.display = "flex"));
- document
- .querySelectorAll(".disk-item-button-button")
- .forEach((item) => (item.style.display = "none"));
- document.querySelector(".list-column-header").style.display = "flex";
- $(".explorer-container")?.css("padding", "100px 10px 10px 10px");
- ViewMode = "column";
- } else if (ViewMode == "column") {
- document.querySelector(".list-column-header").style.display = "none";
- document.querySelector(".switch-view-button").innerHTML = ` `;
- document.querySelector(".miller-container").style.display = "flex";
- document.querySelector(".miller-column").style.display = "inline";
- document.querySelector(".non-dual-pane-container").style.display = "none";
- $(".explorer-container").css("padding", "10px 10px 0 10px");
- $(".file-searchbar").css("opacity", "0");
- $(".file-searchbar").css("pointer-events", "none");
- ViewMode = "miller";
- } else if (ViewMode == "miller" || IsShowDisks == true) {
- document.querySelector(".explorer-container").style.width = "100%";
- document.querySelectorAll(".directory-list").forEach((list) => {
- if (IsShowDisks == false) {
- list.style.gridTemplateColumns =
- "repeat(auto-fill, minmax(80px, 1fr))";
- list.style.rowGap = "15px";
- } else {
- list.style.rowGap = "15px";
- }
- });
- document.querySelector(".miller-container").style.display = "none";
- document.querySelector(".explorer-container").style.display = "block";
- document.querySelector(".switch-view-button").innerHTML = ` `;
- document.querySelectorAll(".item-button").forEach((item) => (item.style.display = "flex"));
- document.querySelectorAll(".item-button-list").forEach((item) => (item.style.display = "none"));
- document.querySelectorAll(".disk-item-button-button").forEach((item) => (item.style.display = "flex"));
- document.querySelector(".list-column-header").style.display = "none";
- $(".explorer-container")?.css("padding", "85px 20px 20px 20px");
- $(".file-searchbar").css("opacity", "1");
- $(".file-searchbar").css("pointer-events", "all");
- ViewMode = "wrap";
- }
- await invoke("switch_view", { viewMode: ViewMode });
- }
- if (IsShowDisks === false) {
- await listDirectories();
- }
+ if (IsDualPaneEnabled == false) {
+ if (ViewMode == "wrap") {
+ document.querySelectorAll(".directory-list").forEach((list) => {
+ list.style.gridTemplateColumns = "unset";
+ list.style.rowGap = "2px";
+ });
+ if (IsShowDisks == false) {
+ document.querySelector(".switch-view-button").innerHTML =
+ ` `;
+ } else {
+ document.querySelector(".switch-view-button").innerHTML =
+ ` `;
+ }
+ document
+ .querySelectorAll(".item-button")
+ .forEach((item) => (item.style.display = "none"));
+ document
+ .querySelectorAll(".item-button-list")
+ .forEach((item) => (item.style.display = "flex"));
+ document
+ .querySelectorAll(".disk-item-button-button")
+ .forEach((item) => (item.style.display = "none"));
+ document.querySelector(".list-column-header").style.display = "flex";
+ $(".explorer-container")?.css("padding", "100px 10px 10px 10px");
+ ViewMode = "column";
+ } else if (ViewMode == "column") {
+ document.querySelector(".list-column-header").style.display = "none";
+ document.querySelector(".switch-view-button").innerHTML = ` `;
+ document.querySelector(".miller-container").style.display = "flex";
+ document.querySelector(".miller-column").style.display = "inline";
+ document.querySelector(".non-dual-pane-container").style.display = "none";
+ $(".explorer-container").css("padding", "10px 10px 0 10px");
+ $(".file-searchbar").css("opacity", "0");
+ $(".file-searchbar").css("pointer-events", "none");
+ ViewMode = "miller";
+ } else if (ViewMode == "miller" || IsShowDisks == true) {
+ document.querySelector(".explorer-container").style.width = "100%";
+ document.querySelectorAll(".directory-list").forEach((list) => {
+ if (IsShowDisks == false) {
+ list.style.gridTemplateColumns =
+ "repeat(auto-fill, minmax(80px, 1fr))";
+ list.style.rowGap = "15px";
+ } else {
+ list.style.rowGap = "15px";
+ }
+ });
+ document.querySelector(".miller-container").style.display = "none";
+ document.querySelector(".explorer-container").style.display = "block";
+ document.querySelector(".switch-view-button").innerHTML = ` `;
+ document.querySelectorAll(".item-button").forEach((item) => (item.style.display = "flex"));
+ document.querySelectorAll(".item-button-list").forEach((item) => (item.style.display = "none"));
+ document.querySelectorAll(".disk-item-button-button").forEach((item) => (item.style.display = "flex"));
+ document.querySelector(".list-column-header").style.display = "none";
+ $(".explorer-container")?.css("padding", "85px 20px 20px 20px");
+ $(".file-searchbar").css("opacity", "1");
+ $(".file-searchbar").css("pointer-events", "all");
+ ViewMode = "wrap";
+ }
+ await invoke("switch_view", { viewMode: ViewMode });
+ }
+ if (IsShowDisks === false) {
+ await listDirectories();
+ }
}
async function switchToDualPane() {
- if (IsDualPaneEnabled == false) {
- OrgViewMode = ViewMode;
- IsDualPaneEnabled = true;
- ViewMode = "column";
- document.querySelector(".miller-container").style.display = "none";
- if (Platform == "darwin") {
- $(".header-nav").css("padding-left", "85px");
- }
- document.querySelectorAll(".item-button").forEach((item) => (item.style.display = "none"));
- document.querySelectorAll(".item-button-list").forEach((item) => (item.style.display = "flex"));
- document.querySelector(".switch-dualpane-view-button").innerHTML = ` `;
- await invoke("list_dirs").then(async (items) => {
- await showItems(items, "left");
- await showItems(items, "right");
- goUp(false, true);
- });
- document.querySelector(".site-nav-bar").style.width = "0px";
- document.querySelector(".site-nav-bar").style.minWidth = "0";
- if (Platform == "darwin") {
- $(".site-nav-bar").css("padding", "55px 0 0 0");
- }
- else {
- $(".site-nav-bar").css("padding", "0");
- }
- $(".list-column-header").css("height", "0");
- $(".list-column-header").css("padding", "0");
- $(".list-column-header").css("border", "none");
- $(".dual-pane-container").css("opacity", "1");
- $(".dual-pane-container").css("height", "100%");
- $(".dual-pane-container").css("padding-top", "55px");
- $(".non-dual-pane-container").css("width", "0");
- $(".non-dual-pane-container").css("opacity", "0");
- $(".non-dual-pane-container").css("height", "0px");
- $(".non-dual-pane-container").css("overflow", "hidden");
- $(".explorer-container").css("padding", "0");
- $(".file-searchbar").css("opacity", "0");
- $(".file-searchbar").css("pointer-events", "none");
- $(".switch-view-button").css("opacity", "0");
- $(".switch-view-button").css("pointer-events", "none");
- document.querySelectorAll(".item-button-list").forEach((item) => {
- item.children[0].style.textOverflow = "none";
- });
- } else {
- IsDualPaneEnabled = false;
- $(".non-dual-pane-container")?.css("width", "calc(100vw - 150px)");
- $(".non-dual-pane-container")?.css("opacity", "1");
- $(".non-dual-pane-container")?.css("height", "100%");
- $(".non-dual-pane-container")?.css("padding", "10px 20px");
- $(".non-dual-pane-container").css("overflow-y", "auto");
- $(".site-nav-bar")?.css("width", "150px");
- $(".site-nav-bar")?.css("min-width", "150px");
- if (Platform == "darwin") {
- $(".site-nav-bar")?.css("padding", "55px 10px 10px 10px");
- }
- else {
- $(".site-nav-bar")?.css("padding", "10px");
- }
- $(".explorer-container").css("padding", "10px");
- $(".list-column-header")?.css("height", "35px");
- $(".list-column-header")?.css("padding", "5px");
- $(".list-column-header")?.css("border-bottom", "1px solid var(--tertiaryColor)");
- $(".dual-pane-container")?.css("opacity", "0");
- $(".dual-pane-container")?.css("height", "0");
- $(".dual-pane-container")?.css("padding-top", "0");
- $(".header-nav-right-container")?.css("opacity", "1");
- $(".header-nav-right-container").css("pointer-events", "all");
- $(".file-searchbar").css("opacity", "1");
- $(".file-searchbar").css("pointer-events", "all");
- $(".switch-view-button").css("opacity", "1");
- $(".switch-view-button").css("pointer-events", "all");
- if (Platform == "darwin") {
- $(".header-nav")?.css("padding-left", "10px");
- }
- await applyPlatformFeatures();
- document.querySelector(".switch-dualpane-view-button").innerHTML =
- ` `;
- // Reset to view before the
- switch (OrgViewMode) {
- case "wrap":
- ViewMode = "miller";
- break;
- case "column":
- ViewMode = "wrap";
- break;
- case "miller":
- ViewMode = "column";
- break;
- }
- await switchView();
- }
- await saveConfig(false, false);
+ if (IsDualPaneEnabled == false) {
+ OrgViewMode = ViewMode;
+ IsDualPaneEnabled = true;
+ ViewMode = "column";
+ document.querySelector(".miller-container").style.display = "none";
+ if (Platform == "darwin") {
+ $(".header-nav").css("padding-left", "85px");
+ }
+ document.querySelectorAll(".item-button").forEach((item) => (item.style.display = "none"));
+ document.querySelectorAll(".item-button-list").forEach((item) => (item.style.display = "flex"));
+ document.querySelector(".switch-dualpane-view-button").innerHTML = ` `;
+ await invoke("list_dirs").then(async (items) => {
+ await showItems(items, "left");
+ await showItems(items, "right");
+ goUp(false, true);
+ });
+ document.querySelector(".site-nav-bar").style.width = "0px";
+ document.querySelector(".site-nav-bar").style.minWidth = "0";
+ if (Platform == "darwin") {
+ $(".site-nav-bar").css("padding", "55px 0 0 0");
+ }
+ else {
+ $(".site-nav-bar").css("padding", "0");
+ }
+ $(".list-column-header").css("height", "0");
+ $(".list-column-header").css("padding", "0");
+ $(".list-column-header").css("border", "none");
+ $(".dual-pane-container").css("opacity", "1");
+ $(".dual-pane-container").css("height", "100%");
+ $(".dual-pane-container").css("padding-top", "55px");
+ $(".non-dual-pane-container").css("width", "0");
+ $(".non-dual-pane-container").css("opacity", "0");
+ $(".non-dual-pane-container").css("height", "0px");
+ $(".non-dual-pane-container").css("overflow", "hidden");
+ $(".explorer-container").css("padding", "0");
+ $(".file-searchbar").css("opacity", "0");
+ $(".file-searchbar").css("pointer-events", "none");
+ $(".switch-view-button").css("opacity", "0");
+ $(".switch-view-button").css("pointer-events", "none");
+ document.querySelectorAll(".item-button-list").forEach((item) => {
+ item.children[0].style.textOverflow = "none";
+ });
+ } else {
+ IsDualPaneEnabled = false;
+ $(".non-dual-pane-container")?.css("width", "calc(100vw - 150px)");
+ $(".non-dual-pane-container")?.css("opacity", "1");
+ $(".non-dual-pane-container")?.css("height", "100%");
+ $(".non-dual-pane-container")?.css("padding", "10px 20px");
+ $(".non-dual-pane-container").css("overflow-y", "auto");
+ $(".site-nav-bar")?.css("width", "150px");
+ $(".site-nav-bar")?.css("min-width", "150px");
+ if (Platform == "darwin") {
+ $(".site-nav-bar")?.css("padding", "55px 10px 10px 10px");
+ }
+ else {
+ $(".site-nav-bar")?.css("padding", "10px");
+ }
+ $(".explorer-container").css("padding", "10px");
+ $(".list-column-header")?.css("height", "35px");
+ $(".list-column-header")?.css("padding", "5px");
+ $(".list-column-header")?.css("border-bottom", "1px solid var(--tertiaryColor)");
+ $(".dual-pane-container")?.css("opacity", "0");
+ $(".dual-pane-container")?.css("height", "0");
+ $(".dual-pane-container")?.css("padding-top", "0");
+ $(".header-nav-right-container")?.css("opacity", "1");
+ $(".header-nav-right-container").css("pointer-events", "all");
+ $(".file-searchbar").css("opacity", "1");
+ $(".file-searchbar").css("pointer-events", "all");
+ $(".switch-view-button").css("opacity", "1");
+ $(".switch-view-button").css("pointer-events", "all");
+ if (Platform == "darwin") {
+ $(".header-nav")?.css("padding-left", "10px");
+ }
+ await applyPlatformFeatures();
+ document.querySelector(".switch-dualpane-view-button").innerHTML =
+ ` `;
+ // Reset to view before the
+ switch (OrgViewMode) {
+ case "wrap":
+ ViewMode = "miller";
+ break;
+ case "column":
+ ViewMode = "wrap";
+ break;
+ case "miller":
+ ViewMode = "column";
+ break;
+ }
+ await switchView();
+ }
+ await saveConfig(false, false);
}
function switchHiddenFiles() {
- if (IsShowHiddenFiles) {
- IsShowHiddenFiles = false;
- document.querySelector(".switch-hidden-files-button").innerHTML =
- ` `;
- } else {
- IsShowHiddenFiles = true;
- document.querySelector(".switch-hidden-files-button").innerHTML =
- ` `;
- }
- listDirectories();
+ if (IsShowHiddenFiles) {
+ IsShowHiddenFiles = false;
+ document.querySelector(".switch-hidden-files-button").innerHTML =
+ ` `;
+ } else {
+ IsShowHiddenFiles = true;
+ document.querySelector(".switch-hidden-files-button").innerHTML =
+ ` `;
+ }
+ listDirectories();
}
function openSettings() {
- if (IsPopUpOpen == false) {
- $(".settings-ui").css("display", "flex");
- // Workaround for opacity transition
- setTimeout(() => {
- $(".settings-ui").css("opacity", "1");
- });
- IsDisableShortcuts = true;
- IsPopUpOpen = true;
- }
+ if (IsPopUpOpen == false) {
+ $(".settings-ui").css("display", "flex");
+ // Workaround for opacity transition
+ setTimeout(() => {
+ $(".settings-ui").css("opacity", "1");
+ });
+ IsDisableShortcuts = true;
+ IsPopUpOpen = true;
+ }
}
async function saveConfig(isToReload = true, isVerbose = true) {
- let configuredPathOne = (ConfiguredPathOne = document.querySelector(
- ".configured-path-one-input",
- ).value);
- let configuredPathTwo = (ConfiguredPathTwo = document.querySelector(
- ".configured-path-two-input",
- ).value);
- let configuredPathThree = (ConfiguredPathThree = document.querySelector(
- ".configured-path-three-input",
- ).value);
- let isOpenInTerminal = false; // document.querySelector(".openin-terminal-checkbox").checked;
- let isDualPaneEnabled = document.querySelector(
- ".show-dual-pane-checkbox",
- ).checked;
- let launchPath = document.querySelector(".launch-path-input").value;
- let isDualPaneActive = IsDualPaneEnabled;
- let searchDepth = parseInt(
- document.querySelector(".search-depth-input").value,
- );
- let maxItems = parseInt(document.querySelector(".max-items-input").value);
- let isImagePreview = (IsImagePreview = document.querySelector(
- ".image-preview-checkbox",
- ).checked);
- let isSelectMode = (IsSelectMode = $("#choose-interaction-mode").is(
- ":checked",
- ));
- let currentTheme = $(".theme-select").val();
-
- if (isOpenInTerminal == true) {
- isOpenInTerminal = "1";
- } else {
- isOpenInTerminal = "0";
- }
- if (isDualPaneEnabled == true) {
- isDualPaneEnabled = "1";
- } else {
- isDualPaneEnabled = "0";
- }
- if (isDualPaneActive == true) {
- isDualPaneActive = "1";
- } else {
- isDualPaneActive = "0";
- }
- if (isImagePreview == true) {
- isImagePreview = "1";
- } else {
- isImagePreview = "0";
- }
- if (isSelectMode == true) {
- isSelectMode = "1";
- } else {
- isSelectMode = "0";
- }
-
- await invoke("save_config", {
- configuredPathOne,
- configuredPathTwo,
- configuredPathThree,
- isOpenInTerminal,
- isDualPaneEnabled,
- launchPath,
- isDualPaneEnabled,
- isDualPaneActive,
- searchDepth,
- maxItems,
- isImagePreview,
- isSelectMode,
- currentTheme,
- arrFavorites: ArrFavorites,
- });
- if (isVerbose === true) {
- showToast("Settings have been saved", ToastType.INFO);
- }
- if (isToReload == true) {
- checkAppConfig();
- }
+ let configuredPathOne = (ConfiguredPathOne = document.querySelector(
+ ".configured-path-one-input",
+ ).value);
+ let configuredPathTwo = (ConfiguredPathTwo = document.querySelector(
+ ".configured-path-two-input",
+ ).value);
+ let configuredPathThree = (ConfiguredPathThree = document.querySelector(
+ ".configured-path-three-input",
+ ).value);
+ let isOpenInTerminal = false; // document.querySelector(".openin-terminal-checkbox").checked;
+ let isDualPaneEnabled = document.querySelector(
+ ".show-dual-pane-checkbox",
+ ).checked;
+ let launchPath = document.querySelector(".launch-path-input").value;
+ let isDualPaneActive = IsDualPaneEnabled;
+ let searchDepth = parseInt(
+ document.querySelector(".search-depth-input").value,
+ );
+ let maxItems = parseInt(document.querySelector(".max-items-input").value);
+ let isImagePreview = (IsImagePreview = document.querySelector(
+ ".image-preview-checkbox",
+ ).checked);
+ let isSelectMode = (IsSelectMode = $("#choose-interaction-mode").is(
+ ":checked",
+ ));
+ let currentTheme = $(".theme-select").val();
+
+ if (isOpenInTerminal == true) {
+ isOpenInTerminal = "1";
+ } else {
+ isOpenInTerminal = "0";
+ }
+ if (isDualPaneEnabled == true) {
+ isDualPaneEnabled = "1";
+ } else {
+ isDualPaneEnabled = "0";
+ }
+ if (isDualPaneActive == true) {
+ isDualPaneActive = "1";
+ } else {
+ isDualPaneActive = "0";
+ }
+ if (isImagePreview == true) {
+ isImagePreview = "1";
+ } else {
+ isImagePreview = "0";
+ }
+ if (isSelectMode == true) {
+ isSelectMode = "1";
+ } else {
+ isSelectMode = "0";
+ }
+
+ await invoke("save_config", {
+ configuredPathOne,
+ configuredPathTwo,
+ configuredPathThree,
+ isOpenInTerminal,
+ isDualPaneEnabled,
+ launchPath,
+ isDualPaneEnabled,
+ isDualPaneActive,
+ searchDepth,
+ maxItems,
+ isImagePreview,
+ isSelectMode,
+ currentTheme,
+ arrFavorites: ArrFavorites,
+ });
+ if (isVerbose === true) {
+ showToast("Settings have been saved", ToastType.INFO);
+ }
+ if (isToReload == true) {
+ checkAppConfig();
+ }
}
async function addFavorites(item) {
- ArrFavorites.push(item);
- // await invoke("save_favorites", { arrFavorites: ArrFavorites }); // Todo: implement this
+ ArrFavorites.push(item);
+ // await invoke("save_favorites", { arrFavorites: ArrFavorites }); // Todo: implement this
}
function closeSettings() {
- $(".settings-ui").css("opacity", "0");
- setTimeout(() => {
- $(".settings-ui").css("display", "none");
- }, 300)
- IsDisableShortcuts = false;
- IsPopUpOpen = false;
+ $(".settings-ui").css("opacity", "0");
+ setTimeout(() => {
+ $(".settings-ui").css("display", "none");
+ }, 300)
+ IsDisableShortcuts = false;
+ IsPopUpOpen = false;
}
function getExtDescription(file_extension) {
- return fileExtensions[file_extension.replace(".", "").toUpperCase()];
+ return fileExtensions[file_extension.replace(".", "").toUpperCase()];
}
async function showProperties(item) {
- if (IsPopUpOpen === false) {
- let name = item.getAttribute("itemname");
- let path = item.getAttribute("itempath");
- let ext = item.getAttribute("itemext");
- let extension_description = getExtDescription(ext); // undefined if it's unknown or a directory
- let modifiedAt = item.getAttribute("itemmodified");
- ContextMenu.style.display = "none";
- let popup = document.createElement("div");
- popup.className = "uni-popup item-properties-popup";
- popup.innerHTML = `
-
-
-
- Path:
-
+ if (IsPopUpOpen === false) {
+ let name = item.getAttribute("itemname");
+ let path = item.getAttribute("itempath");
+ let ext = item.getAttribute("itemext");
+ let extension_description = getExtDescription(ext); // undefined if it's unknown or a directory
+ let modifiedAt = item.getAttribute("itemmodified");
+ ContextMenu.style.display = "none";
+ let popup = document.createElement("div");
+ popup.className = "uni-popup item-properties-popup";
+ popup.innerHTML = `
+
+
+
+ Path:
+
${path}
-
-
- ${extension_description ? `
Type: ${extension_description}
` : ''}
-
-
Modified: ${modifiedAt}
-
-
- `;
- document.querySelector("body").append(popup);
- IsPopUpOpen = true;
- await getSimpleDirInfo(path, ".properties-item-size", item.getAttribute("itemisdir") == "1");
- }
+
+
+ ${extension_description ? `
Type: ${extension_description}
` : ''}
+
+
Modified: ${modifiedAt}
+
+
+ `;
+ document.querySelector("body").append(popup);
+ IsPopUpOpen = true;
+ await getSimpleDirInfo(path, ".properties-item-size", item.getAttribute("itemisdir") == "1");
+ }
}
function closeInfoProperties() {
- $(".item-properties-popup")?.remove();
- IsPopUpOpen = false;
- IsItemPreviewOpen = false;
+ $(".item-properties-popup")?.remove();
+ IsPopUpOpen = false;
+ IsItemPreviewOpen = false;
}
async function showItemPreview(item, isOverride = false) {
- let fadeTime = 200;
- if (isOverride) {
- $(".item-preview-popup")?.fadeOut(fadeTime);
- $(".item-properties-popup").remove();
- IsPopUpOpen = false;
- }
- let name = item.getAttribute("itemname");
- let ext = item.getAttribute("itemext");
- let path = item.getAttribute("itempath");
- let popup = document.createElement("div");
- popup.className = "item-preview-popup";
- IsItemPreviewOpen = true;
- let module = "";
+ let fadeTime = 200;
+ if (isOverride) {
+ $(".item-preview-popup")?.fadeOut(fadeTime);
+ $(".item-properties-popup").remove();
+ IsPopUpOpen = false;
+ }
+ let name = item.getAttribute("itemname");
+ let ext = item.getAttribute("itemext");
+ let path = item.getAttribute("itempath");
+ let popup = document.createElement("div");
+ popup.className = "item-preview-popup";
+ IsItemPreviewOpen = true;
+ let module = "";
let moduleImgId = crypto.randomUUID();
- switch (ext.toLowerCase()) {
- case ".png":
- case ".icns":
- case ".jpg":
- case ".jpeg":
- case ".gif":
- case ".svg":
- case ".webp":
- case ".ico":
- case ".jfif":
- case ".avif":
- module = `
-
-
-
- `;
- break;
- case ".pdf":
- case ".html":
- module = `>`;
- break;
- case ".mp4":
- case ".mkv":
- case ".mov":
- case ".avi":
- case ".webm":
- case ".mp3":
- case ".wav":
- case ".ogg":
- case ".flac":
- case ".aac":
- case ".m4a":
- case ".wma":
- case ".ape":
- case ".flv":
- case ".wmv":
- module = `
-
-
-
- `;
- break;
- case ".txt":
- case ".json":
- case ".sh":
- case ".py":
- case ".css":
- case ".js":
- case ".ts":
- case ".sql":
- case ".mts":
- case ".jsx":
- case ".tsx":
- case ".mjs":
- case ".php":
- case ".c":
- case ".cpp":
- case ".cs":
- case ".java":
- case ".md":
- case ".xml":
- case ".yaml":
- case ".yml":
- case ".toml":
- case ".lock":
- case ".ini":
- case ".cfg":
- case ".log":
- case ".env":
- case ".gitignore":
- popup.style.maxWidth = "50%";
- module = `
- ${await invoke("get_file_content", { path })}
- `;
- break;
- default:
- showProperties(item);
- return;
- }
- popup.innerHTML = `
-
- ${module}
- `;
- IsPopUpOpen = true;
- document.querySelector("body").append(popup);
+ switch (ext.toLowerCase()) {
+ case ".png":
+ case ".icns":
+ case ".jpg":
+ case ".jpeg":
+ case ".gif":
+ case ".svg":
+ case ".webp":
+ case ".ico":
+ case ".jfif":
+ case ".avif":
+ module = `
+
+
+
+ `;
+ break;
+ case ".pdf":
+ case ".html":
+ case ".xhtml":
+ case ".htm":
+ popup.style.backgroundColor = "white";
+ module = `>`;
+ break;
+ case ".mp4":
+ case ".mkv":
+ case ".mov":
+ case ".avi":
+ case ".webm":
+ case ".mp3":
+ case ".wav":
+ case ".ogg":
+ case ".flac":
+ case ".aac":
+ case ".m4a":
+ case ".wma":
+ case ".ape":
+ case ".flv":
+ case ".wmv":
+ module = `
+
+
+
+ `;
+ break;
+ case ".txt":
+ case ".json":
+ case ".sh":
+ case ".py":
+ case ".css":
+ case ".js":
+ case ".ts":
+ case ".sql":
+ case ".mts":
+ case ".jsx":
+ case ".tsx":
+ case ".mjs":
+ case ".php":
+ case ".c":
+ case ".cpp":
+ case ".cs":
+ case ".java":
+ case ".md":
+ case ".xml":
+ case ".yaml":
+ case ".yml":
+ case ".toml":
+ case ".lock":
+ case ".ini":
+ case ".cfg":
+ case ".log":
+ case ".env":
+ case ".gitignore":
+ popup.style.maxWidth = "50%";
+ module = `
+ ${await invoke("get_file_content", { path })}
+ `;
+ break;
+ default:
+ showProperties(item);
+ return;
+ }
+ popup.innerHTML = `
+
+ ${module}
+ `;
+ IsPopUpOpen = true;
+ document.querySelector("body").append(popup);
$(popup).fadeIn(fadeTime);
- popup.querySelector("img").src = convertFileSrc(item.getAttribute("itempath"));
- popup.children[0].addEventListener("keydown", (e) => {
- if (e.key === "Escape") {
- e.target.blur();
- }
- });
+ popup.querySelector("img").src = convertFileSrc(item.getAttribute("itempath"));
+ popup.children[0].addEventListener("keydown", (e) => {
+ if (e.key === "Escape") {
+ e.target.blur();
+ }
+ });
}
function showMultiRenamePopup() {
- IsPopUpOpen = true;
- let popup = document.createElement("div");
- popup.className = "uni-popup multi-rename-popup";
- popup.innerHTML = `
-