forked from j62/ctbrec
1
0
Fork 0

Disallow playback of running remote recordings

Instead allow to open the live stream
This commit is contained in:
0xb00bface 2020-12-19 20:29:50 +01:00
parent 672d2a77d4
commit ae8e4acf7a
2 changed files with 68 additions and 27 deletions

View File

@ -1,3 +1,8 @@
3.10.10
========================
* Fix: "Check URLs" button stays inactive
* Fix: recordings for some Cam4 models still didn't start
3.10.9
========================
* Added more category tabs for CamSoda

View File

@ -1,5 +1,32 @@
package ctbrec.ui.tabs;
import static ctbrec.Recording.State.*;
import static javafx.scene.control.ButtonType.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.nio.file.NoSuchFileException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ctbrec.Config;
import ctbrec.Model;
import ctbrec.Recording;
@ -12,9 +39,15 @@ import ctbrec.recorder.ProgressListener;
import ctbrec.recorder.Recorder;
import ctbrec.recorder.RecordingPinnedException;
import ctbrec.recorder.download.hls.MergedFfmpegHlsDownload;
import ctbrec.ui.*;
import ctbrec.ui.AutosizeAlert;
import ctbrec.ui.CamrecApplication;
import ctbrec.ui.DesktopIntegration;
import ctbrec.ui.FileDownload;
import ctbrec.ui.JavaFxRecording;
import ctbrec.ui.Player;
import ctbrec.ui.action.FollowAction;
import ctbrec.ui.action.PauseAction;
import ctbrec.ui.action.PlayAction;
import ctbrec.ui.action.StopRecordingAction;
import ctbrec.ui.controls.DateTimeCellFactory;
import ctbrec.ui.controls.Dialogs;
@ -30,9 +63,24 @@ import javafx.geometry.Insets;
import javafx.scene.Cursor;
import javafx.scene.Node;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.*;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.Tab;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.SortType;
import javafx.scene.input.*;
import javafx.scene.control.TableView;
import javafx.scene.control.Tooltip;
import javafx.scene.input.ContextMenuEvent;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox;
@ -40,29 +88,6 @@ import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.stage.FileChooser;
import javafx.util.Duration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.nio.file.NoSuchFileException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.time.Instant;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
import static ctbrec.Recording.State.*;
import static javafx.scene.control.ButtonType.NO;
import static javafx.scene.control.ButtonType.YES;
public class RecordingsTab extends Tab implements TabSelectionListener {
private static final String ERROR_WHILE_DOWNLOADING_RECORDING = "Error while downloading recording";
@ -213,7 +238,10 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
Recording recording = table.getSelectionModel().getSelectedItem();
if (recording != null) {
play(recording);
State state = recording.getStatus();
if(state == FINISHED || state == RECORDING && config.getSettings().localRecording) {
play(recording);
}
}
}
}
@ -359,6 +387,10 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
openInPlayer.setOnAction(e -> play(first));
if (first.getStatus() == FINISHED || Config.getInstance().getSettings().localRecording) {
contextMenu.getItems().add(openInPlayer);
} else if (first.getStatus() == RECORDING && !Config.getInstance().getSettings().localRecording) {
openInPlayer.setText("Open live stream");
openInPlayer.setOnAction(e -> play(first.getModel()));
contextMenu.getItems().add(openInPlayer);
}
MenuItem openContactSheet = new MenuItem("Open contact sheet");
@ -716,6 +748,10 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
}).start();
}
private void play(Model model) {
new PlayAction(table, model).execute();
}
private void delete(List<JavaFxRecording> recordings) {
table.setCursor(Cursor.WAIT);
String msg;