added a progress bar

This commit is contained in:
ayabusa 2024-03-03 15:32:53 +01:00
parent 9f29e6d64c
commit 6ff254ddf4
6 changed files with 60 additions and 7 deletions

View File

@ -35,9 +35,9 @@ async fn select_folder_button(app: tauri::AppHandle) {
}
#[tauri::command]
fn slice_button(app: tauri::AppHandle, chapter: &str){
async fn slice_button(app: tauri::AppHandle, chapter: String){
// Try to format the chapters and panic if it was not able to
let formated_chapters = match format_chapter(chapter) {
let formated_chapters = match format_chapter(&chapter) {
Ok(res) => res,
Err(error) => panic!("Problem slicing chapter: {:?}", error),
};
@ -52,6 +52,15 @@ fn slice_button(app: tauri::AppHandle, chapter: &str){
Err(error) => panic!("Problem creating directory : {:?}", error),
};*/
// create the progress window
let _about_window = tauri::WindowBuilder::new(
&app,
"progress", /* the unique window label */
tauri::WindowUrl::App("progress.html".into())
).build().expect("failed to create progress window");
_about_window.set_title("Slicing progress").unwrap();
_about_window.set_size(Size::Physical(PhysicalSize { width: 400, height: 100 })).unwrap();
for i in 0..time_codes.len(){
let args: Vec<String>;
let mut output_file: PathBuf = PathBuf::from(&FOLDER_PATH.lock().unwrap().to_owned());
@ -67,12 +76,20 @@ fn slice_button(app: tauri::AppHandle, chapter: &str){
time_codes[i+1].to_owned(),
//format!("{:?}", output_file),
output_file.display().to_string()];
}else {
args = vec!["-version".to_owned()];
}else { // case for the last song
args = vec!["-i".to_owned(),
FILE_PATH.lock().unwrap().to_owned(),
"-ss".to_owned(),
time_codes[i].to_owned(),
//format!("{:?}", output_file),
output_file.display().to_string()];
}
// launch the final ffmpeg command
launch_ffmpeg(app.clone(), args);
// update progress bar on frontend
app.emit_all("progress_state_changed", Payload { message: format!("{}", (i+1)*100/time_codes.len()) }).unwrap();
}
}

View File

@ -1,7 +1,5 @@
const { listen } = window.__TAURI__.event
document.getElementById("fileLocation").innerHTML = "hey";
// listen for file location from rust backend
const unlistenfile = await listen('file_path_changed', (event) => {
document.getElementById("fileLocation").innerHTML = event.payload.message;

View File

@ -25,7 +25,10 @@
</div>
<div>
<textarea id="chapterList" rows="30">nothing for now</textarea>
<textarea id="chapterList" rows="30">
0:00 - my first song
3:30 - another one
13:37 - one more time - Daft punk</textarea>
</div>
<div class="select-file">

16
src/progress.html Normal file
View File

@ -0,0 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" href="styles.css" />
<script type="module" src="/progress.js" defer></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Slicing progress</title>
</head>
<body>
<p class="credit" id="progress_label"> Slicing : 0% </p>
<div class="progress_center">
<progress value="0" max="100" id="progress_bar"></progress>
</div>
</body>

8
src/progress.js Normal file
View File

@ -0,0 +1,8 @@
const { listen } = window.__TAURI__.event
// listen for progress update from rust backend
const unlistenprogress = await listen('progress_state_changed', (event) => {
document.getElementById("progress_label").innerHTML = "Slicing : "+event.payload.message+"%";
document.getElementById("progress_bar").value = event.payload.message;
console.log("changing progress bar state to : ", event.payload.message);
})

View File

@ -140,3 +140,14 @@ button {
from { background-position: 0 0, 50px 50px, 50px 0; }
to { background-position: -100px -100px, -50px -50px, -50px -100px; }
}
progress::-moz-progress-bar { background: #d88939; }
progress::-webkit-progress-value { background: #d88939; }
progress {
color: #d88939;
width: 100%;
}
.progress_center {
text-align: center;
}