From 64c6b9aa4fcc17caad0290bc9bc0ea2bfa401f4f Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sun, 26 Jul 2020 11:07:55 +0200 Subject: [PATCH] Enable rerun PP for multiple recordings --- .../java/ctbrec/ui/tabs/RecordingsTab.java | 22 +++++++++---------- common/src/main/java/ctbrec/Recording.java | 6 +++++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java b/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java index 2df62b99..5fff704d 100644 --- a/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java +++ b/client/src/main/java/ctbrec/ui/tabs/RecordingsTab.java @@ -439,15 +439,13 @@ public class RecordingsTab extends Tab implements TabSelectionListener { } MenuItem rerunPostProcessing = new MenuItem("Rerun Post-Processing"); - rerunPostProcessing.setOnAction(e -> triggerPostProcessing(first)); - if (first.getStatus() == FAILED || first.getStatus() == WAITING || first.getStatus() == FINISHED) { - contextMenu.getItems().add(rerunPostProcessing); - } + rerunPostProcessing.setOnAction(e -> triggerPostProcessing(recordings)); + contextMenu.getItems().add(rerunPostProcessing); + rerunPostProcessing.setDisable(!recordings.stream().allMatch(Recording::canBePostProcessed)); if(recordings.size() > 1) { openInPlayer.setDisable(true); openDir.setDisable(true); - rerunPostProcessing.setDisable(true); } return contextMenu; @@ -567,13 +565,15 @@ public class RecordingsTab extends Tab implements TabSelectionListener { new Thread(() -> DesktopIntegration.open(tsFile.getParent())).start(); } - private void triggerPostProcessing(JavaFxRecording first) { + private void triggerPostProcessing(List recs) { new Thread(() -> { - try { - recorder.rerunPostProcessing(first.getDelegate()); - } catch (IOException | InvalidKeyException | NoSuchAlgorithmException | IllegalStateException e1) { - showErrorDialog("Error while starting post-processing", "The post-processing could not be started", e1); - LOG.error("Error while starting post-processing", e1); + for (JavaFxRecording rec : recs) { + try { + recorder.rerunPostProcessing(rec.getDelegate()); + } catch (IOException | InvalidKeyException | NoSuchAlgorithmException | IllegalStateException e1) { + showErrorDialog("Error while starting post-processing", "The post-processing could not be started", e1); + LOG.error("Error while starting post-processing", e1); + } } }).start(); } diff --git a/common/src/main/java/ctbrec/Recording.java b/common/src/main/java/ctbrec/Recording.java index 9195d801..e6f60bf8 100644 --- a/common/src/main/java/ctbrec/Recording.java +++ b/common/src/main/java/ctbrec/Recording.java @@ -1,5 +1,7 @@ package ctbrec; +import static ctbrec.Recording.State.*; + import java.io.File; import java.io.IOException; import java.io.Serializable; @@ -272,4 +274,8 @@ public class Recording implements Serializable { public void refresh() { sizeInByte = getSize(); } + + public boolean canBePostProcessed() { + return getStatus() == FAILED || getStatus() == WAITING || getStatus() == FINISHED; + } }