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 ListView<String> lvSongs;
@FXML private Label lblStatus; @FXML private Label lblStatus;
@FXML private Button btnPlayStop; @FXML private Button btnPlayStop;
@FXML private Button btnViewPlaylist;
private int previousSongIndex = -1;
private MediaPlayer mediaPlayer; private MediaPlayer mediaPlayer;
@@ -41,7 +42,7 @@ public class MusicController {
String songName = ""; String songName = "";
if (a == 0) songName = "Arcade"; if (a == 0) songName = "Arcade";
else if (a == 1) songName = "How i love you"; 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 if (a == 3) songName = "Night Changes";
else songName = "Careless Whisper"; else songName = "Careless Whisper";
@@ -52,65 +53,74 @@ public class MusicController {
public void handlePlayAction() public void handlePlayAction()
{ {
String selectedSong = lvSongs.getSelectionModel().getSelectedItem(); String selectedSong = lvSongs.getSelectionModel().getSelectedItem();
int newSongIndex = lvSongs.getSelectionModel().getSelectedIndex();
boolean isNewSong = (newSongIndex != previousSongIndex);
if (selectedSong == null) if (selectedSong == null)
{ {
lblStatus.setText("Please choose a song"); lblStatus.setText("Please choose a song");
return; return;
} }
String filePath = "src/main/resources/sbu.javafx/songs/" + songName(lvSongs.getSelectionModel().getSelectedIndex()) + ".mp3"; if (isNewSong)
File file = new File(filePath); {
if (mediaPlayer != null)
{
mediaPlayer.dispose();
mediaPlayer = null;
}
boolean isPlayingOrPaused = (mediaPlayer != null && String filePath = "src/main/resources/sbu/javafx/songs/" + songName(lvSongs.getSelectionModel().getSelectedIndex()) + ".mp3";
(mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING || File file = new File(filePath);
mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED));
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) if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING)
{ {
mediaPlayer.pause(); mediaPlayer.pause();
btnPlayStop.setText("Paused ⏸"); btnPlayStop.setText("Play ▶");
lblStatus.setText("Playing : " + songName(lvSongs.getSelectionModel().getSelectedIndex())); lblStatus.setText("Paused");
return;
} }
else if (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED) else if (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED)
{ {
mediaPlayer.play(); mediaPlayer.play();
btnPlayStop.setText("Play ▶"); btnPlayStop.setText("Pause ⏸");
lblStatus.setText("Paused"); lblStatus.setText("Playing: " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
return; }
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. //TODO: Logic to add a specific song to the user's playlist.
@FXML
public void addToPlaylist() public void addToPlaylist()
{ {
String selectedSong = lvSongs.getSelectionModel().getSelectedItem(); String selectedSong = lvSongs.getSelectionModel().getSelectedItem();