diff --git a/pom.xml b/pom.xml
index 1e91303..000963b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
uk.co.caprica
vlcj
- 4.4.0
+ 4.5.1
diff --git a/src/main/java/kellerkinder/HomeFlix/player/PlayerController.java b/src/main/java/kellerkinder/HomeFlix/player/PlayerController.java
index 1cdc86e..92c506d 100644
--- a/src/main/java/kellerkinder/HomeFlix/player/PlayerController.java
+++ b/src/main/java/kellerkinder/HomeFlix/player/PlayerController.java
@@ -25,6 +25,7 @@ package kellerkinder.HomeFlix.player;
import java.nio.ByteBuffer;
import java.util.Timer;
import java.util.TimerTask;
+import java.util.concurrent.TimeUnit;
import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXSlider;
@@ -36,6 +37,7 @@ import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.Cursor;
+import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelBuffer;
@@ -45,11 +47,9 @@ import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.media.MediaView;
-
import kellerkinder.HomeFlix.controller.DBController;
import kellerkinder.HomeFlix.controller.XMLController;
import kellerkinder.HomeFlix.datatypes.FilmTabelDataType;
-
import uk.co.caprica.vlcj.factory.MediaPlayerFactory;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
@@ -65,9 +65,10 @@ public class PlayerController {
@FXML private MediaView mediaView;
@FXML private ImageView videoImageView;
- @FXML private VBox bottomVBox;
-
+ @FXML private HBox hBoxTop;
@FXML private HBox controlsHBox;
+
+ @FXML private VBox bottomVBox;
@FXML private JFXSlider timeSlider;
@@ -79,6 +80,9 @@ public class PlayerController {
@FXML private ImageView stopIcon;
@FXML private ImageView playIcon;
@FXML private ImageView fullscreenIcon;
+
+ @FXML private Label lblTitle;
+ @FXML private Label lblEndTime;
private Player player;
private MediaPlayerFactory mediaPlayerFactory;
@@ -130,11 +134,53 @@ public class PlayerController {
season = !film.getSeason().isEmpty() ? Integer.parseInt(film.getSeason()) : 0;
episode = !film.getEpisode().isEmpty() ? Integer.parseInt(film.getEpisode()) : 0;
+ lblTitle.setText(film.getTitle());
+
initPlayerWindow();
initMediaPlayer();
initSlider();
}
+ /**
+ * initialize some PlayerWindow GUI-Elements actions
+ */
+ private void initPlayerWindow() {
+
+ player.getScene().addEventFilter(MouseEvent.MOUSE_MOVED, new EventHandler() {
+
+ // hide controls timer initialization
+ final Timer timer = new Timer();
+ TimerTask controlAnimationTask = null; // task to execute save operation
+ final long delayTime = 3000; // hide the controls after 2 seconds
+
+ @Override
+ public void handle(MouseEvent mouseEvent) {
+
+ // show controls
+ if (!showControls) {
+ player.getScene().setCursor(Cursor.DEFAULT);
+ hBoxTop.setVisible(true);
+ bottomVBox.setVisible(true);
+ }
+
+ // hide controls
+ if (controlAnimationTask != null)
+ controlAnimationTask.cancel();
+
+ controlAnimationTask = new TimerTask() {
+ @Override
+ public void run() {
+ hBoxTop.setVisible(false);
+ bottomVBox.setVisible(false);
+ player.getScene().setCursor(Cursor.NONE);
+ showControls = false;
+ }
+ };
+ timer.schedule(controlAnimationTask, delayTime);
+ }
+ });
+ }
+
private void initMediaPlayer() {
embeddedMediaPlayer.events().addMediaPlayerEventListener( new HFMediaPlayerEventListener() {
@@ -188,44 +234,6 @@ public class PlayerController {
});
}
- /**
- * initialize some PlayerWindow GUI-Elements actions
- */
- private void initPlayerWindow() {
-
- player.getScene().addEventFilter(MouseEvent.MOUSE_MOVED, new EventHandler() {
-
- // hide controls timer initialization
- final Timer timer = new Timer();
- TimerTask controlAnimationTask = null; // task to execute save operation
- final long delayTime = 3000; // hide the controls after 2 seconds
-
- @Override
- public void handle(MouseEvent mouseEvent) {
-
- // show controls
- if (!showControls) {
- player.getScene().setCursor(Cursor.DEFAULT);
- bottomVBox.setVisible(true);
- }
-
- // hide controls
- if (controlAnimationTask != null)
- controlAnimationTask.cancel();
-
- controlAnimationTask = new TimerTask() {
- @Override
- public void run() {
- bottomVBox.setVisible(false);
- player.getScene().setCursor(Cursor.NONE);
- showControls = false;
- }
- };
- timer.schedule(controlAnimationTask, delayTime);
- }
- });
- }
-
public void start() {
embeddedMediaPlayer.media().play(film.getStreamUrl());
embeddedMediaPlayer.controls().skipTime((long) startTime); // skipt to the start time
@@ -247,9 +255,13 @@ public class PlayerController {
timeSlider.setValue((currentTime / 1000) / 60);
}
- // TODO update endTime label
+ // update endTime label
+ lblEndTime.setText(String.format("%d:%02d:%02d",
+ TimeUnit.MILLISECONDS.toHours(endTime) % 24,
+ TimeUnit.MILLISECONDS.toMinutes(endTime) % 60,
+ TimeUnit.MILLISECONDS.toSeconds(endTime) % 60));
- System.out.println(endTime / 1000);
+
// show the next episode button 20 seconds before the end of a episode
if (endTime < 21000 && episode != 0 && autoplay) {
int countdown = (int) ((endTime / 1000) - 10); // a 10 seconds countdown
@@ -300,10 +312,10 @@ public class PlayerController {
@FXML
void nextEpBtnAction(ActionEvent event) {
- autoPlayNewFilm(); // TODO
+ playNextMedia(); // TODO
}
- private void autoPlayNewFilm() {
+ private void playNextMedia() {
autoplay = false;
DBController.getInstance().setCurrentTime(film.getStreamUrl(), 0); // reset old video start time
FilmTabelDataType nextFilm = DBController.getInstance().getNextEpisode(film.getTitle(), episode, season);
diff --git a/src/main/resources/fxml/PlayerWindow.fxml b/src/main/resources/fxml/PlayerWindow.fxml
index 2e89abe..662d461 100644
--- a/src/main/resources/fxml/PlayerWindow.fxml
+++ b/src/main/resources/fxml/PlayerWindow.fxml
@@ -3,6 +3,7 @@
+
@@ -19,13 +20,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+