diff --git a/bin/application/DBController.class b/bin/application/DBController.class index dbf1e3d..6f74b57 100644 Binary files a/bin/application/DBController.class and b/bin/application/DBController.class differ diff --git a/bin/application/Main.class b/bin/application/Main.class index 60e6aa7..5d0638e 100644 Binary files a/bin/application/Main.class and b/bin/application/Main.class differ diff --git a/bin/application/MainWindowController$1.class b/bin/application/MainWindowController$1.class index 4eeefa5..f13e05a 100644 Binary files a/bin/application/MainWindowController$1.class and b/bin/application/MainWindowController$1.class differ diff --git a/bin/application/MainWindowController$2.class b/bin/application/MainWindowController$2.class index 1103180..7823df7 100644 Binary files a/bin/application/MainWindowController$2.class and b/bin/application/MainWindowController$2.class differ diff --git a/bin/application/MainWindowController$3.class b/bin/application/MainWindowController$3.class index d88deed..5615eea 100644 Binary files a/bin/application/MainWindowController$3.class and b/bin/application/MainWindowController$3.class differ diff --git a/bin/application/MainWindowController$4.class b/bin/application/MainWindowController$4.class index f600c9b..190ef97 100644 Binary files a/bin/application/MainWindowController$4.class and b/bin/application/MainWindowController$4.class differ diff --git a/bin/application/MainWindowController$5.class b/bin/application/MainWindowController$5.class index ea1cacb..e7a8d0e 100644 Binary files a/bin/application/MainWindowController$5.class and b/bin/application/MainWindowController$5.class differ diff --git a/bin/application/MainWindowController$6.class b/bin/application/MainWindowController$6.class index a6b268b..6e5851e 100644 Binary files a/bin/application/MainWindowController$6.class and b/bin/application/MainWindowController$6.class differ diff --git a/bin/application/MainWindowController.class b/bin/application/MainWindowController.class index 1d86505..6513af9 100644 Binary files a/bin/application/MainWindowController.class and b/bin/application/MainWindowController.class differ diff --git a/bin/application/streamUiData.class b/bin/application/streamUiData.class index 034c7a2..0f5156d 100644 Binary files a/bin/application/streamUiData.class and b/bin/application/streamUiData.class differ diff --git a/bin/recources/HomeFlix-Local_de_DE.properties b/bin/recources/HomeFlix-Local_de_DE.properties index bef1278..4fb3706 100644 --- a/bin/recources/HomeFlix-Local_de_DE.properties +++ b/bin/recources/HomeFlix-Local_de_DE.properties @@ -45,3 +45,5 @@ awards = Auszeichnungen metascore = Metascore imdbRating = IMDB-Bewertung type = Type +firstStartHeader = Es ist kein Stammverzeichnis f\u00FCr Filme angegeben! +firstStartContent = Stammverzeichniss angeben? diff --git a/bin/recources/HomeFlix-Local_en_US.properties b/bin/recources/HomeFlix-Local_en_US.properties index 21669a4..41de6ea 100644 --- a/bin/recources/HomeFlix-Local_en_US.properties +++ b/bin/recources/HomeFlix-Local_en_US.properties @@ -45,3 +45,5 @@ awards = Awards metascore = Metascore imdbRating = IMDB-Rating type = Type +firstStartHeader = There is no root directory for movies! +firstStartContent = Specify a root directory? \ No newline at end of file diff --git a/src/application/DBController.java b/src/application/DBController.java index fddce64..1180f93 100644 --- a/src/application/DBController.java +++ b/src/application/DBController.java @@ -223,9 +223,9 @@ public class DBController { ResultSet rs = stmt.executeQuery("SELECT * FROM film_local"); while (rs.next()) { if(rs.getString(4).equals("favorite_black")){ - mainWindowController.newDaten.add( new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black))); + mainWindowController.newData.add( new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black))); }else{ - mainWindowController.newDaten.add( new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black))); + mainWindowController.newData.add( new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black))); } } stmt.close(); @@ -259,9 +259,9 @@ public class DBController { stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_local WHERE titel = '"+name+"';" ); if(rs.getString(4).equals("favorite_black")){ - mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black))); + mainWindowController.newData.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black))); }else{ - mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black))); + mainWindowController.newData.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black))); } stmt.close(); rs.close(); @@ -359,7 +359,7 @@ public class DBController { } void ausgeben(){ - System.out.println("Eintr�ge ausgeben ... \n"); + System.out.println("Eintraege ausgeben ... \n"); try { Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_local"); @@ -461,7 +461,7 @@ public class DBController { } } -//entfernt die Endung +//removes the ending private String cutOffEnd (String str) { if (str == null) return null; diff --git a/src/application/Main.java b/src/application/Main.java index 9e99431..0b7c4c6 100644 --- a/src/application/Main.java +++ b/src/application/Main.java @@ -1,7 +1,7 @@ /** * Project HomeFlix * - * Copyright 2016 + * Copyright 2016-2017 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,9 +22,7 @@ package application; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.util.Locale; import java.util.Optional; import java.util.Properties; @@ -38,7 +36,6 @@ import javafx.scene.control.Alert.AlertType; import javafx.scene.control.ButtonType; import javafx.scene.image.Image; import javafx.scene.layout.AnchorPane; -import javafx.scene.paint.Color; import javafx.stage.DirectoryChooser; import javafx.stage.Stage; @@ -46,21 +43,20 @@ public class Main extends Application { public Stage primaryStage; private String path; - private InputStream inputStream; private String streamingPathWin = System.getProperty("user.home") + "\\Documents\\HomeFlix"; private String streamingPathLinux = System.getProperty("user.home") + "/HomeFlix"; private String color = "ee3523"; private String autoUpdate = "0"; private String mode = "local"; //local or streaming + private String local = System.getProperty("user.language")+"_"+System.getProperty("user.country"); private double size = 12; - private int local = 0; - private File dirWin = new File(System.getProperty("user.home") + "/Documents/HomeFlix"); //Windows: C:/Users/"User"/Documents/HomeFlix - private File dirLinux = new File(System.getProperty("user.home") + "/HomeFlix"); - private File fileWin = new File(dirWin + "/config.xml"); //Windows: C:/Users/"User"/Documents/HomeFlix/config.xml - private File fileLinux = new File(dirLinux + "/config.xml"); - Properties props = new Properties(); private ResourceBundle bundle; private MainWindowController mainWindowController; + private File dirWin = new File(System.getProperty("user.home") + "/Documents/HomeFlix"); //Windows: C:/Users/"User"/Documents/HomeFlix + private File dirLinux = new File(System.getProperty("user.home") + "/HomeFlix"); //Linux: /home/"User"/HomeFlix + private File fileWin = new File(dirWin + "/config.xml"); //Windows: C:/Users/"User"/Documents/HomeFlix/config.xml + private File fileLinux = new File(dirLinux + "/config.xml"); //Linux: /home/"User"/HomeFlix/config.xml + Properties props = new Properties(); @Override public void start(Stage primaryStage) { @@ -80,78 +76,50 @@ public class Main extends Application { primaryStage.getIcons().add(new Image(Main.class.getResourceAsStream("/recources/Homeflix_Icon_64x64.png"))); //adds application icon mainWindowController = loader.getController(); //Link of FXMLController and controller class - mainWindowController.setAutoUpdate(autoUpdate); //set autoupdate + mainWindowController.setAutoUpdate(autoUpdate); //set auto-update mainWindowController.setMain(this); //call setMain - //dir exists -> check config.xml + //Linux if directory exists -> check config.xml if(System.getProperty("os.name").equals("Linux")){ - if(dirLinux.exists() == true){ - if (fileLinux.exists() != true) { - mainWindowController.setPath(firstStart()); - if(System.getProperty("os.name").equals("Linux")){ - mainWindowController.setStreamingPath(streamingPathLinux); - }else{ - mainWindowController.setStreamingPath(streamingPathWin); - } - mainWindowController.setColor(color); - mainWindowController.setSize(size); - mainWindowController.setAutoUpdate(autoUpdate); - mainWindowController.setLoaclUI(local); - mainWindowController.setMode(mode); - mainWindowController.saveSettings(); - Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again (preventing Bugs) - System.exit(0); //finishes itself - }else{ - loadSettings(); - } - }else{ - dirLinux.mkdir(); - mainWindowController.setPath(firstStart()); - mainWindowController.setStreamingPath(streamingPathLinux); - mainWindowController.setColor(color); - mainWindowController.setSize(size); - mainWindowController.setAutoUpdate(autoUpdate); - mainWindowController.setLoaclUI(local); - mainWindowController.setMode(mode); - mainWindowController.saveSettings(); - Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again (preventing Bugs) - System.exit(0); //finishes itself + if(dirLinux.exists() != true){ + dirLinux.mkdir(); + }else if(fileLinux.exists() != true){ + mainWindowController.setPath(firstStart()); + mainWindowController.setStreamingPath(streamingPathLinux); + mainWindowController.setColor(color); + mainWindowController.setSize(size); + mainWindowController.setAutoUpdate(autoUpdate); + mainWindowController.setLocal(local); + mainWindowController.setMode(mode); + mainWindowController.saveSettings("l"); + Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again (preventing Bugs) + System.exit(0); //finishes itself } + //windows }else{ - if(dirWin.exists() == true){ - if (fileWin.exists() != true) { - mainWindowController.setPath(firstStart()); - mainWindowController.setStreamingPath(streamingPathWin); - mainWindowController.setColor(color); - mainWindowController.setSize(size); - mainWindowController.setAutoUpdate(autoUpdate); - mainWindowController.setLoaclUI(local); - mainWindowController.setMode(mode); - mainWindowController.saveSettings(); - Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again (preventing Bugs) - System.exit(0); //finishes itself - }else{ - loadSettings(); - } - }else{ - dirWin.mkdir(); - mainWindowController.setPath(firstStart()); - mainWindowController.setStreamingPath(streamingPathWin); - mainWindowController.setColor(color); - mainWindowController.setSize(size); - mainWindowController.setAutoUpdate(autoUpdate); - mainWindowController.setLoaclUI(local); - mainWindowController.setMode(mode); - mainWindowController.saveSettings(); - Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again (preventing Bugs) - System.exit(0); //finishes itself - } + if(dirWin.exists() != true){ + dirWin.mkdir(); + }else if(fileWin.exists() != true){ + mainWindowController.setPath(firstStart()); + mainWindowController.setStreamingPath(streamingPathWin); + mainWindowController.setColor(color); + mainWindowController.setSize(size); + mainWindowController.setAutoUpdate(autoUpdate); + mainWindowController.setLocal(local); + mainWindowController.setMode(mode); + mainWindowController.saveSettings("k"); + Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again (preventing Bugs) + System.exit(0); //finishes itself + } } + mainWindowController.loadSettings(); mainWindowController.loadStreamingSettings(); + mainWindowController.initUI(); + mainWindowController.initActions(); + mainWindowController.initTabel(); + mainWindowController.setLocalUI(); mainWindowController.applyColor(); //set theme color - mainWindowController.cbLocal.getSelectionModel().select(mainWindowController.getLocal()); //set local - mainWindowController.mainColor.setValue(Color.valueOf(mainWindowController.getColor())); mainWindowController.dbController.main(); //initialize database controller mainWindowController.dbController.createDatabase(); //creating the database @@ -165,12 +133,11 @@ public class Main extends Application { } catch (IOException e) { e.printStackTrace(); } - System.out.println(System.getProperty("user.language")+"_"+System.getProperty("user.country")); } //Method for first Start private String firstStart(){ - System.out.println(System.getProperty("user.language")+"_"+System.getProperty("user.country")); + MainWindowController.firststart = true; switch(System.getProperty("user.language")+"_"+System.getProperty("user.country")){ case "en_US": bundle = ResourceBundle.getBundle("recources.HomeFlix-Local", Locale.US); //us_english break; @@ -197,34 +164,7 @@ public class Main extends Application { } return path; } - - //lädt die einstellungen aus der XML - public void loadSettings(){ - try { - if(System.getProperty("os.name").equals("Linux")){ - inputStream = new FileInputStream(fileLinux); - }else{ - inputStream = new FileInputStream(fileWin); - } - props.loadFromXML(inputStream); - path = props.getProperty("path"); //setzt Propselement in Pfad - if(System.getProperty("os.name").equals("Linux")){ - streamingPathLinux = props.getProperty("streamingPath"); - }else{ - streamingPathWin = props.getProperty("streamingPath"); - } - color = props.getProperty("color"); - size = Double.parseDouble(props.getProperty("size")); - autoUpdate = props.getProperty("autoUpdate"); - local = Integer.parseInt(props.getProperty("local")); - mode = props.getProperty("mode"); - inputStream.close(); - } catch (IOException e) { - System.out.println("An error has occurred!"); - e.printStackTrace(); - } - } - + public static void main(String[] args) { launch(args); } diff --git a/src/application/MainWindowController.java b/src/application/MainWindowController.java index 2fed23f..1f70d31 100644 --- a/src/application/MainWindowController.java +++ b/src/application/MainWindowController.java @@ -1,7 +1,7 @@ /** * Project HomeFlix * - * Copyright 2016 + * Copyright 2016-2017 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -85,6 +85,8 @@ import javafx.stage.DirectoryChooser; import javafx.util.Duration; public class MainWindowController { + private ObservableList locals = FXCollections.observableArrayList("english (en_US)", "deutsch (de_DE)"); + @FXML private AnchorPane anpane; @FXML @@ -138,7 +140,7 @@ public class MainWindowController { @FXML public JFXColorPicker mainColor; @FXML - public ChoiceBox cbLocal; + public ChoiceBox cbLocal = new ChoiceBox<>(locals); @FXML public JFXSlider sliderFontSize; @FXML @@ -182,9 +184,10 @@ public class MainWindowController { private boolean menutrue = false; //saves the position of menubtn (opened or closed) private boolean settingstrue = false; private boolean streamingSettingsTrue = false; + static boolean firststart = false; private int hashA = -2055934614; private String version = "0.4.99"; - private String buildNumber = "112"; + private String buildNumber = "114"; private String versionName = "plasma cow (pre Release)"; private String buildURL = "https://raw.githubusercontent.com/Seil0/Project-HomeFlix/master/updates/buildNumber.txt"; private String downloadLink = "https://raw.githubusercontent.com/Seil0/Project-HomeFlix/master/updates/downloadLink.txt"; @@ -198,7 +201,6 @@ public class MainWindowController { private String errorPlay; private String errorOpenStream; private String errorMode; - @SuppressWarnings("unused") private String errorLoad; private String errorSave; String noFilmFound; @@ -215,6 +217,7 @@ public class MainWindowController { private String mode; @SuppressWarnings("unused") private String ratingSortType; + private String local; String title; String year; String rating; @@ -235,14 +238,12 @@ public class MainWindowController { private int last; private int selected; private int next; - private int local; private File selectedFolder; private File selectedStreamingFolder; ResourceBundle bundle; private ObservableList filterData = FXCollections.observableArrayList(); - private ObservableList locals = FXCollections.observableArrayList("english", "deutsch"); - ObservableList newDaten = FXCollections.observableArrayList(); + ObservableList newData = FXCollections.observableArrayList(); ObservableList streamData = FXCollections.observableArrayList(); ObservableList streamingData = FXCollections.observableArrayList(); private ImageView menu_icon_black = new ImageView(new Image("recources/icons/menu_icon_black.png")); @@ -254,9 +255,9 @@ public class MainWindowController { private ImageView play_arrow_white = new ImageView(new Image("recources/icons/ic_play_arrow_white_18dp_1x.png")); private ImageView play_arrow_black = new ImageView(new Image("recources/icons/ic_play_arrow_black_18dp_1x.png")); private DirectoryChooser directoryChooser = new DirectoryChooser(); - private ContextMenu menu = new ContextMenu(); private MenuItem like = new MenuItem("like"); private MenuItem dislike = new MenuItem("dislike"); //TODO one option (like or dislike) + private ContextMenu menu = new ContextMenu(like, dislike); Properties props = new Properties(); private updater Updater; @@ -278,7 +279,7 @@ public class MainWindowController { if(settingstrue == true){ settingsAnchor.setVisible(false); setPath(tfPath.getText()); - saveSettings(); + saveSettings("a"); settingstrue = false; } if(streamingSettingsTrue == true){ @@ -334,7 +335,7 @@ public class MainWindowController { } }else if(mode.equals("streaming")){ try { - Desktop.getDesktop().browse(new URI(datPath)); //opens the streaming url in browser (TODO other option?) + Desktop.getDesktop().browse(new URI(datPath)); //open the streaming Url in browser (TODO other option?) } catch (URISyntaxException | IOException e) { showErrorMsg(errorOpenStream, (IOException) e); } @@ -386,7 +387,7 @@ public class MainWindowController { }else{ settingsAnchor.setVisible(false); setPath(tfPath.getText()); - saveSettings(); + saveSettings("b"); settingstrue = false; } } @@ -418,7 +419,7 @@ public class MainWindowController { setMode("local"); switchBtn.setText("streaming"); } - saveSettings(); + saveSettings("c"); root.getChildren().remove(0,root.getChildren().size()); addDataUI(); settingsAnchor.setVisible(false); @@ -438,7 +439,7 @@ public class MainWindowController { @FXML private void tfPathAction(){ setPath(tfPath.getText()); - saveSettings(); + saveSettings("d"); } @FXML @@ -448,7 +449,7 @@ public class MainWindowController { System.out.println("No Directory selected"); }else{ setPath(selectedFolder.getAbsolutePath()); - saveSettings(); + saveSettings("e"); tfPath.setText(getPath()); try { Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again @@ -478,7 +479,7 @@ public class MainWindowController { }else{ setAutoUpdate("0"); } - saveSettings(); + saveSettings("f"); } @FXML @@ -493,7 +494,7 @@ public class MainWindowController { System.out.println("No Directory selected"); }else{ setStreamingPath(selectedStreamingFolder.getAbsolutePath()); - saveSettings(); + saveSettings("g"); tfStreamingPath.setText(getStreamingPath()); try { Runtime.getRuntime().exec("java -jar ProjectHomeFlix.jar"); //start again @@ -506,54 +507,18 @@ public class MainWindowController { } - //"Main" Method called in Main.java main() when starting, initialize some UI elements + //"Main" Method called in Main.java main() when starting public void setMain(Main main) { Updater = new updater(this); ApiQuery = new apiQuery(this); - dbController = new DBController(this); - - loadSettings(); - initTabel(); - initActions(); - - System.out.println("Mode: "+mode); //TODO debugging - - //TODO implement sort for rating and alphabetical sort for name after new title was added -// if(ratingSortType == "DESCENDING"){ -// columnRating.setSortType(TreeTableColumn.SortType.DESCENDING); -// }else{ -// columnRating.setSortType(TreeTableColumn.SortType.ASCENDING); -// } - - debugBtn.setDisable(true); //debugging btn for tests - debugBtn.setVisible(false); - - tfPath.setText(getPath()); - - sliderFontSize.setValue(getSize()); - - cbLocal.setItems(locals); - menu.getItems().addAll(like,dislike); - - updateBtn.setFont(Font.font("System", 12)); - - if(autoUpdate.equals("1")){ - autoupdateBtn.setSelected(true); - Updater.update(buildURL, downloadLink, aktBuildNumber, buildNumber); - }else{ - autoupdateBtn.setSelected(false); - } - - ta1.setWrapText(true); - ta1.setEditable(false); - ta1.setFont(Font.font("System", getSize())); + dbController = new DBController(this); } //Initialize the tables (treeTableViewfilm and tableViewStreamingdata) - @SuppressWarnings({ "unchecked"}) - private void initTabel(){ + @SuppressWarnings({ "unchecked"}) //TODO + void initTabel(){ - //filmtabelle + //film Table columnRating.setMaxWidth(80); columnTitel.setMaxWidth(260); columnStreamUrl.setMaxWidth(0); @@ -577,7 +542,7 @@ public class MainWindowController { treeTableViewfilm.getColumns().addAll(columnTitel, columnRating, columnStreamUrl, columnResolution, columnYear, columnSeason, columnEpisode); treeTableViewfilm.getColumns().get(2).setVisible(false); //hide columnStreamUrl (column with file path important for the player) - //Changelistener for TreeTable + //Change-listener for TreeTable treeTableViewfilm.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldVal, Object newVal) { @@ -596,34 +561,33 @@ public class MainWindowController { //context menu for treetableview treeTableViewfilm.setContextMenu(menu); - //Streaming-Settings Tabelle + //Streaming-Settings Table dataNameColumn.setCellValueFactory(cellData -> cellData.getValue().titelProperty()); dataNameEndColumn.setCellValueFactory(cellData -> cellData.getValue().streamUrlProperty()); tableViewStreamingdata.getColumns().addAll(dataNameColumn, dataNameEndColumn); - tableViewStreamingdata.setItems(streamingData); + tableViewStreamingdata.setItems(streamingData); } //Initializing the actions - @SuppressWarnings("unchecked") - private void initActions(){ + void initActions(){ //TODO unterscheiden zwischen streaming und local tfsearch.textProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable,String oldValue, String newValue) { - int counter = newDaten.size(); + int counter = newData.size(); filterData.removeAll(filterData); root.getChildren().remove(0,root.getChildren().size()); for(int i = 0; i < counter; i++){ - if(newDaten.get(i).getTitel().toLowerCase().contains(tfsearch.getText().toLowerCase())){ - filterData.add(newDaten.get(i)); + if(newData.get(i).getTitel().toLowerCase().contains(tfsearch.getText().toLowerCase())){ + filterData.add(newData.get(i)); //add data from newDaten to filteredData where title contains search input } } for(int i = 0; i < filterData.size(); i++){ - root.getChildren().addAll(new TreeItem(filterData.get(i))); //fügt daten zur Rootnode hinzu + root.getChildren().add(new TreeItem(filterData.get(i))); //add filtered data to root node after search } if(tfsearch.getText().hashCode() == hashA){ setColor("000000"); @@ -632,12 +596,13 @@ public class MainWindowController { } }); - cbLocal.getSelectionModel().selectedIndexProperty() - .addListener(new ChangeListener() { - public void changed(ObservableValue ov, Number value, Number new_value) { - setLocal(new_value.intValue()); - setLoaclUI(local); - saveSettings(); + cbLocal.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + public void changed(ObservableValue ov, Number value, Number new_value) { + String local = cbLocal.getItems().get((int) new_value).toString(); + local = local.substring(local.length()-6,local.length()-1); + setLocal(local); + setLocalUI(); + saveSettings("h"); } }); @@ -646,7 +611,7 @@ public class MainWindowController { public void changed(ObservableValue ov,Number old_val, Number new_val) { setSize(sliderFontSize.getValue()); ta1.setFont(Font.font("System", size)); - saveSettings(); + saveSettings("i"); } }); @@ -656,7 +621,7 @@ public class MainWindowController { if(mode.equals("streaming")){ dbController.like(Name,streamData.get(selected).getStreamUrl()); }else{ - dbController.like(Name,newDaten.get(selected).getStreamUrl()); + dbController.like(Name,newData.get(selected).getStreamUrl()); } dbController.getFavStatus(Name); try { @@ -678,7 +643,7 @@ public class MainWindowController { if(mode.equals("streaming")){ dbController.dislike(Name,streamData.get(selected).getStreamUrl()); }else{ - dbController.dislike(Name,newDaten.get(selected).getStreamUrl()); + dbController.dislike(Name,newData.get(selected).getStreamUrl()); } dbController.getFavStatus(Name); try { @@ -695,9 +660,34 @@ public class MainWindowController { }); } + //initialize UI elements + void initUI(){ + System.out.println("Mode: "+mode); //TODO debugging + debugBtn.setDisable(true); //debugging button for tests + debugBtn.setVisible(false); + + tfPath.setText(getPath()); + sliderFontSize.setValue(getSize()); + mainColor.setValue(Color.valueOf(getColor())); + + updateBtn.setFont(Font.font("System", 12)); + + //TODO rework! + if(autoUpdate.equals("1")){ + autoupdateBtn.setSelected(true); + Updater.update(buildURL, downloadLink, aktBuildNumber, buildNumber); + }else{ + autoupdateBtn.setSelected(false); + } + + ta1.setWrapText(true); + ta1.setEditable(false); + ta1.setFont(Font.font("System", getSize())); + } + private void refreshTable(){ if(mode.equals("local")){ - root.getChildren().set(selected, new TreeItem(newDaten.get(selected))); + root.getChildren().set(selected, new TreeItem(newData.get(selected))); }else if(mode.equals("streaming")){ root.getChildren().set(selected, new TreeItem(streamData.get(selected))); } @@ -705,8 +695,8 @@ public class MainWindowController { void addDataUI(){ if(mode.equals("local")){ - for(int i = 0; i < newDaten.size(); i++){ - root.getChildren().add(new TreeItem(newDaten.get(i))); //add data to root-node + for(int i = 0; i < newData.size(); i++){ + root.getChildren().add(new TreeItem(newData.get(i))); //add data to root-node } columnRating.setMaxWidth(90); columnTitel.setMaxWidth(290); @@ -748,7 +738,7 @@ public class MainWindowController { } } } - //entfernt die Endung vom String + //removes the ending private String ohneEndung (String str) { if (str == null) return null; int pos = str.lastIndexOf("."); @@ -756,7 +746,7 @@ public class MainWindowController { return str.substring(0, pos); } - //setzt die Farben für die UI-Elemente + //set color of UI-Elements void applyColor(){ String style = "-fx-background-color: #"+getColor()+";"; String btnStyleBlack = "-fx-button-type: RAISED; -fx-background-color: #"+getColor()+"; -fx-text-fill: BLACK;"; @@ -805,7 +795,6 @@ public class MainWindowController { menubtn.setGraphic(menu_icon_black); } - //das solte weg kann aber hier bleiben wicht ist dass es zum selben zeitpunkt wie aply color ausgeführt wird if(mode.equals("local")){ switchBtn.setText("streaming"); }else if(mode.equals("streaming")){ @@ -845,14 +834,20 @@ public class MainWindowController { parallelTransition.play(); } - public void setLoaclUI(int local){ - switch(local){ - case 0: bundle = ResourceBundle.getBundle("recources.HomeFlix-Local", Locale.US); //us_english - break; - case 1: bundle = ResourceBundle.getBundle("recources.HomeFlix-Local", Locale.GERMAN); //german - break; - default:bundle = ResourceBundle.getBundle("recources.HomeFlix-Local", Locale.US); //default local - break; + public void setLocalUI(){ + switch(getLocal()){ + case "en_US": + bundle = ResourceBundle.getBundle("recources.HomeFlix-Local", Locale.US); //us_english + cbLocal.getSelectionModel().select(0); + break; + case "de_DE": + bundle = ResourceBundle.getBundle("recources.HomeFlix-Local", Locale.GERMAN); //German + cbLocal.getSelectionModel().select(1); + break; + default: + bundle = ResourceBundle.getBundle("recources.HomeFlix-Local", Locale.US); //default local + cbLocal.getSelectionModel().select(0); + break; } infoBtn.setText(bundle.getString("info")); settingsBtn.setText(bundle.getString("settings")); @@ -937,14 +932,15 @@ public class MainWindowController { } //saves the Settings - public void saveSettings(){ - OutputStream outputStream; //new outputstream + public void saveSettings(String a){ + System.out.println("saving, "+a); + OutputStream outputStream; //new output-stream try { props.setProperty("path", getPath()); //writes path into property props.setProperty("color", getColor()); props.setProperty("autoUpdate", getAutoUpdate()); props.setProperty("size", getSize().toString()); - props.setProperty("local", Integer.toString(getLocal())); + props.setProperty("local", getLocal()); props.setProperty("streamingPath", getStreamingPath()); props.setProperty("mode", getMode()); props.setProperty("ratingSortType", columnRating.getSortType().toString()); @@ -956,13 +952,16 @@ public class MainWindowController { props.storeToXML(outputStream, "Project HomeFlix settings"); //writes new .xml outputStream.close(); } catch (IOException e) { - showErrorMsg(errorSave, e); - e.printStackTrace(); + if(firststart == false){ + showErrorMsg(errorLoad, e); + e.printStackTrace(); + } } } //loads the Settings public void loadSettings(){ + System.out.println("loading settings ..."); InputStream inputStream; try { if(System.getProperty("os.name").equals("Linux")){ @@ -970,28 +969,31 @@ public class MainWindowController { }else{ inputStream = new FileInputStream(fileWin); } - props.loadFromXML(inputStream); //new inputstream from .xml + props.loadFromXML(inputStream); //new input-stream from .xml path = props.getProperty("path"); //reads path from property streamingPath = props.getProperty("streamingPath"); color = props.getProperty("color"); size = Double.parseDouble(props.getProperty("size")); autoUpdate = props.getProperty("autoUpdate"); - local = Integer.parseInt(props.getProperty("local")); + local = props.getProperty("local"); mode = props.getProperty("mode"); ratingSortType = props.getProperty("ratingSortType"); inputStream.close(); } catch (IOException e) { + if(firststart == false){ + showErrorMsg(errorSave, e); + e.printStackTrace(); + } // showErrorMsg(errorLoad, e); //TODO das soll beim ersten start nicht erscheinen - e.printStackTrace(); } } - //cuts 0x of the Colorpickers return value + //cuts 0x of the Color-pickers return value private void editColor(String input){ StringBuilder sb = new StringBuilder(input); sb.delete(0, 2); this.color = sb.toString(); - saveSettings(); + saveSettings("j"); } //getter and setter @@ -1035,11 +1037,11 @@ public class MainWindowController { return autoUpdate; } - public void setLocal(int input){ + public void setLocal(String input){ this.local = input; } - public int getLocal(){ + public String getLocal(){ return local; } diff --git a/src/application/apiQuery.java b/src/application/apiQuery.java index a78ea07..a6eb0b6 100644 --- a/src/application/apiQuery.java +++ b/src/application/apiQuery.java @@ -25,7 +25,7 @@ public class apiQuery{ private MainWindowController mainWindowController; private Image im; - @SuppressWarnings("deprecation") + @SuppressWarnings("deprecation") //TODO void startQuery(String input){ URL url = null; Scanner sc = null; diff --git a/src/application/streamUiData.java b/src/application/streamUiData.java index 8f801c5..c4c4d97 100644 --- a/src/application/streamUiData.java +++ b/src/application/streamUiData.java @@ -16,7 +16,7 @@ public class streamUiData { private final IntegerProperty episode = new SimpleIntegerProperty(); private final DoubleProperty rating = new SimpleDoubleProperty(); private final StringProperty resolution = new SimpleStringProperty(); - private final StringProperty titel = new SimpleStringProperty(); + final StringProperty titel = new SimpleStringProperty(); private final StringProperty streamUrl = new SimpleStringProperty(); private final SimpleObjectProperty image = new SimpleObjectProperty<>();