From 37ed5d2c8ff44c3bab99f161d494ca3929ae97e4 Mon Sep 17 00:00:00 2001 From: NIGUELCLARK <141190541+NIGUELCLARK@users.noreply.github.com> Date: Wed, 24 Jan 2024 00:49:33 +0100 Subject: [PATCH] Update PlaylistController.java BIGOUAWE EFFOUDOU NIGUE CLARK --- .../example/mp3app/PlaylistController.java | 153 +++++++++++++++++- 1 file changed, 150 insertions(+), 3 deletions(-) diff --git a/mp3app/src/main/java/com/example/mp3app/PlaylistController.java b/mp3app/src/main/java/com/example/mp3app/PlaylistController.java index 6c01908..9baf56f 100644 --- a/mp3app/src/main/java/com/example/mp3app/PlaylistController.java +++ b/mp3app/src/main/java/com/example/mp3app/PlaylistController.java @@ -1,11 +1,27 @@ package com.example.mp3app; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.media.Media; +import javafx.scene.media.MediaPlayer; import javafx.scene.control.*; +import javafx.stage.Stage; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.*; + + +public class PlaylistController implements Initializable { + -public class PlaylistController { @FXML private Label welcomeText; @FXML @@ -14,6 +30,11 @@ public class PlaylistController { private ProgressBar progressbar; @FXML private ButtonBar searchbar; + private Media media; + private MediaPlayer mediaPlayer; + private TimerTask task; + private Timer timer; + @FXML private Button searchbutton ,homebutton , librarybutton , playlistbutton, playbutton,Pausebutton,nextbutton ,previousbutton,shufflebutton ,newplaylistbutton , shuffleandplaybutton ; @@ -21,6 +42,43 @@ public class PlaylistController { private SplitPane split; @FXML private Slider volumeslider; + @FXML + private ArrayList songs; + @FXML + private File directory; + private File[] files; + private int songNumber; + private boolean running; + + @Override + public void initialize(URL arg0, ResourceBundle arg1){ + songs = new ArrayList<>(); + + directory = new File("src/main/java/com/example/mp3app/music"); + files = directory.listFiles(); + if(files != null){ + songs.addAll(Arrays.asList(files)); + } + + if (!songs.isEmpty() && songNumber < songs.size()) { + media = new Media(songs.get(songNumber).toURI().toString()); + // Rest of your code related to media initialization + } else { + // Handle the case when the songs list is empty or songNumber is out of bounds + System.out.println("Error: No songs available or invalid songNumber"); + } + mediaPlayer = new MediaPlayer(media); + + volumeslider.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observableValue, Number number, Number t1) { + mediaPlayer.setVolume(volumeslider.getValue() *0.01); + } + }); + + + } + @FXML protected void searchtrack (){ @@ -31,7 +89,7 @@ protected void tohome (){ } @FXML - protected void tolibrary(){ + protected void tolibrary() throws IOException { } @FXML @@ -45,26 +103,115 @@ protected void toplaylist(){ @FXML protected void playtrack(){ + beginTimer(); + mediaPlayer.play(); + mediaPlayer.setVolume(volumeslider.getValue() *0.01); } @FXML protected void pausetrack(){ - + cancelTimer(); + mediaPlayer.pause(); } @FXML protected void nexttrack(){ + if(songNumber < songs.size() - 1){ + songNumber++; + mediaPlayer.stop(); + + if(running){ + cancelTimer(); + } + + media = new Media(songs.get(songNumber).toURI().toString()); + mediaPlayer = new MediaPlayer(media); + + playtrack(); + } + else{ + songNumber = 0; + mediaPlayer.stop(); + + if(running){ + cancelTimer(); + } + + media = new Media(songs.get(songNumber).toURI().toString()); + mediaPlayer = new MediaPlayer(media); + + playtrack(); + } } @FXML protected void previoustrack(){ + if(songNumber > songs.size() - 1){ + songNumber--; + mediaPlayer.stop(); + + if(running){ + cancelTimer(); + } + + media = new Media(songs.get(songNumber).toURI().toString()); + mediaPlayer = new MediaPlayer(media); + + playtrack(); + } + else{ + songNumber = songs.size() - 1; + mediaPlayer.stop(); + if(running){ + cancelTimer(); + } + + media = new Media(songs.get(songNumber).toURI().toString()); + mediaPlayer = new MediaPlayer(media); + + playtrack(); + } + } @FXML protected void shuffletrack(){ + Collections.shuffle(songs); + } @FXML protected void createplaylist(){ } + @FXML + protected void beginTimer(){ + timer = new Timer(); + task = new TimerTask() { + @Override + public void run() { + running = true; + double current = mediaPlayer.getCurrentTime().toSeconds(); + double end = media.getDuration().toSeconds(); + progressbar.setProgress(current/end); + + if(current/end == 1){ + cancelTimer(); + } + } + }; + timer.scheduleAtFixedRate(task, 0, 1000); + + + } + @FXML + protected void cancelTimer(){ + + running = false; + timer.cancel(); + + } + + } + +///BIGOUAWE EFFOUDOU NIGUEL CLARK ICTU20223125