first test run with getting list of files in folder

This commit is contained in:
DJ2LS 2023-02-28 13:55:11 +01:00
parent 1238a4c761
commit 90ce4acfce
5 changed files with 251 additions and 18 deletions

View file

@ -89,7 +89,10 @@ const configDefaultSettings =
"high_graphics" : "True",\ "high_graphics" : "True",\
"explorer_stats" : "False", \ "explorer_stats" : "False", \
"auto_tune" : "False", \ "auto_tune" : "False", \
"enable_is_writing" : "True" \ "enable_is_writing" : "True", \
"shared_folder_path" : ".", \
"enable_request_profile" : "True", \
"enable_request_shared_folder" : "True" \
}'; }';
if (!fs.existsSync(configPath)) { if (!fs.existsSync(configPath)) {
@ -446,12 +449,12 @@ ipcMain.on("get-file-path", (event, data) => {
dialog dialog
.showOpenDialog({ .showOpenDialog({
defaultPath: path.join(__dirname, "../"), defaultPath: path.join(__dirname, "../"),
buttonLabel: "Select rigctld", buttonLabel: "Select File",
properties: ["openFile"], properties: ["openFile"],
}) })
.then((filePaths) => { .then((filePaths) => {
if (filePaths.canceled == false) { if (filePaths.canceled == false) {
win.webContents.send("return-file-paths", { path: filePaths }); win.webContents.send(data.action, { path: filePaths });
} }
}); });
}); });
@ -465,7 +468,7 @@ ipcMain.on("get-folder-path", (event, data) => {
properties: ["openDirectory"], properties: ["openDirectory"],
}) })
.then((folderPaths) => { .then((folderPaths) => {
win.webContents.send("return-folder-paths", { path: folderPaths }); win.webContents.send(data.action, { path: folderPaths });
}); });
}); });
@ -543,6 +546,40 @@ ipcMain.on("select-user-image", (event, data) => {
} }
}); });
}); });
// read files in folder - use case "shared folder"
ipcMain.on("read-files-in-folder", (event, data) => {
let fileList = []
let folder = data.folder
let files = fs.readdirSync(folder);
console.log(folder)
console.log(files)
files.forEach(file => {
try{
let filePath = folder + '/' + file;
if(fs.lstatSync(filePath).isFile()){
let fileSizeInBytes = fs.statSync(filePath).size
let extension = path.extname(filePath);
fileList.push({ name: file, extension: extension.substring(1), size: fileSizeInBytes });
}
} catch(err){
console.log(err)
}
});
chat.webContents.send("return-shared-folder-files", {
files: fileList,
});
});
//save file to folder //save file to folder
ipcMain.on("save-file-to-folder", (event, data) => { ipcMain.on("save-file-to-folder", (event, data) => {
console.log(data.file); console.log(data.file);

View file

@ -397,6 +397,24 @@ window.addEventListener("DOMContentLoaded", () => {
}); });
}); });
// open file selector for shared folder
document.getElementById("sharedFolderButton").addEventListener("click", () => {
ipcRenderer.send("read-files-in-folder", {
folder: config.shared_folder_path,
});
});
document
.getElementById("openSharedFilesFolder")
.addEventListener("click", () => {
ipcRenderer.send("open-folder", {
path: config.shared_folder_path,
});
});
// SEND MSG // SEND MSG
document.getElementById("sendMessage").addEventListener("click", () => { document.getElementById("sendMessage").addEventListener("click", () => {
document.getElementById("emojipickercontainer").style.display = "none"; document.getElementById("emojipickercontainer").style.display = "none";
@ -496,6 +514,7 @@ window.addEventListener("DOMContentLoaded", () => {
file = ""; file = "";
filename = ""; filename = "";
}); });
ipcRenderer.on("return-selected-files", (event, arg) => { ipcRenderer.on("return-selected-files", (event, arg) => {
filetype = arg.mime; filetype = arg.mime;
console.log(filetype); console.log(filetype);
@ -509,6 +528,52 @@ ipcRenderer.on("return-selected-files", (event, arg) => {
`; `;
}); });
ipcRenderer.on("return-shared-folder-files", (event, arg) => {
console.log(arg)
var tbl = document.getElementById("sharedFolderTable");
tbl.innerHTML = "";
let counter = 0
arg.files.forEach(file => {
console.log(file["name"]);
var row = document.createElement("tr");
let id = document.createElement("td");
let idText = document.createElement("span");
idText.innerText = counter+=1;
id.appendChild(idText);
row.appendChild(id);
let filename = document.createElement("td");
let filenameText = document.createElement("span");
filenameText.innerText = file["name"];
filename.appendChild(filenameText);
row.appendChild(filename);
let filetype = document.createElement("td");
let filetypeText = document.createElement("span");
filetypeText.innerHTML = `
<i class="bi bi-filetype-${file['extension']}" style="font-size: 1.8rem"></i>
`;
filetype.appendChild(filetypeText);
row.appendChild(filetype);
let filesize = document.createElement("td");
let filesizeText = document.createElement("span");
filesizeText.innerText = file["size"];
filesize.appendChild(filesizeText);
row.appendChild(filesize);
tbl.appendChild(row);
});
});
ipcRenderer.on("return-select-user-image", (event, arg) => { ipcRenderer.on("return-select-user-image", (event, arg) => {
let imageFiletype = arg.mime; let imageFiletype = arg.mime;
let imageFile = arg.data; let imageFile = arg.data;
@ -728,7 +793,11 @@ ipcRenderer.on("action-new-msg-received", (event, arg) => {
obj.filetype = "null"; obj.filetype = "null";
obj.file = "null"; obj.file = "null";
if(config.enable_request_profile == "True"){
sendUserData(item.dxcallsign); sendUserData(item.dxcallsign);
}
} else if (splitted_data[1] == "res") { } else if (splitted_data[1] == "res") {
obj.uuid = uuidv4().toString(); obj.uuid = uuidv4().toString();
obj.timestamp = Math.floor(Date.now() / 1000); obj.timestamp = Math.floor(Date.now() / 1000);

View file

@ -162,9 +162,10 @@ window.addEventListener("DOMContentLoaded", () => {
.addEventListener("click", () => { .addEventListener("click", () => {
ipcRenderer.send("get-folder-path", { ipcRenderer.send("get-folder-path", {
title: "Title", title: "Title",
action: "return-folder-paths-received_files_folder",
}); });
ipcRenderer.on("return-folder-paths", (event, data) => { ipcRenderer.on("return-folder-paths-received_files_folder", (event, data) => {
document.getElementById("received_files_folder").value = document.getElementById("received_files_folder").value =
data.path.filePaths[0]; data.path.filePaths[0];
config.received_files_folder = data.path.filePaths[0]; config.received_files_folder = data.path.filePaths[0];
@ -172,6 +173,23 @@ window.addEventListener("DOMContentLoaded", () => {
}); });
}); });
document
.getElementById("shared_folder_path")
.addEventListener("click", () => {
ipcRenderer.send("get-folder-path", {
title: "Title",
action: "return-folder-paths-shared_folder_path",
});
ipcRenderer.on("return-folder-paths-shared_folder_path", (event, data) => {
document.getElementById("shared_folder_path").value =
data.path.filePaths[0];
config.shared_folder_path = data.path.filePaths[0];
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
});
document document
.getElementById("openReceivedFilesFolder") .getElementById("openReceivedFilesFolder")
.addEventListener("click", () => { .addEventListener("click", () => {
@ -180,6 +198,8 @@ window.addEventListener("DOMContentLoaded", () => {
}); });
}); });
/* /*
// ENABLE BOOTSTRAP POPOVERS EVERYWHERE // ENABLE BOOTSTRAP POPOVERS EVERYWHERE
// https://getbootstrap.com/docs/5.0/components/popovers/#example-enable-popovers-everywhere // https://getbootstrap.com/docs/5.0/components/popovers/#example-enable-popovers-everywhere
@ -242,6 +262,21 @@ window.addEventListener("DOMContentLoaded", () => {
document.getElementById("scatterSwitch").checked = false; document.getElementById("scatterSwitch").checked = false;
} }
document.getElementById("shared_folder_path").value =
config.shared_folder_path;
if (config.enable_request_profile == "True") {
document.getElementById("enable_request_profile").checked = true;
} else {
document.getElementById("enable_request_profile").checked = false;
}
if (config.enable_request_shared_folder == "True") {
document.getElementById("enable_request_shared_folder").checked = true;
} else {
document.getElementById("enable_request_shared_folder").checked = false;
}
if (config.enable_is_writing == "True") { if (config.enable_is_writing == "True") {
document.getElementById("enable_is_writing").checked = true; document.getElementById("enable_is_writing").checked = true;
} else { } else {
@ -556,9 +591,10 @@ window.addEventListener("DOMContentLoaded", () => {
.addEventListener("click", () => { .addEventListener("click", () => {
ipcRenderer.send("get-file-path", { ipcRenderer.send("get-file-path", {
title: "Title", title: "Title",
action : "return-file-path-hamlib_rigctld_path"
}); });
ipcRenderer.on("return-file-paths", (event, data) => { ipcRenderer.on("return-file-path-hamlib_rigctld_path", (event, data) => {
rigctldPath = data.path.filePaths[0]; rigctldPath = data.path.filePaths[0];
document.getElementById("hamlib_rigctld_path").value = rigctldPath; document.getElementById("hamlib_rigctld_path").value = rigctldPath;
config.hamlib_rigctld_path = rigctldPath; config.hamlib_rigctld_path = rigctldPath;
@ -1033,6 +1069,26 @@ window.addEventListener("DOMContentLoaded", () => {
fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
}); });
// enable enable_request_shared_folder switch clicked
document.getElementById("enable_request_shared_folder").addEventListener("click", () => {
if (document.getElementById("enable_request_shared_folder").checked == true) {
config.enable_request_shared_folder = "True";
} else {
config.enable_request_shared_folder = "False";
}
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
// enable enable_request_profile switch clicked
document.getElementById("enable_request_profile").addEventListener("click", () => {
if (document.getElementById("enable_request_profile").checked == true) {
config.enable_request_profile = "True";
} else {
config.enable_request_profile = "False";
}
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
});
// Tuning range clicked // Tuning range clicked
document.getElementById("tuning_range_fmin").addEventListener("click", () => { document.getElementById("tuning_range_fmin").addEventListener("click", () => {
var tuning_range_fmin = document.getElementById("tuning_range_fmin").value; var tuning_range_fmin = document.getElementById("tuning_range_fmin").value;

View file

@ -582,19 +582,29 @@
<!-- user shared folder --> <!-- user shared folder -->
<div <div
class="modal fade" class="modal fade "
id="sharedFolderModal" id="sharedFolderModal"
tabindex="-1" tabindex="-1"
aria-labelledby="sharedFolderModalLabel" aria-labelledby="sharedFolderModalLabel"
aria-hidden="true" aria-hidden="true"
> >
<div class="modal-dialog"> <div class="modal-dialog modal-dialog-scrollable">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h1 class="modal-title fs-5" id="sharedFolderModalLabel"> <h1 class="modal-title fs-5" id="sharedFolderModalLabel">
My Shared folder My Shared folder
<button
type="button"
class="btn btn-primary"
id="openSharedFilesFolder"
><i class="bi bi-archive"></i></button>
</h1> </h1>
<button <button
type="button" type="button"
class="btn-close" class="btn-close"
@ -603,15 +613,24 @@
></button> ></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="container-fluid">Future feature... be patient :-)</div> <div class="container-fluid">
<div class="modal-footer">
<button <div class="table-responsive">
type="button" <!-- START OF TABLE FOR HEARD STATIONS -->
class="btn btn-secondary" <table class="table table-sm">
data-bs-dismiss="modal" <thead>
> <tr>
Close <th scope="col">#</th>
</button> <th scope="col">Name</th>
<th scope="col">Type</th>
<th scope="col">Size</th>
</tr>
</thead>
<tbody id="sharedFolderTable">
</tbody>
</table>
</div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1854,6 +1854,58 @@
</div> </div>
</label> </label>
</div> </div>
<div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50"
>Allow requesting "user profile"</label
>
<label class="input-group-text bg-white w-50">
<div class="form-check form-switch form-check-inline">
<input
class="form-check-input"
type="checkbox"
id="enable_request_profile"
/>
</div>
</label>
</div>
<div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50"
>Allow requesting "shared folder"</label
>
<label class="input-group-text bg-white w-50">
<div class="form-check form-switch form-check-inline">
<input
class="form-check-input"
type="checkbox"
id="enable_request_shared_folder"
/>
</div>
</label>
</div>
<div class="input-group input-group-sm mb-1">
<label class="input-group-text w-50"
>Shared folder path</label
>
<input
type="text"
class="form-control w-50"
id="shared_folder_path"
/>
</div>
</div> </div>
<!--Rigctl tab contents--> <!--Rigctl tab contents-->
<div <div