forked from j62/ctbrec
Code cleanup
This commit is contained in:
parent
0d0311fbfc
commit
bcf4ab1d47
|
@ -44,28 +44,28 @@ public class SetStopDateAction {
|
||||||
|
|
||||||
public CompletableFuture<Boolean> execute() {
|
public CompletableFuture<Boolean> execute() {
|
||||||
source.setCursor(Cursor.WAIT);
|
source.setCursor(Cursor.WAIT);
|
||||||
DatePicker datePicker = new DatePicker();
|
var datePicker = new DatePicker();
|
||||||
GridPane gridPane = new GridPane();
|
var gridPane = new GridPane();
|
||||||
gridPane.setHgap(10);
|
gridPane.setHgap(10);
|
||||||
gridPane.setVgap(10);
|
gridPane.setVgap(10);
|
||||||
gridPane.setPadding(new Insets(20, 150, 10, 10));
|
gridPane.setPadding(new Insets(20, 150, 10, 10));
|
||||||
gridPane.add(new Label("Stop at"), 0, 0);
|
gridPane.add(new Label("Stop at"), 0, 0);
|
||||||
gridPane.add(datePicker, 1, 0);
|
gridPane.add(datePicker, 1, 0);
|
||||||
gridPane.add(new Label("And then"), 0, 1);
|
gridPane.add(new Label("And then"), 0, 1);
|
||||||
ToggleGroup toggleGroup = new ToggleGroup();
|
var toggleGroup = new ToggleGroup();
|
||||||
RadioButton pauseButton = new RadioButton("pause recording");
|
var pauseButton = new RadioButton("pause recording");
|
||||||
pauseButton.setSelected(model.getRecordUntilSubsequentAction() == PAUSE);
|
pauseButton.setSelected(model.getRecordUntilSubsequentAction() == PAUSE);
|
||||||
pauseButton.setToggleGroup(toggleGroup);
|
pauseButton.setToggleGroup(toggleGroup);
|
||||||
RadioButton removeButton = new RadioButton("remove model");
|
var removeButton = new RadioButton("remove model");
|
||||||
removeButton.setSelected(model.getRecordUntilSubsequentAction() == REMOVE);
|
removeButton.setSelected(model.getRecordUntilSubsequentAction() == REMOVE);
|
||||||
removeButton.setToggleGroup(toggleGroup);
|
removeButton.setToggleGroup(toggleGroup);
|
||||||
HBox row = new HBox();
|
var row = new HBox();
|
||||||
row.getChildren().addAll(pauseButton, removeButton);
|
row.getChildren().addAll(pauseButton, removeButton);
|
||||||
HBox.setMargin(pauseButton, new Insets(5));
|
HBox.setMargin(pauseButton, new Insets(5));
|
||||||
HBox.setMargin(removeButton, new Insets(5));
|
HBox.setMargin(removeButton, new Insets(5));
|
||||||
gridPane.add(row, 1, 1);
|
gridPane.add(row, 1, 1);
|
||||||
if (model.isRecordingTimeLimited()) {
|
if (model.isRecordingTimeLimited()) {
|
||||||
LocalDate localDate = LocalDate.ofInstant(model.getRecordUntil(), ZoneId.systemDefault());
|
var localDate = LocalDate.ofInstant(model.getRecordUntil(), ZoneId.systemDefault());
|
||||||
datePicker.setValue(localDate);
|
datePicker.setValue(localDate);
|
||||||
}
|
}
|
||||||
boolean userClickedOk = Dialogs.showCustomInput(source.getScene(), "Stop Recording at", gridPane);
|
boolean userClickedOk = Dialogs.showCustomInput(source.getScene(), "Stop Recording at", gridPane);
|
||||||
|
@ -73,7 +73,7 @@ public class SetStopDateAction {
|
||||||
if (userClickedOk) {
|
if (userClickedOk) {
|
||||||
SubsequentAction action = pauseButton.isSelected() ? PAUSE : REMOVE;
|
SubsequentAction action = pauseButton.isSelected() ? PAUSE : REMOVE;
|
||||||
LOG.info("Stop at {} and {}", datePicker.getValue(), action);
|
LOG.info("Stop at {} and {}", datePicker.getValue(), action);
|
||||||
Instant stopAt = Instant.from(datePicker.getValue().atStartOfDay().atZone(ZoneId.systemDefault()));
|
var stopAt = Instant.from(datePicker.getValue().atStartOfDay().atZone(ZoneId.systemDefault()));
|
||||||
model.setRecordUntil(stopAt);
|
model.setRecordUntil(stopAt);
|
||||||
model.setRecordUntilSubsequentAction(action);
|
model.setRecordUntilSubsequentAction(action);
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -143,7 +143,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
TableColumn<JavaFxRecording, Instant> date = new TableColumn<>("Date");
|
TableColumn<JavaFxRecording, Instant> date = new TableColumn<>("Date");
|
||||||
date.setId("date");
|
date.setId("date");
|
||||||
date.setCellValueFactory(cdf -> {
|
date.setCellValueFactory(cdf -> {
|
||||||
Instant instant = cdf.getValue().getStartDate();
|
var instant = cdf.getValue().getStartDate();
|
||||||
return new SimpleObjectProperty<>(instant);
|
return new SimpleObjectProperty<>(instant);
|
||||||
});
|
});
|
||||||
date.setCellFactory(new DateTimeCellFactory<>());
|
date.setCellFactory(new DateTimeCellFactory<>());
|
||||||
|
@ -175,15 +175,15 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
table.addEventFilter(KeyEvent.KEY_PRESSED, this::onKeyPressed);
|
table.addEventFilter(KeyEvent.KEY_PRESSED, this::onKeyPressed);
|
||||||
scrollPane.setContent(table);
|
scrollPane.setContent(table);
|
||||||
|
|
||||||
HBox spaceBox = new HBox(5);
|
var spaceBox = new HBox(5);
|
||||||
Label spaceLeftLabel = new Label("Space left on device");
|
var spaceLeftLabel = new Label("Space left on device");
|
||||||
spaceBox.getChildren().add(spaceLeftLabel);
|
spaceBox.getChildren().add(spaceLeftLabel);
|
||||||
spaceLeft = new ProgressBar(0);
|
spaceLeft = new ProgressBar(0);
|
||||||
spaceLeft.setPrefSize(200, 22);
|
spaceLeft.setPrefSize(200, 22);
|
||||||
spaceFreeLabel = new Label();
|
spaceFreeLabel = new Label();
|
||||||
spaceFreeLabel.setFont(Font.font(11));
|
spaceFreeLabel.setFont(Font.font(11));
|
||||||
StackPane stack = new StackPane(spaceLeft, spaceFreeLabel);
|
var stack = new StackPane(spaceLeft, spaceFreeLabel);
|
||||||
Label spaceUsedLabel = new Label("Space used:");
|
var spaceUsedLabel = new Label("Space used:");
|
||||||
spaceUsedValue = new Label();
|
spaceUsedValue = new Label();
|
||||||
spaceBox.getChildren().addAll(stack, spaceUsedLabel, spaceUsedValue);
|
spaceBox.getChildren().addAll(stack, spaceUsedLabel, spaceUsedValue);
|
||||||
HBox.setMargin(spaceLeftLabel, new Insets(2, 0, 0, 0));
|
HBox.setMargin(spaceLeftLabel, new Insets(2, 0, 0, 0));
|
||||||
|
@ -191,7 +191,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
HBox.setMargin(spaceUsedValue, new Insets(2, 0, 0, 0));
|
HBox.setMargin(spaceUsedValue, new Insets(2, 0, 0, 0));
|
||||||
BorderPane.setMargin(spaceBox, new Insets(5));
|
BorderPane.setMargin(spaceBox, new Insets(5));
|
||||||
|
|
||||||
BorderPane root = new BorderPane();
|
var root = new BorderPane();
|
||||||
root.setPadding(new Insets(5));
|
root.setPadding(new Insets(5));
|
||||||
root.setTop(spaceBox);
|
root.setTop(spaceBox);
|
||||||
root.setCenter(scrollPane);
|
root.setCenter(scrollPane);
|
||||||
|
@ -247,7 +247,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
|
if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
|
||||||
Recording recording = table.getSelectionModel().getSelectedItem();
|
Recording recording = table.getSelectionModel().getSelectedItem();
|
||||||
if (recording != null) {
|
if (recording != null) {
|
||||||
State state = recording.getStatus();
|
var state = recording.getStatus();
|
||||||
if(state == FINISHED || state == RECORDING && config.getSettings().localRecording) {
|
if(state == FINISHED || state == RECORDING && config.getSettings().localRecording) {
|
||||||
play(recording);
|
play(recording);
|
||||||
}
|
}
|
||||||
|
@ -281,7 +281,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
});
|
});
|
||||||
updateService.setOnFailed(event -> {
|
updateService.setOnFailed(event -> {
|
||||||
LOG.info("Couldn't get list of recordings from recorder", event.getSource().getException());
|
LOG.info("Couldn't get list of recordings from recorder", event.getSource().getException());
|
||||||
AutosizeAlert autosizeAlert = new AutosizeAlert(AlertType.ERROR, getTabPane().getScene());
|
var autosizeAlert = new AutosizeAlert(AlertType.ERROR, getTabPane().getScene());
|
||||||
autosizeAlert.setTitle("Whoopsie!");
|
autosizeAlert.setTitle("Whoopsie!");
|
||||||
autosizeAlert.setHeaderText("Recordings not available");
|
autosizeAlert.setHeaderText("Recordings not available");
|
||||||
autosizeAlert.setContentText("An error occurred while retrieving the list of recordings");
|
autosizeAlert.setContentText("An error occurred while retrieving the list of recordings");
|
||||||
|
@ -300,7 +300,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
spaceLeft.setProgress(free);
|
spaceLeft.setProgress(free);
|
||||||
double totalGiB = ((double) spaceTotal) / 1024 / 1024 / 1024;
|
double totalGiB = ((double) spaceTotal) / 1024 / 1024 / 1024;
|
||||||
double freeGiB = ((double) spaceFree) / 1024 / 1024 / 1024;
|
double freeGiB = ((double) spaceFree) / 1024 / 1024 / 1024;
|
||||||
DecimalFormat df = new DecimalFormat("0.00");
|
var df = new DecimalFormat("0.00");
|
||||||
String tt = df.format(freeGiB) + " / " + df.format(totalGiB) + " GiB";
|
String tt = df.format(freeGiB) + " / " + df.format(totalGiB) + " GiB";
|
||||||
spaceLeft.setTooltip(new Tooltip(tt));
|
spaceLeft.setTooltip(new Tooltip(tt));
|
||||||
spaceFreeLabel.setText(tt);
|
spaceFreeLabel.setText(tt);
|
||||||
|
@ -367,7 +367,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ExecutorService executor = Executors.newSingleThreadExecutor(r -> {
|
ExecutorService executor = Executors.newSingleThreadExecutor(r -> {
|
||||||
Thread t = new Thread(r);
|
var t = new Thread(r);
|
||||||
t.setDaemon(true);
|
t.setDaemon(true);
|
||||||
t.setName("RecordingsTab UpdateService");
|
t.setName("RecordingsTab UpdateService");
|
||||||
return t;
|
return t;
|
||||||
|
@ -398,7 +398,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
contextMenu.setAutoFix(true);
|
contextMenu.setAutoFix(true);
|
||||||
|
|
||||||
JavaFxRecording first = recordings.get(0);
|
JavaFxRecording first = recordings.get(0);
|
||||||
MenuItem openInPlayer = new MenuItem("Open in Player");
|
var openInPlayer = new MenuItem("Open in Player");
|
||||||
openInPlayer.setOnAction(e -> play(first));
|
openInPlayer.setOnAction(e -> play(first));
|
||||||
if (first.getStatus() == FINISHED || Config.getInstance().getSettings().localRecording) {
|
if (first.getStatus() == FINISHED || Config.getInstance().getSettings().localRecording) {
|
||||||
contextMenu.getItems().add(openInPlayer);
|
contextMenu.getItems().add(openInPlayer);
|
||||||
|
@ -408,62 +408,62 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
contextMenu.getItems().add(openInPlayer);
|
contextMenu.getItems().add(openInPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem openContactSheet = new MenuItem("Open contact sheet");
|
var openContactSheet = new MenuItem("Open contact sheet");
|
||||||
openContactSheet.setOnAction(e -> openContactSheet(first));
|
openContactSheet.setOnAction(e -> openContactSheet(first));
|
||||||
openContactSheet.setDisable(first.getContactSheet().isEmpty());
|
openContactSheet.setDisable(first.getContactSheet().isEmpty());
|
||||||
contextMenu.getItems().add(openContactSheet);
|
contextMenu.getItems().add(openContactSheet);
|
||||||
|
|
||||||
MenuItem stopRecording = new MenuItem("Stop Recording");
|
var stopRecording = new MenuItem("Stop Recording");
|
||||||
stopRecording.setOnAction(e -> stopRecording(recordings.stream().map(JavaFxRecording::getModel).collect(Collectors.toList())));
|
stopRecording.setOnAction(e -> stopRecording(recordings.stream().map(JavaFxRecording::getModel).collect(Collectors.toList())));
|
||||||
if (recordings.stream().anyMatch(r -> r.getStatus() == RECORDING)) {
|
if (recordings.stream().anyMatch(r -> r.getStatus() == RECORDING)) {
|
||||||
contextMenu.getItems().add(stopRecording);
|
contextMenu.getItems().add(stopRecording);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem pauseRecording = new MenuItem("Pause Recording");
|
var pauseRecording = new MenuItem("Pause Recording");
|
||||||
pauseRecording.setOnAction(e -> pauseRecording(recordings.stream().map(JavaFxRecording::getModel).collect(Collectors.toList())));
|
pauseRecording.setOnAction(e -> pauseRecording(recordings.stream().map(JavaFxRecording::getModel).collect(Collectors.toList())));
|
||||||
if (recordings.stream().anyMatch(r -> r.getStatus() == RECORDING)) {
|
if (recordings.stream().anyMatch(r -> r.getStatus() == RECORDING)) {
|
||||||
contextMenu.getItems().add(pauseRecording);
|
contextMenu.getItems().add(pauseRecording);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem deleteRecording = new MenuItem("Delete");
|
var deleteRecording = new MenuItem("Delete");
|
||||||
deleteRecording.setOnAction(e -> delete(recordings));
|
deleteRecording.setOnAction(e -> delete(recordings));
|
||||||
if (first.getStatus() == FINISHED || first.getStatus() == WAITING || first.getStatus() == FAILED || recordings.size() > 1) {
|
if (first.getStatus() == FINISHED || first.getStatus() == WAITING || first.getStatus() == FAILED || recordings.size() > 1) {
|
||||||
contextMenu.getItems().add(deleteRecording);
|
contextMenu.getItems().add(deleteRecording);
|
||||||
deleteRecording.setDisable(recordings.stream().allMatch(Recording::isPinned));
|
deleteRecording.setDisable(recordings.stream().allMatch(Recording::isPinned));
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem followModels = new MenuItem("Follow Model");
|
var followModels = new MenuItem("Follow Model");
|
||||||
followModels.setOnAction(e -> follow(recordings.stream().map(JavaFxRecording::getModel).collect(Collectors.toList())));
|
followModels.setOnAction(e -> follow(recordings.stream().map(JavaFxRecording::getModel).collect(Collectors.toList())));
|
||||||
followModels.setDisable(!recordings.stream().map(JavaFxRecording::getModel).allMatch(m -> m.getSite().supportsFollow() && m.getSite().credentialsAvailable()));
|
followModels.setDisable(!recordings.stream().map(JavaFxRecording::getModel).allMatch(m -> m.getSite().supportsFollow() && m.getSite().credentialsAvailable()));
|
||||||
contextMenu.getItems().add(followModels);
|
contextMenu.getItems().add(followModels);
|
||||||
|
|
||||||
MenuItem openDir = new MenuItem("Open directory");
|
var openDir = new MenuItem("Open directory");
|
||||||
openDir.setOnAction(e -> onOpenDirectory(first));
|
openDir.setOnAction(e -> onOpenDirectory(first));
|
||||||
if (Config.getInstance().getSettings().localRecording) {
|
if (Config.getInstance().getSettings().localRecording) {
|
||||||
contextMenu.getItems().add(openDir);
|
contextMenu.getItems().add(openDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem downloadRecording = new MenuItem("Download");
|
var downloadRecording = new MenuItem("Download");
|
||||||
downloadRecording.setOnAction(e -> download(first));
|
downloadRecording.setOnAction(e -> download(first));
|
||||||
if (!Config.getInstance().getSettings().localRecording && first.getStatus() == FINISHED) {
|
if (!Config.getInstance().getSettings().localRecording && first.getStatus() == FINISHED) {
|
||||||
contextMenu.getItems().add(downloadRecording);
|
contextMenu.getItems().add(downloadRecording);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem notes = new MenuItem("Notes");
|
var notes = new MenuItem("Notes");
|
||||||
notes.setOnAction(e -> notes(first));
|
notes.setOnAction(e -> notes(first));
|
||||||
contextMenu.getItems().add(notes);
|
contextMenu.getItems().add(notes);
|
||||||
|
|
||||||
if (first.isPinned()) {
|
if (first.isPinned()) {
|
||||||
MenuItem unpinRecording = new MenuItem("Unpin");
|
var unpinRecording = new MenuItem("Unpin");
|
||||||
unpinRecording.setOnAction(e -> unpin(recordings));
|
unpinRecording.setOnAction(e -> unpin(recordings));
|
||||||
contextMenu.getItems().add(unpinRecording);
|
contextMenu.getItems().add(unpinRecording);
|
||||||
} else {
|
} else {
|
||||||
MenuItem pinRecording = new MenuItem("Pin");
|
var pinRecording = new MenuItem("Pin");
|
||||||
pinRecording.setOnAction(e -> pin(recordings));
|
pinRecording.setOnAction(e -> pin(recordings));
|
||||||
contextMenu.getItems().add(pinRecording);
|
contextMenu.getItems().add(pinRecording);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuItem rerunPostProcessing = new MenuItem("Rerun Post-Processing");
|
var rerunPostProcessing = new MenuItem("Rerun Post-Processing");
|
||||||
rerunPostProcessing.setOnAction(e -> triggerPostProcessing(recordings));
|
rerunPostProcessing.setOnAction(e -> triggerPostProcessing(recordings));
|
||||||
contextMenu.getItems().add(rerunPostProcessing);
|
contextMenu.getItems().add(rerunPostProcessing);
|
||||||
rerunPostProcessing.setDisable(!recordings.stream().allMatch(Recording::canBePostProcessed));
|
rerunPostProcessing.setDisable(!recordings.stream().allMatch(Recording::canBePostProcessed));
|
||||||
|
@ -481,7 +481,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stopRecording(List<Model> selectedModels) {
|
private void stopRecording(List<Model> selectedModels) {
|
||||||
boolean confirmed = true;
|
var confirmed = true;
|
||||||
if (Config.getInstance().getSettings().confirmationForDangerousActions) {
|
if (Config.getInstance().getSettings().confirmationForDangerousActions) {
|
||||||
int n = selectedModels.size();
|
int n = selectedModels.size();
|
||||||
String plural = n > 1 ? "s" : "";
|
String plural = n > 1 ? "s" : "";
|
||||||
|
@ -506,7 +506,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
try {
|
try {
|
||||||
target = File.createTempFile("cs_", ".jpg");
|
target = File.createTempFile("cs_", ".jpg");
|
||||||
target.deleteOnExit();
|
target.deleteOnExit();
|
||||||
FileDownload download = new FileDownload(CamrecApplication.httpClient, p -> {
|
var download = new FileDownload(CamrecApplication.httpClient, p -> {
|
||||||
if (p == 100) {
|
if (p == 100) {
|
||||||
DesktopIntegration.open(target);
|
DesktopIntegration.open(target);
|
||||||
}
|
}
|
||||||
|
@ -554,7 +554,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
List<Exception> exceptions = new ArrayList<>();
|
List<Exception> exceptions = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
for (JavaFxRecording javaFxRecording : recordings) {
|
for (JavaFxRecording javaFxRecording : recordings) {
|
||||||
Recording rec = javaFxRecording.getDelegate();
|
var rec = javaFxRecording.getDelegate();
|
||||||
try {
|
try {
|
||||||
recorder.pin(rec);
|
recorder.pin(rec);
|
||||||
javaFxRecording.setPinned(true);
|
javaFxRecording.setPinned(true);
|
||||||
|
@ -579,7 +579,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
List<Exception> exceptions = new ArrayList<>();
|
List<Exception> exceptions = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
for (JavaFxRecording javaFxRecording : recordings) {
|
for (JavaFxRecording javaFxRecording : recordings) {
|
||||||
Recording rec = javaFxRecording.getDelegate();
|
var rec = javaFxRecording.getDelegate();
|
||||||
try {
|
try {
|
||||||
recorder.unpin(rec);
|
recorder.unpin(rec);
|
||||||
javaFxRecording.setPinned(false);
|
javaFxRecording.setPinned(false);
|
||||||
|
@ -604,7 +604,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
ensureKeyCodeIsLetterOrDigit(code);
|
ensureKeyCodeIsLetterOrDigit(code);
|
||||||
|
|
||||||
// determine where to start looking for the next model
|
// determine where to start looking for the next model
|
||||||
int startAt = 0;
|
var startAt = 0;
|
||||||
if (table.getSelectionModel().getSelectedIndex() >= 0) {
|
if (table.getSelectionModel().getSelectedIndex() >= 0) {
|
||||||
startAt = table.getSelectionModel().getSelectedIndex() + 1;
|
startAt = table.getSelectionModel().getSelectedIndex() + 1;
|
||||||
if (startAt >= table.getItems().size()) {
|
if (startAt >= table.getItems().size()) {
|
||||||
|
@ -645,7 +645,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onOpenDirectory(JavaFxRecording first) {
|
private void onOpenDirectory(JavaFxRecording first) {
|
||||||
File tsFile = first.getAbsoluteFile();
|
var tsFile = first.getAbsoluteFile();
|
||||||
GlobalThreadPool.submit(() -> DesktopIntegration.open(tsFile.getParent()));
|
GlobalThreadPool.submit(() -> DesktopIntegration.open(tsFile.getParent()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -665,10 +665,10 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
private void download(Recording recording) {
|
private void download(Recording recording) {
|
||||||
LOG.debug("Path {}", recording.getAbsoluteFile());
|
LOG.debug("Path {}", recording.getAbsoluteFile());
|
||||||
String filename = proposeTargetFilename(recording);
|
String filename = proposeTargetFilename(recording);
|
||||||
FileChooser chooser = new FileChooser();
|
var chooser = new FileChooser();
|
||||||
chooser.setInitialFileName(filename);
|
chooser.setInitialFileName(filename);
|
||||||
if (config.getSettings().lastDownloadDir != null && !config.getSettings().lastDownloadDir.equals("")) {
|
if (config.getSettings().lastDownloadDir != null && !config.getSettings().lastDownloadDir.equals("")) {
|
||||||
File dir = new File(config.getSettings().lastDownloadDir);
|
var dir = new File(config.getSettings().lastDownloadDir);
|
||||||
while (!dir.exists()) {
|
while (!dir.exists()) {
|
||||||
dir = dir.getParentFile();
|
dir = dir.getParentFile();
|
||||||
}
|
}
|
||||||
|
@ -689,7 +689,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
} else {
|
} else {
|
||||||
String downloadFilename = config.getSettings().downloadFilename;
|
String downloadFilename = config.getSettings().downloadFilename;
|
||||||
String fileSuffix = config.getSettings().ffmpegFileSuffix;
|
String fileSuffix = config.getSettings().ffmpegFileSuffix;
|
||||||
PostProcessingContext ctx = new PostProcessingContext();
|
var ctx = new PostProcessingContext();
|
||||||
ctx.setRecording(recording);
|
ctx.setRecording(recording);
|
||||||
ctx.setConfig(config);
|
ctx.setConfig(config);
|
||||||
return new DownloadPostprocessor().fillInPlaceHolders(downloadFilename, ctx) + '.' + fileSuffix;
|
return new DownloadPostprocessor().fillInPlaceHolders(downloadFilename, ctx) + '.' + fileSuffix;
|
||||||
|
@ -697,16 +697,16 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startDownloadThread(File target, Recording recording) {
|
private void startDownloadThread(File target, Recording recording) {
|
||||||
Thread t = new Thread(() -> {
|
var t = new Thread(() -> {
|
||||||
try {
|
try {
|
||||||
String hlsBase = config.getServerUrl() + "/hls";
|
String hlsBase = config.getServerUrl() + "/hls";
|
||||||
if (recording.isSingleFile()) {
|
if (recording.isSingleFile()) {
|
||||||
URL url = new URL(hlsBase + '/' + recording.getId());
|
var url = new URL(hlsBase + '/' + recording.getId());
|
||||||
FileDownload download = new FileDownload(CamrecApplication.httpClient, createDownloadListener(recording));
|
var download = new FileDownload(CamrecApplication.httpClient, createDownloadListener(recording));
|
||||||
download.start(url, target);
|
download.start(url, target);
|
||||||
} else {
|
} else {
|
||||||
URL url = new URL(hlsBase + '/' + recording.getId() + "/playlist.m3u8");
|
var url = new URL(hlsBase + '/' + recording.getId() + "/playlist.m3u8");
|
||||||
RecordingDownload download = new RecordingDownload(CamrecApplication.httpClient);
|
var download = new RecordingDownload(CamrecApplication.httpClient);
|
||||||
download.init(config, recording.getModel(), Instant.now(), Executors.newSingleThreadExecutor());
|
download.init(config, recording.getModel(), Instant.now(), Executors.newSingleThreadExecutor());
|
||||||
LOG.info("Downloading {}", url);
|
LOG.info("Downloading {}", url);
|
||||||
download.downloadFinishedRecording(url.toString(), target, createDownloadListener(recording), recording.getSizeInByte());
|
download.downloadFinishedRecording(url.toString(), target, createDownloadListener(recording), recording.getSizeInByte());
|
||||||
|
@ -714,6 +714,10 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
showErrorDialog(ERROR_WHILE_DOWNLOADING_RECORDING, "The target file couldn't be created", e);
|
showErrorDialog(ERROR_WHILE_DOWNLOADING_RECORDING, "The target file couldn't be created", e);
|
||||||
LOG.error(ERROR_WHILE_DOWNLOADING_RECORDING, e);
|
LOG.error(ERROR_WHILE_DOWNLOADING_RECORDING, e);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
showErrorDialog(ERROR_WHILE_DOWNLOADING_RECORDING, "The recording could not be downloaded", e);
|
||||||
|
LOG.error(ERROR_WHILE_DOWNLOADING_RECORDING, e);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
showErrorDialog(ERROR_WHILE_DOWNLOADING_RECORDING, "The recording could not be downloaded", e);
|
showErrorDialog(ERROR_WHILE_DOWNLOADING_RECORDING, "The recording could not be downloaded", e);
|
||||||
LOG.error(ERROR_WHILE_DOWNLOADING_RECORDING, e);
|
LOG.error(ERROR_WHILE_DOWNLOADING_RECORDING, e);
|
||||||
|
@ -721,8 +725,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
recording.setStatus(FINISHED);
|
recording.setStatus(FINISHED);
|
||||||
recording.setProgress(-1);
|
recording.setProgress(-1);
|
||||||
RecordingStateChangedEvent evt = new RecordingStateChangedEvent(target, recording.getStatus(), recording.getModel(),
|
var evt = new RecordingStateChangedEvent(target, recording.getStatus(), recording.getModel(), recording.getStartDate());
|
||||||
recording.getStartDate());
|
|
||||||
EventBusHolder.BUS.post(evt);
|
EventBusHolder.BUS.post(evt);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -751,10 +754,10 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
|
|
||||||
private void showErrorDialog(final String title, final String msg, final List<Exception> exceptions) {
|
private void showErrorDialog(final String title, final String msg, final List<Exception> exceptions) {
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
AutosizeAlert autosizeAlert = new AutosizeAlert(AlertType.ERROR, getTabPane().getScene());
|
var autosizeAlert = new AutosizeAlert(AlertType.ERROR, getTabPane().getScene());
|
||||||
autosizeAlert.setTitle(title);
|
autosizeAlert.setTitle(title);
|
||||||
autosizeAlert.setHeaderText(msg);
|
autosizeAlert.setHeaderText(msg);
|
||||||
StringBuilder contentText = new StringBuilder("On or more error(s) occurred:");
|
var contentText = new StringBuilder("On or more error(s) occurred:");
|
||||||
for (Exception exception : exceptions) {
|
for (Exception exception : exceptions) {
|
||||||
contentText.append("\n• ").append(exception.getLocalizedMessage());
|
contentText.append("\n• ").append(exception.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
|
@ -785,7 +788,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
Recording r = recordings.get(0);
|
Recording r = recordings.get(0);
|
||||||
msg = "Delete " + r.getModel().getName() + "/" + r.getStartDate() + " for good?";
|
msg = "Delete " + r.getModel().getName() + "/" + r.getStartDate() + " for good?";
|
||||||
}
|
}
|
||||||
AutosizeAlert confirm = new AutosizeAlert(AlertType.CONFIRMATION, msg, getTabPane().getScene(), YES, NO);
|
var confirm = new AutosizeAlert(AlertType.CONFIRMATION, msg, getTabPane().getScene(), YES, NO);
|
||||||
confirm.setTitle("Delete recording?");
|
confirm.setTitle("Delete recording?");
|
||||||
confirm.setHeaderText(msg);
|
confirm.setHeaderText(msg);
|
||||||
confirm.setContentText("");
|
confirm.setContentText("");
|
||||||
|
@ -834,9 +837,9 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
Config.getInstance().getSettings().recordingsSortType = col.getSortType().toString();
|
Config.getInstance().getSettings().recordingsSortType = col.getSortType().toString();
|
||||||
}
|
}
|
||||||
int columns = table.getColumns().size();
|
int columns = table.getColumns().size();
|
||||||
double[] columnWidths = new double[columns];
|
var columnWidths = new double[columns];
|
||||||
String[] columnIds = new String[columns];
|
var columnIds = new String[columns];
|
||||||
for (int i = 0; i < columnWidths.length; i++) {
|
for (var i = 0; i < columnWidths.length; i++) {
|
||||||
columnWidths[i] = table.getColumns().get(i).getWidth();
|
columnWidths[i] = table.getColumns().get(i).getWidth();
|
||||||
columnIds[i] = table.getColumns().get(i).getId();
|
columnIds[i] = table.getColumns().get(i).getId();
|
||||||
}
|
}
|
||||||
|
@ -867,8 +870,8 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
private void restoreColumnOrder() {
|
private void restoreColumnOrder() {
|
||||||
String[] columnIds = Config.getInstance().getSettings().recordingsColumnIds;
|
String[] columnIds = Config.getInstance().getSettings().recordingsColumnIds;
|
||||||
ObservableList<TableColumn<JavaFxRecording, ?>> columns = table.getColumns();
|
ObservableList<TableColumn<JavaFxRecording, ?>> columns = table.getColumns();
|
||||||
for (int i = 0; i < columnIds.length; i++) {
|
for (var i = 0; i < columnIds.length; i++) {
|
||||||
for (int j = 0; j < table.getColumns().size(); j++) {
|
for (var j = 0; j < table.getColumns().size(); j++) {
|
||||||
if (Objects.equals(columnIds[i], columns.get(j).getId())) {
|
if (Objects.equals(columnIds[i], columns.get(j).getId())) {
|
||||||
TableColumn<JavaFxRecording, ?> col = columns.get(j);
|
TableColumn<JavaFxRecording, ?> col = columns.get(j);
|
||||||
columns.remove(j); // NOSONAR
|
columns.remove(j); // NOSONAR
|
||||||
|
@ -881,7 +884,7 @@ public class RecordingsTab extends Tab implements TabSelectionListener, Shutdown
|
||||||
private void restoreColumnWidths() {
|
private void restoreColumnWidths() {
|
||||||
double[] columnWidths = Config.getInstance().getSettings().recordingsColumnWidths;
|
double[] columnWidths = Config.getInstance().getSettings().recordingsColumnWidths;
|
||||||
if (columnWidths != null && columnWidths.length == table.getColumns().size()) {
|
if (columnWidths != null && columnWidths.length == table.getColumns().size()) {
|
||||||
for (int i = 0; i < columnWidths.length; i++) {
|
for (var i = 0; i < columnWidths.length; i++) {
|
||||||
table.getColumns().get(i).setPrefWidth(columnWidths[i]);
|
table.getColumns().get(i).setPrefWidth(columnWidths[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue