Develop #1

Merged
MehrdadShirvani merged 5 commits from develop into main 2026-07-10 16:05:40 +00:00
Showing only changes of commit d0739af98a - Show all commits
+49 -39
View File
@@ -19,7 +19,8 @@ public class MusicController {
@FXML private ListView<String> lvSongs;
@FXML private Label lblStatus;
@FXML private Button btnPlayStop;
@FXML private Button btnViewPlaylist;
private int previousSongIndex = -1;
private MediaPlayer mediaPlayer;
@@ -41,7 +42,7 @@ public class MusicController {
String songName = "";
if (a == 0) songName = "Arcade";
else if (a == 1) songName = "How i love you";
else if (a == 2) songName = "Memmories";
else if (a == 2) songName = "Memories";
else if (a == 3) songName = "Night Changes";
else songName = "Careless Whisper";
@@ -52,65 +53,74 @@ public class MusicController {
public void handlePlayAction()
{
String selectedSong = lvSongs.getSelectionModel().getSelectedItem();
int newSongIndex = lvSongs.getSelectionModel().getSelectedIndex();
boolean isNewSong = (newSongIndex != previousSongIndex);
if (selectedSong == null)
{
lblStatus.setText("Please choose a song");
return;
}
String filePath = "src/main/resources/sbu.javafx/songs/" + songName(lvSongs.getSelectionModel().getSelectedIndex()) + ".mp3";
File file = new File(filePath);
if (isNewSong)
{
if (mediaPlayer != null)
{
mediaPlayer.dispose();
mediaPlayer = null;
}
boolean isPlayingOrPaused = (mediaPlayer != null &&
(mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING ||
mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED));
String filePath = "src/main/resources/sbu/javafx/songs/" + songName(lvSongs.getSelectionModel().getSelectedIndex()) + ".mp3";
File file = new File(filePath);
if (isPlayingOrPaused)
try {
Media media = new Media(file.toURI().toString());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.setOnEndOfMedia(new Runnable() {
@Override
public void run() {
mediaPlayer.stop();
btnPlayStop.setText("Play ▶");
lblStatus.setText("Finished");
}
});
mediaPlayer.play();
btnPlayStop.setText("Paused ⏸");
lblStatus.setText("Playing : " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
previousSongIndex = newSongIndex;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
else
{
if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING)
{
mediaPlayer.pause();
btnPlayStop.setText("Paused ⏸");
lblStatus.setText("Playing : " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
return;
btnPlayStop.setText("Play ▶");
lblStatus.setText("Paused");
}
else if (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED)
{
mediaPlayer.play();
btnPlayStop.setText("Play ▶");
lblStatus.setText("Paused");
return;
btnPlayStop.setText("Pause ⏸");
lblStatus.setText("Playing: " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
}
else
{
mediaPlayer.play();
btnPlayStop.setText("Pause ⏸");
lblStatus.setText("Playing: " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
}
}
if (mediaPlayer != null)
{
mediaPlayer.dispose();
mediaPlayer = null;
}
try {
Media media = new Media(file.toURI().toString());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.setOnEndOfMedia(new Runnable() {
@Override
public void run() {
mediaPlayer.stop();
btnPlayStop.setText("Play ▶");
}
});
mediaPlayer.play();
btnPlayStop.setText("Paused ⏸");
lblStatus.setText("Playing : " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//TODO: Logic to add a specific song to the user's playlist.
@FXML
public void addToPlaylist()
{
String selectedSong = lvSongs.getSelectionModel().getSelectedItem();