Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/java/org/example/DatabaseInitializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,12 @@ public void init() {
}

if (!playlistRepo.existsByUniqueId(1L)) { // Finns det en playlist borde det vara "Bibliotek"
Playlist library = playlistRepo.createPlaylist("Bibliotek");
Playlist library = playlistRepo.createPlaylist("Library");
playlistRepo.addSongs(library, songRepo.findAll());
//Lägger bara till låtar som fanns innan listan, om fler "laddas ner" behövs de manuellt läggas till
}
if (!playlistRepo.existsByUniqueId(2L)) { // Finns det två playlist borde den andra vara "Favoriter"
playlistRepo.createPlaylist("Favoriter");
playlistRepo.createPlaylist("Favorites");
}
}
}
52 changes: 26 additions & 26 deletions src/main/java/org/example/ItunesPlayList.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public ItunesPlayList(PlaylistRepository playlistRepository) {

// Textfält för den "digitala displayen" högst upp
private Text lcdTitle = new Text("myTunes");
private Text lcdArtist = new Text("Välj bibliotek eller spellista");
private Text lcdArtist = new Text("Choose library or playlist");

/**
* Bygger upp hela gränssnittet och visar fönstret.
Expand Down Expand Up @@ -89,7 +89,7 @@ public void showLibrary() {

// Sökfältet
TextField searchField = new TextField();
searchField.setPromptText("Sök...");
searchField.setPromptText("Search...");
searchField.getStyleClass().add("itunes-search");

// Lyssnare: När texten ändras i sökfältet, kör metoden filterSongs()
Expand Down Expand Up @@ -125,7 +125,7 @@ protected void updateItem(Playlist playlist, boolean empty) {

ContextMenu contextMenu = new ContextMenu();

MenuItem renameItem = new MenuItem("Byt Namn");
MenuItem renameItem = new MenuItem("Change name");
renameItem.setOnAction(event -> {
Playlist selected = cell.getItem();
if (selected != null) {
Expand All @@ -135,7 +135,7 @@ protected void updateItem(Playlist playlist, boolean empty) {

});

MenuItem deleteItem = new MenuItem("Ta Bort");
MenuItem deleteItem = new MenuItem("Remove");
deleteItem.setOnAction(event -> {
Playlist selected = cell.getItem();
if (selected != null) {
Expand Down Expand Up @@ -184,8 +184,8 @@ protected void updateItem(Playlist playlist, boolean empty) {
btnAddList.getStyleClass().add("list-control-button");
Button btnDeleteList = new Button("-");
btnDeleteList.getStyleClass().add("list-control-button");
Button btnMoveToPlaylist = new Button("Lägg till Låt i spellista");
Button btnRemoveSong = new Button("Ta bort låt från lista");
Button btnMoveToPlaylist = new Button("Add song to playlist");
Button btnRemoveSong = new Button("Remove song from playlist");

// Koppla knapparna till metoder
btnAddList.setOnAction(e -> createNewPlaylist());
Expand Down Expand Up @@ -248,14 +248,14 @@ private Button createRoundButton(String icon) {
*/
private void setupTable() {
// Skapa kolumner
TableColumn<Song, String> titleCol = new TableColumn<>("Namn");
TableColumn<Song, String> titleCol = new TableColumn<>("Name");
// Berätta för kolumnen vilket fält i DisplaySong den ska läsa från (name)
titleCol.setCellValueFactory(d -> {
Song s = d.getValue();
if (s.getName() != null) {
return new SimpleStringProperty(s.getName());
}
return new SimpleStringProperty("Okänd titel");
return new SimpleStringProperty("Unknown title");
});

TableColumn<Song, String> artistCol = new TableColumn<>("Artist");
Expand All @@ -264,7 +264,7 @@ private void setupTable() {
if (s.getAlbum() != null && s.getAlbum().getArtist() != null && s.getAlbum().getArtist().getName() != null) {
return new SimpleStringProperty(s.getAlbum().getArtist().getName());
}
return new SimpleStringProperty("Okänd artist");
return new SimpleStringProperty("Unknown artist");
});

TableColumn<Song, String> albumCol = new TableColumn<>("Album");
Expand All @@ -273,16 +273,16 @@ private void setupTable() {
if (s.getAlbum() != null && s.getAlbum().getName() != null) {
return new SimpleStringProperty(s.getAlbum().getName());
}
return new SimpleStringProperty("Okänt album");
return new SimpleStringProperty("Unknown album");
});

TableColumn<Song, String> timeCol = new TableColumn<>("Längd");
TableColumn<Song, String> timeCol = new TableColumn<>("Time");
timeCol.setCellValueFactory(d -> {
Song s = d.getValue();
if (s.getFormattedLength() != null) {
return new SimpleStringProperty(s.getFormattedLength());
}
return new SimpleStringProperty("Okänd längd");
return new SimpleStringProperty("Unknown time");
});

