Disallow playback of running remote recordings
Instead allow to open the live stream
This commit is contained in:
parent
672d2a77d4
commit
ae8e4acf7a
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue