Browse Source

added FilmDetailView

* implemented the PosterMode basics
* added some new 48dp icons
pull/12/head
Jannik 3 years ago
parent
commit
656c22d48a
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
  1. 169
      src/main/java/kellerkinder/HomeFlix/application/FilmDetailView.java
  2. 66
      src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java
  3. 44
      src/main/java/kellerkinder/HomeFlix/controller/DBController.java
  4. 175
      src/main/resources/fxml/FilmDetailView.fxml
  5. BIN
      src/main/resources/icons/baseline_favorite_black_48dp.png
  6. BIN
      src/main/resources/icons/baseline_favorite_border_black_48dp.png
  7. BIN
      src/main/resources/icons/baseline_folder_black_48dp.png
  8. BIN
      src/main/resources/icons/baseline_keyboard_arrow_down_black_48dp.png
  9. BIN
      src/main/resources/icons/baseline_keyboard_arrow_down_white_48dp.png
  10. BIN
      src/main/resources/icons/baseline_list_black_48dp.png
  11. BIN
      src/main/resources/icons/baseline_play_arrow_black_48dp.png
  12. 8
      src/main/resources/locals/HomeFlix-Local_de_DE.properties
  13. 10
      src/main/resources/locals/HomeFlix-Local_en_US.properties

169
src/main/java/kellerkinder/HomeFlix/application/FilmDetailView.java