songTable.getColumns().setAll(titleCol, artistCol, albumCol, timeCol);
Expand All @@ -295,7 +295,7 @@ private void setupTable() {
songTable.getSelectionModel().selectedItemProperty().addListener((obs, old, newVal) -> {
if (newVal != null) {
lcdTitle.setText(newVal.getName());
String artistName = "Okänd artist";
String artistName = "Unknown artist";
if (newVal.getAlbum() != null && newVal.getAlbum().getArtist() != null && newVal.getAlbum().getArtist().getName() != null) {
artistName = newVal.getAlbum().getArtist().getName();
}
Expand All @@ -314,8 +314,8 @@ private void setupTable() {
}
});

Menu addSongSubMenu = new Menu("Lägg till i spellistan");
MenuItem removeSongItem = new MenuItem("Ta bort från Spellistan");
Menu addSongSubMenu = new Menu("Add to playlist");
MenuItem removeSongItem = new MenuItem("Remove from playlist");

removeSongItem.setOnAction(e -> {
removeSelectedSong();
Expand All @@ -339,15 +339,15 @@ private void setupTable() {
pl.getSongs().add(selectedSong);
}
} catch (IllegalStateException ex) {
new Alert(Alert.AlertType.ERROR, "Kunde inte lägga till låten: " + ex.getMessage()).showAndWait();
new Alert(Alert.AlertType.ERROR, "Failed to add song: " + ex.getMessage()).showAndWait();
}
});
addSongSubMenu.getItems().add(playListItem);
}
}

if (addSongSubMenu.getItems().isEmpty()) {
MenuItem emptyItem = new MenuItem("Inga spellistor tillgängliga");
MenuItem emptyItem = new MenuItem("No playlists available");
emptyItem.setDisable(true);
addSongSubMenu.getItems().add(emptyItem);
}
Expand Down Expand Up @@ -409,11 +409,11 @@ private void filterSongs(String searchText) {
* Visar en dialogruta för att skapa en ny spellista.
*/
private void createNewPlaylist() {
TextInputDialog d = new TextInputDialog("Ny lista");
TextInputDialog d = new TextInputDialog("New playlist");
// Här ändrar du fönstrets titel och text
d.setTitle("Skapa ny spellista"); // Ersätter "Bekräftelse"
d.setHeaderText("Ange namn på spellista"); // Rubriken inuti rutan
d.setContentText("Namn:"); // Texten bredvid inmatningsfältet
d.setTitle("Create new playlist"); // Ersätter "Bekräftelse"
d.setHeaderText("Enter playlist name"); // Rubriken inuti rutan
d.setContentText("Name:"); // Texten bredvid inmatningsfältet

d.showAndWait().ifPresent(name -> {
if (!name.trim().isEmpty()) {
Expand All @@ -434,10 +434,10 @@ private void renameSelectedPlaylist() {
return;
}

TextInputDialog d = new TextInputDialog("Ändra namn");
d.setTitle("Byt namn på spellista");
d.setHeaderText("Ändra namn på spellistan");
d.setContentText("Nytt namn:");
TextInputDialog d = new TextInputDialog("Rename");
d.setTitle("Rename playlist");
d.setHeaderText("Rename playlist");
d.setContentText("New name:");

d.showAndWait().ifPresent(newName -> {
if (!newName.trim().isEmpty()) {
Expand All @@ -446,7 +446,7 @@ private void renameSelectedPlaylist() {
sel.setName(newName);
sourceList.refresh();
} catch (IllegalStateException ex) {
new Alert(Alert.AlertType.ERROR, "Kunde inte byta namn: " + ex.getMessage()).showAndWait();
new Alert(Alert.AlertType.ERROR, "Failed to rename: " + ex.getMessage()).showAndWait();
}
}
refresh();
Expand Down
34 changes: 31 additions & 3 deletions src/main/java/org/example/MyPod.java
Original file line number Diff line number Diff line change
Expand Up @@ -217,13 +217,41 @@ private StackPane createClickWheel() {
Label rew = new Label("⏮");
rew.getStyleClass().add("wheel-text");
rew.setId("rew-button");
Label play = new Label("▶");
play.getStyleClass().add("wheel-text-play");
/// NY KOD ////////////////////////////////////////////
// --- NY PLAY/PAUSE-FUNKTION ---
Label playPauseLabel = new Label("▶/⏸");
playPauseLabel.getStyleClass().add("wheel-text-play");

wheel.getChildren().addAll(outerWheel, centerButton, menu, ff, rew, play);
playPauseLabel.setFocusTraversable(true);

playPauseLabel.setOnMouseClicked(e ->
playPauseFunction());

playPauseLabel.setOnKeyPressed(e ->{
if (e.getCode() == KeyCode.SPACE) {
playPauseFunction();
}
});

wheel.getChildren().addAll(outerWheel, centerButton, menu, ff, rew, playPauseLabel);
return wheel;
}

private void playPauseFunction(){
if(mediaPlayer != null) {
if(mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING) {
mediaPlayer.pause();

} else {
mediaPlayer.play();

}
}

}



/**
* Hanterar tangentbordsnavigering (Upp, Ner, Enter, Escape).
*/
Expand Down