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
+36 -26
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,43 +53,26 @@ 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);
boolean isPlayingOrPaused = (mediaPlayer != null &&
(mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING ||
mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED));
if (isPlayingOrPaused)
{ {
if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING)
{
mediaPlayer.pause();
btnPlayStop.setText("Paused ⏸");
lblStatus.setText("Playing : " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
return;
}
else if (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED)
{
mediaPlayer.play();
btnPlayStop.setText("Play ▶");
lblStatus.setText("Paused");
return;
}
}
if (mediaPlayer != null) if (mediaPlayer != null)
{ {
mediaPlayer.dispose(); mediaPlayer.dispose();
mediaPlayer = null; mediaPlayer = null;
} }
String filePath = "src/main/resources/sbu/javafx/songs/" + songName(lvSongs.getSelectionModel().getSelectedIndex()) + ".mp3";
File file = new File(filePath);
try { try {
Media media = new Media(file.toURI().toString()); Media media = new Media(file.toURI().toString());
mediaPlayer = new MediaPlayer(media); mediaPlayer = new MediaPlayer(media);
@@ -98,19 +82,45 @@ public class MusicController {
public void run() { public void run() {
mediaPlayer.stop(); mediaPlayer.stop();
btnPlayStop.setText("Play ▶"); btnPlayStop.setText("Play ▶");
lblStatus.setText("Finished");
} }
}); });
mediaPlayer.play(); mediaPlayer.play();
btnPlayStop.setText("Paused ⏸"); btnPlayStop.setText("Paused ⏸");
lblStatus.setText("Playing : " + songName(lvSongs.getSelectionModel().getSelectedIndex())); lblStatus.setText("Playing : " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
previousSongIndex = newSongIndex;
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
else
{
if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING)
{
mediaPlayer.pause();
btnPlayStop.setText("Play ▶");
lblStatus.setText("Paused");
}
else if (mediaPlayer.getStatus() == MediaPlayer.Status.PAUSED)
{
mediaPlayer.play();
btnPlayStop.setText("Pause ⏸");
lblStatus.setText("Playing: " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
}
else
{
mediaPlayer.play();
btnPlayStop.setText("Pause ⏸");
lblStatus.setText("Playing: " + songName(lvSongs.getSelectionModel().getSelectedIndex()));
}
}
}
//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();