@ -1,43 +1,198 @@
package kellerkinder.HomeFlix.application;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.jfoenix.controls.JFXButton;
import javafx.animation.FadeTransition;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Text;
import javafx.util.Duration;
import kellerkinder.HomeFlix.controller.DBController;
import kellerkinder.HomeFlix.controller.XMLController;
public class FilmDetailView {
@FXML private AnchorPane filmDVPane;
@FXML private Label lblTitle;
@FXML private Label lblYear;
@FXML private Label lblScore;
@FXML private JFXButton btnWhishlist;
@FXML private Label lblCrew;
@FXML private Label lblDirectors;
@FXML private Label lblDirectorsInfo;
@FXML private Label lblWriters;
@FXML private Label lblWritersInfo;
@FXML private Label lblActors;
@FXML private Label lblActorsInfo;
@FXML private Label lblInfo;
@FXML private Label lblRuntimeInfo;
@FXML private Label lblRuntime;
@FXML private Label lblLanguageInfo;
@FXML private Label lblLanguage;
@FXML private Label lblRevenueInfo;
@FXML private Label lblRevenue;
@FXML private Label lblRatingInfo;
@FXML private Label lblRating;
@FXML private JFXButton btnWishlist;
@FXML private JFXButton btnFavourite;
@FXML private JFXButton btnHide;
@FXML private JFXButton btnPlay;
@FXML private JFXButton btnDirectory;
@FXML private ImageView wishListIcon;
@FXML private ImageView favoriteIcon;
@FXML private ImageView imgPoster;
@FXML private Text textPlot;
private DBController dbController;
private static final Logger LOGGER = LogManager.getLogger(FilmDetailView.class.getName());
private String currentStreamURL;
public void initialize() {
System.out.println("init nested controller");
dbController = DBController.getInstance();
filmDVPane.setStyle("-fx-background-color: rgba(89,89,89,0.9);");
btnWhishlist.setGraphic(new ImageView(new Image("icons/ic_play_arrow_black_18dp_1x.png")));
}
public void foo() {
System.out.println("test");
@FXML
private void btnWishlistAction() {
}
@FXML
private void btnWhishlistAction() {
private void btnFavouriteAction() {
dbController.toggleFavoriteState(currentStreamURL);
// update the favorite icon
if(dbController.getFavoriteState(currentStreamURL) == 1) {
favoriteIcon.setImage(new Image("icons/baseline_favorite_black_48dp.png"));
} else {
favoriteIcon.setImage(new Image("icons/baseline_favorite_border_black_48dp.png"));
}
}
@FXML
private void btnFavouriteAction() {
private void btnHideAction() {
hidePane();
}
@FXML
private void btnPlayAction() {
playFilm();
}
@FXML
private void btnDirectoryAction() {
File dest = new File(currentStreamURL).getParentFile();
if (!System.getProperty("os.name").contains("Linux")) {
try {
Desktop.getDesktop().open(dest);
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* set the cached data of a stream to the FilmDetailView
* @param streamURL URL of the stream
*/
public void setFilm(String streamURL) {
currentStreamURL = streamURL;
String[] cacheInfo = dbController.readCache(streamURL); // get the cache data from the database
// add the cache data to the GUI
lblTitle.setText(cacheInfo[0]);
lblYear.setText("(" + cacheInfo[1] + ")");
lblScore.setText(XMLController.getLocalBundle().getString("score") + ": " + cacheInfo[15] + "%");
textPlot.setText(cacheInfo[11]);
lblDirectors.setText(cacheInfo[8]);
lblWriters.setText(cacheInfo[9]);
lblActors.setText(cacheInfo[10]);
lblRuntime.setText(cacheInfo[6]);
lblLanguage.setText(cacheInfo[12]);
lblRevenue.setText(cacheInfo[18]);
lblRating.setText(cacheInfo[2]);
try {
if (new File(cacheInfo[20]).isFile()) {
imgPoster.setImage(new Image(new File(cacheInfo[20]).toURI().toString()));
} else {
imgPoster.setImage(new Image(cacheInfo[20]));
}
} catch (Exception e) {
imgPoster.setImage(new Image("icons/Homeflix_Poster.png"));
LOGGER.error("No Poster found, useing default.");
}
// set the favorite correct icon
if(dbController.getFavoriteState(streamURL) == 1) {
favoriteIcon.setImage(new Image("icons/baseline_favorite_black_48dp.png"));
} else {
favoriteIcon.setImage(new Image("icons/baseline_favorite_border_black_48dp.png"));
}
}
/**
* update the text of all static GUI elements of FilmDeatilView
*/
public void updateGUILocal() {
lblCrew.setText(XMLController.getLocalBundle().getString("crew"));
lblDirectorsInfo.setText(XMLController.getLocalBundle().getString("directors"));
lblWritersInfo.setText(XMLController.getLocalBundle().getString("writers"));
lblActorsInfo.setText(XMLController.getLocalBundle().getString("actors"));
lblInfo.setText(XMLController.getLocalBundle().getString("info"));
lblRuntimeInfo.setText(XMLController.getLocalBundle().getString("runtime"));
lblLanguageInfo.setText(XMLController.getLocalBundle().getString("language"));
lblRevenueInfo.setText(XMLController.getLocalBundle().getString("boxOffice"));
lblRatingInfo.setText(XMLController.getLocalBundle().getString("rated"));
}
/**
* show the FilmDVpane
*/
public void showPane() {
filmDVPane.setVisible(true);
FadeTransition fadeIn = new FadeTransition(Duration.millis(300), filmDVPane);
fadeIn.setFromValue(0.3);
fadeIn.setToValue(1.0);
fadeIn.play();
}
/**
* hide the FilmDVpane
*/
private void hidePane() {
FadeTransition fadeOut = new FadeTransition(Duration.millis(200), filmDVPane);
fadeOut.setFromValue(1.0);
fadeOut.setToValue(0.3);
fadeOut.play();
filmDVPane.setVisible(false);
MainWindowController.getInstance().disableBlur(); // disable blur
}
private void playFilm() {
}

66
src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java

@ -168,6 +168,7 @@ public class MainWindowController {
// FilmDetailView
@FXML private FilmDetailView filmDetailViewController;
private static MainWindowController instance = null;
private DBController dbController;
private UpdateController updateController;
private XMLController xmlController;
@ -195,16 +196,26 @@ public class MainWindowController {
private ObservableList<PosterModeElement> posterEmenents = FXCollections.observableArrayList();
private static ObservableList<SourceDataType> sourcesList = FXCollections.observableArrayList();
private MenuItem like = new MenuItem("like");
private MenuItem dislike = new MenuItem("dislike"); // TODO one option (like or dislike)
private MenuItem dislike = new MenuItem("dislike");
private ContextMenu menu = new ContextMenu(like, dislike);
private LocalDate lastValidCache = LocalDate.now().minusDays(30); // current date - 30 days is the last valid cache date
public MainWindowController() {
// the constructor
}
public static MainWindowController getInstance() {
if (instance == null) {
LOGGER.error("There was a fatal error: instance is null!");
instance = new MainWindowController();
}
return instance;
}
@FXML
public void initialize() {
instance = this;
xmlController = new XMLController();
dbController = DBController.getInstance();
}
@ -226,7 +237,7 @@ public class MainWindowController {
// load sources list in gui
addSourceToTable();
posterModeStartup(); // TODO testing DO NOT USE THIS!!
// posterModeStartup(); // TODO testing DO NOT USE THIS!!
}
// Initialize general UI elements
@ -254,11 +265,11 @@ public class MainWindowController {
setLocalUI();
applyColor();
BoxBlur boxBlur = new BoxBlur();
boxBlur.setWidth(9);
boxBlur.setHeight(7);
boxBlur.setIterations(3);
posterModeFlowPane.setEffect(boxBlur);
// BoxBlur boxBlur = new BoxBlur();
// boxBlur.setWidth(9);
// boxBlur.setHeight(7);
// boxBlur.setIterations(3);
// posterModeFlowPane.setEffect(boxBlur);
}
/**
@ -491,7 +502,7 @@ public class MainWindowController {
}
}
}
@FXML
private void openfolderbtnclicked() {
File dest = new File(getCurrentStreamUrl()).getParentFile();
@ -508,7 +519,6 @@ public class MainWindowController {
@FXML
private void returnBtnclicked() {
filmsTreeTable.getSelectionModel().select(last);
filmDetailViewController.foo(); // TODO
}
@FXML
@ -783,6 +793,9 @@ public class MainWindowController {
languageChoisBox.getSelectionModel().select(0);
break;
}
filmDetailViewController.updateGUILocal();
aboutBtn.setText(XMLController.getLocalBundle().getString("info"));
settingsBtn.setText(XMLController.getLocalBundle().getString("settings"));
searchTextField.setPromptText(XMLController.getLocalBundle().getString("tfSearch"));
@ -818,8 +831,8 @@ public class MainWindowController {
nameText[5] = new Text(XMLController.getLocalBundle().getString("episode") + ": ");
nameText[6] = new Text(XMLController.getLocalBundle().getString("runtime") + ": ");
nameText[7] = new Text(XMLController.getLocalBundle().getString("genre") + ": ");
nameText[8] = new Text(XMLController.getLocalBundle().getString("director") + ": ");
nameText[9] = new Text(XMLController.getLocalBundle().getString("writer") + ": ");
nameText[8] = new Text(XMLController.getLocalBundle().getString("directors") + ": ");
nameText[9] = new Text(XMLController.getLocalBundle().getString("writers") + ": ");
nameText[10] = new Text(XMLController.getLocalBundle().getString("actors") + ": ");
nameText[11] = new Text(XMLController.getLocalBundle().getString("plot") + ": ");
nameText[12] = new Text(XMLController.getLocalBundle().getString("language") + ": ");
@ -916,6 +929,7 @@ public class MainWindowController {
executor.shutdown();
// TODO show loading screen
// we might need this as otherwise it would load before all tasks are finished
try {
executor.awaitTermination(1, TimeUnit.MINUTES);
@ -936,11 +950,41 @@ public class MainWindowController {
posterEmenents.clear();
posterEmenents = dbController.getPosterElementsList(); // returns a list of all PosterElements stored in the database
// add button onAction
for (PosterModeElement element : posterEmenents) {
element.getButton().addEventHandler(MouseEvent.MOUSE_CLICKED, (event) -> {
enableBlur(); // blur the FlowPane
// if the selected element is a file it's a film, else a series
if (new File(element.getStreamURL()).isFile()) {
filmDetailViewController.setFilm(element.getStreamURL());
filmDetailViewController.showPane();
} else {
filmDetailViewController.setFilm(element.getStreamURL());
filmDetailViewController.showPane();
}
System.out.println("selected: " + element.getStreamURL());
});
}
posterModeFlowPane.getChildren().clear(); // remove all GUIElements from the posterModeFlowPane
posterModeFlowPane.getChildren().addAll(posterEmenents); // add all films/series as new GUIElements to the posterModeFlowPane
System.out.println("added gui elements");
}
private void enableBlur() {
BoxBlur boxBlur = new BoxBlur();
boxBlur.setWidth(9);
boxBlur.setHeight(7);
boxBlur.setIterations(3);
posterModeFlowPane.setEffect(boxBlur);
}
public void disableBlur() {
posterModeFlowPane.setEffect(null);
}
// getter and setter

44
src/main/java/kellerkinder/HomeFlix/controller/DBController.java

@ -353,6 +353,50 @@ public class DBController {
}
}
/**
* return the favorite state for a stream
* @param streamURL URL of the stream
* @return 0 if it's not a favorite, else 1
*/
public int getFavoriteState(String streamURL) {
int favoriteState = 0;
PreparedStatement ps;
try {
ps = connection.prepareStatement("SELECT favorite FROM films WHERE streamUrl = ?");
ps.setString(1, streamURL);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
favoriteState = rs.getInt("favorite");
}
rs.close();
ps.close();
} catch (SQLException e) {
LOGGER.error("Ups! an error occured!", e);
}
return favoriteState;
}
public void toggleFavoriteState(String streamURL) {
PreparedStatement ps;
try {
if (getFavoriteState(streamURL) == 0) {
ps = connection.prepareStatement("UPDATE films SET favorite = 1 WHERE streamUrl = ?");
} else {
ps = connection.prepareStatement("UPDATE films SET favorite = 0 WHERE streamUrl = ?");
}
ps.setString(1, streamURL);
ps.executeUpdate();
connection.commit();
ps.close();
} catch (SQLException e) {
LOGGER.error("Ups! an error occured!", e);
}
}
/**
* update the database entry for the given film, favorite = 0
* @param streamUrl URL of the film

175
src/main/resources/fxml/FilmDetailView.fxml

@ -2,16 +2,18 @@
<?import com.jfoenix.controls.JFXButton?>
<?import javafx.geometry.Insets?>
<?import javafx.geometry.Rectangle2D?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<?import javafx.scene.text.TextFlow?>
<AnchorPane fx:id="filmDVPane" mouseTransparent="true" prefHeight="568.0" prefWidth="1130.0" style="-fx-background-color: #595959;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.FilmDetailView">
<AnchorPane fx:id="filmDVPane" prefHeight="568.0" prefWidth="1130.0" style="-fx-background-color: #595959;" visible="false" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.FilmDetailView">
<children>
<HBox layoutX="22.0" layoutY="21.0" prefWidth="808.0" spacing="10.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="300.0" AnchorPane.topAnchor="22.0">
<children>
@ -20,7 +22,7 @@
<Font name="System Bold" size="24.0" />
</font>
</Label>
<Label fx:id="lblYear" maxHeight="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="29.0" prefWidth="71.0" text="(2018)" textFill="#ecebed">
<Label fx:id="lblYear" alignment="CENTER" maxHeight="-Infinity" minHeight="-Infinity" minWidth="71.0" prefHeight="29.0" text="(2018)" textFill="#ecebed">
<font>
<Font size="24.0" />
</font>
@ -31,14 +33,31 @@
<children>
<HBox alignment="CENTER_LEFT">
<children>
<Label fx:id="lblScore" text="Wertung: 80%" textFill="#ecebed" />
<Label fx:id="lblScore" text="Wertung: 80%" textFill="#ecebed">
<font>
<Font size="15.0" />
</font></Label>
</children>
<padding>
<Insets right="20.0" />
</padding>
</HBox>
<JFXButton fx:id="btnWhishlist" buttonType="RAISED" contentDisplay="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onAction="#btnWhishlistAction" prefHeight="40.0" prefWidth="40.0" style="-fx-background-color: #ffffff; -fx-background-radius: 40px;" />
<JFXButton fx:id="btnFavourite" buttonType="RAISED" contentDisplay="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onAction="#btnFavouriteAction" prefHeight="40.0" prefWidth="40.0" style="-fx-background-color: #ffffff; -fx-background-radius: 40px;" />
<JFXButton fx:id="btnWishlist" buttonType="RAISED" contentDisplay="GRAPHIC_ONLY" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onAction="#btnWishlistAction" prefHeight="40.0" prefWidth="40.0" style="-fx-background-color: #ffffff; -fx-background-radius: 40px;" text="List">
<graphic>
<ImageView fx:id="wishlistIcon" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/baseline_list_black_48dp.png" />
</image>
</ImageView>
</graphic></JFXButton>
<JFXButton fx:id="btnFavourite" buttonType="RAISED" contentDisplay="GRAPHIC_ONLY" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" onAction="#btnFavouriteAction" prefHeight="40.0" prefWidth="40.0" style="-fx-background-color: #ffffff; -fx-background-radius: 40px;" text="Fav">
<graphic>
<ImageView fx:id="favoriteIcon" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/baseline_favorite_border_black_48dp.png" />
</image>
</ImageView>
</graphic></JFXButton>
</children>
</HBox>
<TextFlow layoutX="22.0" layoutY="150.0" lineSpacing="1.0" prefHeight="200.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="300.0" AnchorPane.topAnchor="130.0">
@ -50,12 +69,152 @@
</Text>
</children>
</TextFlow>
<ImageView fitHeight="400.0" fitWidth="267.0" layoutX="849.0" layoutY="14.0" pickOnBounds="true" preserveRatio="true" AnchorPane.rightAnchor="22.0" AnchorPane.topAnchor="22.0">
<Label fx:id="lblCrew" layoutX="31.0" layoutY="346.0" text="Haupt-Crew" textFill="#ecebed" AnchorPane.leftAnchor="22.0" AnchorPane.topAnchor="350.0">
<font>
<Font size="20.0" />
</font></Label>
<HBox layoutX="22.0" layoutY="372.0" spacing="30.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="300.0" AnchorPane.topAnchor="380.0">
<children>
<VBox spacing="3.0">
<children>
<Label fx:id="lblDirectors" maxWidth="200.0" text="Rodney Rothman" textFill="#ecebed">
<font>
<Font name="System Bold" size="15.0" />
</font></Label>
<Label fx:id="lblDirectorsInfo" text="Directors" textFill="#ecebed">
<font>
<Font size="14.0" />
</font></Label>
</children>
</VBox>
<VBox spacing="3.0">
<children>
<Label fx:id="lblWriters" maxWidth="300.0" text="Rodney Rothman" textFill="#ecebed">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label fx:id="lblWritersInfo" text="Writers" textFill="#ecebed">
<font>
<Font size="14.0" />
</font>
</Label>
</children>
</VBox>
<VBox spacing="3.0">
<children>
<Label fx:id="lblActors" maxWidth="300.0" text="Rodney Rothman" textFill="#ecebed">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label fx:id="lblActorsInfo" text="Actors" textFill="#ecebed">
<font>
<Font size="14.0" />
</font>
</Label>
</children>
</VBox>
</children>
</HBox>
<Label fx:id="lblInfo" layoutX="22.0" layoutY="433.0" text="Info" textFill="#ecebed" AnchorPane.leftAnchor="22.0" AnchorPane.topAnchor="440.0">
<font>
<Font size="20.0" />
</font>
</Label>
<HBox layoutX="22.0" layoutY="464.0" spacing="30.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="300.0" AnchorPane.topAnchor="470.0">
<children>
<VBox spacing="3.0">
<children>
<Label fx:id="lblRuntimeInfo" text="Runtime" textFill="#ecebed">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label fx:id="lblRuntime" text="1h 52m" textFill="#ecebed">
<font>
<Font size="14.0" />
</font>
</Label>
</children>
</VBox>
<VBox spacing="3.0">
<children>
<Label fx:id="lblLanguageInfo" text="Original Language" textFill="#ecebed">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label fx:id="lblLanguage" text="English" textFill="#ecebed">
<font>
<Font size="14.0" />
</font>
</Label>
</children>
</VBox>
<VBox spacing="3.0">
<children>
<Label fx:id="lblRevenueInfo" text="Revenue" textFill="#ecebed">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label fx:id="lblRevenue" text="\$375,450,417.00" textFill="#ecebed">
<font>
<Font size="14.0" />
</font>
</Label>
</children>
</VBox>
<VBox spacing="3.0">
<children>
<Label fx:id="lblRatingInfo" text="Rating" textFill="#ecebed">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label fx:id="lblRating" text="PG" textFill="#ecebed">
<font>
<Font size="14.0" />
</font>
</Label>
</children>
</VBox>
</children>
</HBox>
<JFXButton fx:id="btnHide" contentDisplay="GRAPHIC_ONLY" layoutX="537.0" layoutY="518.0" maxHeight="-Infinity" minWidth="-Infinity" onAction="#btnHideAction" prefHeight="32.0" style="-fx-background-color: transparent;" text="Hide" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="530.0" AnchorPane.rightAnchor="530.0">
<graphic>
<ImageView pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/baseline_keyboard_arrow_down_white_48dp.png" />
</image>
</ImageView>
</graphic>
</JFXButton>
<ImageView fx:id="imgPoster" fitHeight="400.0" fitWidth="267.0" layoutX="849.0" layoutY="14.0" pickOnBounds="true" preserveRatio="true" AnchorPane.rightAnchor="22.0" AnchorPane.topAnchor="22.0">
<image>
<Image url="@../icons/spider-man.jpg" />
</image>
</ImageView>
<Label layoutX="29.0" layoutY="338.0" text="Crew:" textFill="#ecebed" />
<JFXButton buttonType="RAISED" layoutX="1016.0" layoutY="514.0" prefWidth="100.0" style="-fx-background-color: #456789;" text="Play" />
<JFXButton fx:id="btnPlay" buttonType="RAISED" contentDisplay="GRAPHIC_ONLY" layoutX="841.0" layoutY="448.0" maxHeight="-Infinity" onAction="#btnPlayAction" prefHeight="32.0" prefWidth="267.0" style="-fx-background-color: #ffffff;" text="Play" AnchorPane.rightAnchor="22.0" AnchorPane.topAnchor="448.0">
<graphic>
<ImageView fitHeight="24.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/baseline_play_arrow_black_48dp.png" />
</image>
<viewport>
<Rectangle2D />
</viewport>
</ImageView>
</graphic></JFXButton>
<JFXButton fx:id="btnDirectory" buttonType="RAISED" contentDisplay="GRAPHIC_ONLY" layoutX="841.0" layoutY="506.0" maxHeight="-Infinity" onAction="#btnDirectoryAction" prefHeight="32.0" prefWidth="267.0" style="-fx-background-color: #ffffff;" text="open Directory" AnchorPane.rightAnchor="22.0" AnchorPane.topAnchor="506.0">
<graphic>
<ImageView fitHeight="24.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icons/baseline_folder_black_48dp.png" />
</image>
</ImageView>
</graphic>
</JFXButton>
</children>
</AnchorPane>

BIN
src/main/resources/icons/baseline_favorite_black_48dp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

BIN
src/main/resources/icons/baseline_favorite_border_black_48dp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

BIN
src/main/resources/icons/baseline_folder_black_48dp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

BIN
src/main/resources/icons/baseline_keyboard_arrow_down_black_48dp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

BIN
src/main/resources/icons/baseline_keyboard_arrow_down_white_48dp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

BIN
src/main/resources/icons/baseline_list_black_48dp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

BIN
src/main/resources/icons/baseline_play_arrow_black_48dp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

8
src/main/resources/locals/HomeFlix-Local_de_DE.properties

@ -43,8 +43,8 @@ season = Staffel
episode = Episode
runtime = Laufzeit
genre = Gener
director = Regisseur
writer = Autor
directors = Regisseur
writers = Autoren
actors = Schauspieler
plot = Beschreibung
language = Original Sprache
@ -60,3 +60,7 @@ website = Webseite
addSourceHeader = Neue Quelle hinzuf\u00FCgen
addSourceBody = HomeFlix konnte keine Quelle finden. \nFüge eine loakels Verzeichniss oder eine Sreaming Datei als neue Quelle hinzu.
cancelBtnText = Abbrechen
#DetailView
crew = Haupt-Crew
score = Benutzerbewertung

10
src/main/resources/locals/HomeFlix-Local_en_US.properties

@ -41,10 +41,10 @@ rated = Rating
released = published on
season = Season
episode = Episode
runtime = Duration
runtime = Runtime
genre = Gener
director = Director
writer = Writer
directors = Directors
writers = Writers
actors = Actors
plot = Plot
language = Language
@ -60,3 +60,7 @@ website = Website
addSourceHeader = add a new source
addSourceBody = HomeFlix was not able to load a source. \nAdd a new local directory oa a streaming file as new source.
cancelBtnText = cancel
#DetailView
crew = Featured Crew
score = User Score

Loading…
Cancel
Save

Du besuchst diese Seite mit einem veralteten IPv4-Internetzugang. Möglicherweise treten in Zukunft Probleme mit der Erreichbarkeit und Performance auf. Bitte frage deinen Internetanbieter oder Netzwerkadministrator nach IPv6-Unterstützung.
You are visiting this site with an outdated IPv4 internet access. You may experience problems with accessibility and performance in the future. Please ask your ISP or network administrator for IPv6 support.
Weitere Infos | More Information
Klicke zum schließen | Click to close