2019-06-16 13:00:29 +02:00
package kellerkinder.HomeFlix.application ;
2019-06-16 21:44:42 +02:00
import java.awt.Desktop ;
import java.io.File ;
import java.io.IOException ;
import org.apache.logging.log4j.LogManager ;
import org.apache.logging.log4j.Logger ;
2019-06-16 15:23:17 +02:00
import com.jfoenix.controls.JFXButton ;
2019-06-16 21:44:42 +02:00
import javafx.animation.FadeTransition ;
2019-06-16 13:00:29 +02:00
import javafx.fxml.FXML ;
import javafx.scene.control.Label ;
2019-06-16 15:23:17 +02:00
import javafx.scene.image.Image ;
import javafx.scene.image.ImageView ;
import javafx.scene.layout.AnchorPane ;
import javafx.scene.text.Text ;
2019-06-16 21:44:42 +02:00
import javafx.util.Duration ;
import kellerkinder.HomeFlix.controller.DBController ;
import kellerkinder.HomeFlix.controller.XMLController ;
2019-06-16 13:00:29 +02:00
public class FilmDetailView {
2019-06-16 15:23:17 +02:00
@FXML private AnchorPane filmDVPane ;
2019-06-16 21:44:42 +02:00
2019-06-16 15:23:17 +02:00
@FXML private Label lblTitle ;
@FXML private Label lblYear ;
@FXML private Label lblScore ;
2019-06-16 21:44:42 +02:00
@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 ;
2019-06-16 15:23:17 +02:00
@FXML private JFXButton btnFavourite ;
2019-06-16 21:44:42 +02:00
@FXML private JFXButton btnHide ;
@FXML private JFXButton btnPlay ;
@FXML private JFXButton btnDirectory ;
@FXML private ImageView wishListIcon ;
@FXML private ImageView favoriteIcon ;
@FXML private ImageView imgPoster ;
2019-06-16 15:23:17 +02:00
@FXML private Text textPlot ;
2019-06-16 13:00:29 +02:00
2019-06-16 21:44:42 +02:00
private DBController dbController ;
private static final Logger LOGGER = LogManager . getLogger ( FilmDetailView . class . getName ( ) ) ;
private String currentStreamURL ;
2019-06-16 13:00:29 +02:00
public void initialize ( ) {
2019-06-16 21:44:42 +02:00
dbController = DBController . getInstance ( ) ;
2019-06-16 15:23:17 +02:00
filmDVPane . setStyle ( " -fx-background-color: rgba(89,89,89,0.9); " ) ;
2019-06-16 13:00:29 +02:00
}
2019-06-16 21:44:42 +02:00
@FXML
private void btnWishlistAction ( ) {
2019-06-16 13:00:29 +02:00
}
2019-06-16 15:23:17 +02:00
@FXML
2019-06-16 21:44:42 +02:00
private void btnFavouriteAction ( ) {
dbController . toggleFavoriteState ( currentStreamURL ) ;
2019-06-16 15:23:17 +02:00
2019-06-16 21:44:42 +02:00
// 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 " ) ) ;
}
2019-06-16 15:23:17 +02:00
}
@FXML
2019-06-16 21:44:42 +02:00
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 ( ) {
2019-06-16 15:23:17 +02:00
}
2019-06-16 13:00:29 +02:00
}