* onlay add files with mime type == video
This commit is contained in:
Jannik 2018-04-19 12:13:18 +02:00
parent d3ea1b1956
commit 23e46b7913
7 changed files with 23 additions and 73 deletions

View File

@ -32,8 +32,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer; import java.io.Writer;
import java.math.BigInteger; import java.math.BigInteger;
import java.net.URLConnection; import java.net.URLConnection;
@ -64,8 +62,6 @@ import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.EventHandler; import javafx.event.EventHandler;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ChoiceBox; import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ContextMenu; import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@ -73,7 +69,6 @@ import javafx.scene.control.MenuItem;
import javafx.scene.control.ScrollPane; import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TreeItem; import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableColumn; import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableColumn.SortType; import javafx.scene.control.TreeTableColumn.SortType;
@ -82,9 +77,7 @@ import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.text.Font; import javafx.scene.text.Font;
@ -139,8 +132,6 @@ public class MainWindowController {
@FXML @FXML
private JFXButton settingsBtn; private JFXButton settingsBtn;
@FXML @FXML
private JFXButton debugBtn;
@FXML
private JFXButton updateBtn; private JFXButton updateBtn;
@FXML @FXML
private JFXButton addDirectoryBtn; private JFXButton addDirectoryBtn;
@ -227,7 +218,6 @@ public class MainWindowController {
private String omdbAPIKey; private String omdbAPIKey;
// text strings // text strings
private String errorPlay;
private String errorLoad; private String errorLoad;
private String errorSave; private String errorSave;
private String infoText; private String infoText;
@ -443,7 +433,7 @@ public class MainWindowController {
} }
} }
} else { } else {
System.out.println("ascending"); // System.out.println("ascending");
for (FilmTabelDataType film : filmsList) { for (FilmTabelDataType film : filmsList) {
if (!film.getFavorite()) { if (!film.getFavorite()) {
filterData.add(0, film); filterData.add(0, film);
@ -491,9 +481,6 @@ public class MainWindowController {
// initialize UI elements // initialize UI elements
private void initUI() { private void initUI() {
debugBtn.setDisable(true); // debugging button for tests
debugBtn.setVisible(false);
versionLbl.setText("Version: " + version + " (Build: " + buildNumber + ")"); versionLbl.setText("Version: " + version + " (Build: " + buildNumber + ")");
fontsizeSlider.setValue(getFontSize()); fontsizeSlider.setValue(getFontSize());
colorPicker.setValue(Color.valueOf(getColor())); colorPicker.setValue(Color.valueOf(getColor()));
@ -546,16 +533,16 @@ public class MainWindowController {
} else { } else {
try { try {
new ProcessBuilder("vlc", getCurrentStreamUrl()).start(); new ProcessBuilder("vlc", getCurrentStreamUrl()).start();
} catch (IOException e1) { } catch (IOException e) {
showErrorMsg(errorPlay, e1); LOGGER.warn("An error has occurred while opening the file!", e);
} }
} }
} else if (System.getProperty("os.name").contains("Windows") || System.getProperty("os.name").contains("Mac OS X")) { } else if (System.getProperty("os.name").contains("Windows") || System.getProperty("os.name").contains("Mac OS X")) {
try { try {
Desktop.getDesktop().open(new File(getCurrentStreamUrl())); Desktop.getDesktop().open(new File(getCurrentStreamUrl()));
} catch (IOException e1) { } catch (IOException e) {
showErrorMsg(errorPlay, e1); LOGGER.warn("An error has occurred while opening the file!", e);
} }
} else { } else {
LOGGER.error(System.getProperty("os.name") + ", OS is not supported, please contact a developer! "); LOGGER.error(System.getProperty("os.name") + ", OS is not supported, please contact a developer! ");
@ -616,11 +603,6 @@ public class MainWindowController {
} }
} }
@FXML
private void debugBtnclicked(){
//for testing
}
@FXML @FXML
private void addDirectoryBtnAction(){ private void addDirectoryBtnAction(){
DirectoryChooser directoryChooser = new DirectoryChooser(); DirectoryChooser directoryChooser = new DirectoryChooser();
@ -768,7 +750,6 @@ public class MainWindowController {
dialogBtnStyle = btnStyleWhite; dialogBtnStyle = btnStyleWhite;
settingsBtn.setStyle("-fx-text-fill: WHITE;"); settingsBtn.setStyle("-fx-text-fill: WHITE;");
aboutBtn.setStyle("-fx-text-fill: WHITE;"); aboutBtn.setStyle("-fx-text-fill: WHITE;");
debugBtn.setStyle("-fx-text-fill: WHITE;");
addDirectoryBtn.setStyle(btnStyleWhite); addDirectoryBtn.setStyle(btnStyleWhite);
addStreamSourceBtn.setStyle(btnStyleWhite); addStreamSourceBtn.setStyle(btnStyleWhite);
updateBtn.setStyle(btnStyleWhite); updateBtn.setStyle(btnStyleWhite);
@ -784,7 +765,6 @@ public class MainWindowController {
dialogBtnStyle = btnStyleBlack; dialogBtnStyle = btnStyleBlack;
settingsBtn.setStyle("-fx-text-fill: BLACK;"); settingsBtn.setStyle("-fx-text-fill: BLACK;");
aboutBtn.setStyle("-fx-text-fill: BLACK;"); aboutBtn.setStyle("-fx-text-fill: BLACK;");
debugBtn.setStyle("-fx-text-fill: BLACK;");
addDirectoryBtn.setStyle(btnStyleBlack); addDirectoryBtn.setStyle(btnStyleBlack);
addStreamSourceBtn.setStyle(btnStyleBlack); addStreamSourceBtn.setStyle(btnStyleBlack);
updateBtn.setStyle(btnStyleBlack); updateBtn.setStyle(btnStyleBlack);
@ -853,46 +833,12 @@ public class MainWindowController {
columnSeason.setText(getBundle().getString("columnSeason")); columnSeason.setText(getBundle().getString("columnSeason"));
columnEpisode.setText(getBundle().getString("columnEpisode")); columnEpisode.setText(getBundle().getString("columnEpisode"));
columnFavorite.setText(getBundle().getString("columnFavorite")); columnFavorite.setText(getBundle().getString("columnFavorite"));
errorPlay = getBundle().getString("errorPlay");
errorLoad = getBundle().getString("errorLoad"); errorLoad = getBundle().getString("errorLoad");
errorSave = getBundle().getString("errorSave"); errorSave = getBundle().getString("errorSave");
infoText = getBundle().getString("infoText"); infoText = getBundle().getString("infoText");
vlcNotInstalled = getBundle().getString("vlcNotInstalled"); vlcNotInstalled = getBundle().getString("vlcNotInstalled");
} }
// TODO rework after #19 has landed
public void showErrorMsg(String msg, Exception exception) {
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("");
alert.setContentText(msg);
alert.initOwner(main.getPrimaryStage());
// Create expandable Exception.
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
exception.printStackTrace(pw);
String exceptionText = sw.toString();
TextArea textArea = new TextArea(exceptionText);
textArea.setEditable(false);
textArea.setWrapText(true);
textArea.setMaxWidth(Double.MAX_VALUE);
textArea.setMaxHeight(Double.MAX_VALUE);
GridPane.setVgrow(textArea, Priority.ALWAYS);
GridPane.setHgrow(textArea, Priority.ALWAYS);
GridPane expContent = new GridPane();
expContent.setMaxWidth(Double.MAX_VALUE);
expContent.add(textArea, 0, 1);
// Set expandable Exception into the dialog pane.
alert.getDialogPane().setExpandableContent(expContent);
alert.showAndWait();
LOGGER.error("An error occurred", exception);
}
/** /**
* save the configuration to the config.xml file * save the configuration to the config.xml file
*/ */

View File

@ -68,8 +68,8 @@ public class DBController {
/** /**
* constructor for DBController * constructor for DBController
* @param main the main object * @param main the Main object
* @param mainWindowController the mainWindowController object * @param mainWindowController the MainWindowController object
*/ */
public DBController(Main main, MainWindowController mainWindowController) { public DBController(Main main, MainWindowController mainWindowController) {
this.main = main; this.main = main;
@ -300,11 +300,11 @@ public class DBController {
*/ */
private void checkRemoveEntry() { private void checkRemoveEntry() {
LOGGER.info("checking for entrys to remove to DB ..."); LOGGER.info("checking for entrys to remove to DB ...");
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
for (String entry : filmsdbStreamURL) { for (String entry : filmsdbStreamURL) {
// if the directory doen't contain the entry form the db, remove it
if (!filmsStreamURL.contains(entry)) { if (!filmsStreamURL.contains(entry)) {
stmt.executeUpdate("delete from films where streamUrl = \"" + entry + "\""); stmt.executeUpdate("delete from films where streamUrl = \"" + entry + "\"");
connection.commit(); connection.commit();
@ -334,8 +334,9 @@ public class DBController {
// if it's a local source check the folder for new film // if it's a local source check the folder for new film
if (source.getMode().equals("local")) { if (source.getMode().equals("local")) {
for (File file : new File(source.getPath()).listFiles()) { for (File file : new File(source.getPath()).listFiles()) {
String mimeType = URLConnection.guessContentTypeFromName(file.getPath());
if (file.isFile()) { // if file is file and has mime type "video" TODO needs testing
if (file.isFile() && mimeType != null && mimeType.contains("video")) {
// get all files (films) // get all files (films)
if (!filmsdbStreamURL.contains(file.getPath())) { if (!filmsdbStreamURL.contains(file.getPath())) {
stmt.executeUpdate("insert into films values (" stmt.executeUpdate("insert into films values ("
@ -346,7 +347,7 @@ public class DBController {
LOGGER.info("Added \"" + file.getName() + "\" to database"); LOGGER.info("Added \"" + file.getName() + "\" to database");
filmsdbStreamURL.add(file.getPath()); filmsdbStreamURL.add(file.getPath());
} }
} else { } else if (file.isDirectory()) {
// get all folders (series) // get all folders (series)
int sn = 1; int sn = 1;
for (File season : file.listFiles()) { for (File season : file.listFiles()) {

View File

@ -48,6 +48,12 @@ public class OMDbAPIController implements Runnable {
private String URL = "https://www.omdbapi.com/?apikey="; private String URL = "https://www.omdbapi.com/?apikey=";
private static final Logger LOGGER = LogManager.getLogger(MainWindowController.class.getName()); private static final Logger LOGGER = LogManager.getLogger(MainWindowController.class.getName());
/**
* constructor for the OMDbAPIController
* @param mainWindowController the MainWindowController object
* @param dbController the DBController object
* @param main the Main object
*/
public OMDbAPIController(MainWindowController mainWindowController, DBController dbController, Main main){ public OMDbAPIController(MainWindowController mainWindowController, DBController dbController, Main main){
this.mainWindowController = mainWindowController; this.mainWindowController = mainWindowController;
this.dbController = dbController; this.dbController = dbController;
@ -107,6 +113,7 @@ public class OMDbAPIController implements Runnable {
return; return;
} }
// add the response to the responseString[]
responseString[0] = object.getString("Title", ""); responseString[0] = object.getString("Title", "");
responseString[1] = object.getString("Year", ""); responseString[1] = object.getString("Year", "");
responseString[2] = object.getString("Rated", ""); responseString[2] = object.getString("Rated", "");

View File

@ -60,6 +60,9 @@ public class UpdateController implements Runnable {
/** /**
* updater for Project HomeFlix based on cemu_UIs, checks for Updates and download it * updater for Project HomeFlix based on cemu_UIs, checks for Updates and download it
* @param mwc the MainWindowController object
* @param buildNumber the buildNumber of the used HomeFlix version
* @param useBeta if the updater should query the beta channel
*/ */
public UpdateController(MainWindowController mwc, String buildNumber, boolean useBeta) { public UpdateController(MainWindowController mwc, String buildNumber, boolean useBeta) {
mainWindowController = mwc; mainWindowController = mwc;

View File

@ -22,7 +22,7 @@
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<?import javafx.scene.text.TextFlow?> <?import javafx.scene.text.TextFlow?>
<AnchorPane fx:id="mainAnchorPane" prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.MainWindowController"> <AnchorPane fx:id="mainAnchorPane" prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.MainWindowController">
<children> <children>
<AnchorPane fx:id="tableModeAnchorPane" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="32.0"> <AnchorPane fx:id="tableModeAnchorPane" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="32.0">
<children> <children>
@ -190,11 +190,6 @@
<Font name="System Bold" size="15.0" /> <Font name="System Bold" size="15.0" />
</font> </font>
</JFXButton> </JFXButton>
<JFXButton fx:id="debugBtn" onAction="#debugBtnclicked" prefHeight="32.0" prefWidth="150.0" text="debugging" textAlignment="CENTER">
<font>
<Font name="System Bold" size="15.0" />
</font>
</JFXButton>
</children> </children>
</VBox> </VBox>
</children> </children>

View File

@ -33,7 +33,6 @@ columnFavorite = Favorit
#error translations #error translations
errorUpdateV = Beim ausf\u00FChren des Updates ist ein Fehler aufgetreten! \nError: could not check update version (nvc)\nWeitere Hilfe erhalten sie unter www.kellerkinder.xyz \noder wenden sie sich an support@kellerkinder.xyz errorUpdateV = Beim ausf\u00FChren des Updates ist ein Fehler aufgetreten! \nError: could not check update version (nvc)\nWeitere Hilfe erhalten sie unter www.kellerkinder.xyz \noder wenden sie sich an support@kellerkinder.xyz
errorUpdateD = Beim ausf\u00FChren des Updates ist ein Fehler aufgetreten! \nError: could not download update files (ndf)\nWeitere Hilfe erhalten sie unter www.kellerkinder.xyz \noder wenden sie sich an support@kellerkinder.xyz errorUpdateD = Beim ausf\u00FChren des Updates ist ein Fehler aufgetreten! \nError: could not download update files (ndf)\nWeitere Hilfe erhalten sie unter www.kellerkinder.xyz \noder wenden sie sich an support@kellerkinder.xyz
errorPlay = Beim \u00F6ffnen der Datei ist ein Fehler aufgetreten! \nError: could not open file (nof) \nWeitere Hilfe erhalten sie unter www.kellerkinder.xyz \noder wenden sie sich an support@kellerkinder.xyz
errorMode = Oh, da lief etwas falsch! Da hat jemand einen falschen Modus verwendet. \nError: mode unknow (muk)\nWeitere Hilfe erhalten sie unter www.kellerkinder.xyz \noder wenden sie sich an support@kellerkinder.xyz errorMode = Oh, da lief etwas falsch! Da hat jemand einen falschen Modus verwendet. \nError: mode unknow (muk)\nWeitere Hilfe erhalten sie unter www.kellerkinder.xyz \noder wenden sie sich an support@kellerkinder.xyz
errorOpenStream = Beim \u00F6ffnen des Streams ist ein Fehler aufgetreten! errorOpenStream = Beim \u00F6ffnen des Streams ist ein Fehler aufgetreten!
errorLoad = Beim laden der Einstellungen ist ein Fehler aufgetreten! errorLoad = Beim laden der Einstellungen ist ein Fehler aufgetreten!

View File

@ -33,7 +33,6 @@ columnFavorite = Favorite
#error translations #error translations
errorUpdateV = An error has occurred during update! \nError: could not check update version (nvc) \nTo get help, visit www.kellerkinder.xyz \nor contcat support@kellerkinder.xyz errorUpdateV = An error has occurred during update! \nError: could not check update version (nvc) \nTo get help, visit www.kellerkinder.xyz \nor contcat support@kellerkinder.xyz
errorUpdateD = An error has occurred during update! \nError: could not download update files (ndf) \nTo get help, visit www.kellerkinder.xyz \nor contcat support@kellerkinder.xyz errorUpdateD = An error has occurred during update! \nError: could not download update files (ndf) \nTo get help, visit www.kellerkinder.xyz \nor contcat support@kellerkinder.xyz
errorPlay = An error has occurred during opening the file! \nError: could not open file (nof) \nTo get help, visit www.kellerkinder.xyz \nor contcat support@kellerkinder.xyz
errorMode = Oh, something went wrong! It seems someone has used a wrong mode. \nError: mode unknow (muk) \nTo get help, visit www.kellerkinder.xyz \nor contcat support@kellerkinder.xyz errorMode = Oh, something went wrong! It seems someone has used a wrong mode. \nError: mode unknow (muk) \nTo get help, visit www.kellerkinder.xyz \nor contcat support@kellerkinder.xyz
errorOpenStream = An error has occurred during opening the stream! errorOpenStream = An error has occurred during opening the stream!
errorLoad = An error occurred while loading the settings! errorLoad = An error occurred while loading the settings!