Edit Songs
This commit is contained in:
parent
cf9b66b648
commit
d9b59ba07c
@ -10,7 +10,7 @@ import java.util.Objects;
|
|||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public class Song {
|
public class Song {
|
||||||
@PrimaryKey
|
@PrimaryKey(autoGenerate = true)
|
||||||
private int localID;
|
private int localID;
|
||||||
|
|
||||||
private String serverID;
|
private String serverID;
|
||||||
|
@ -112,7 +112,10 @@ public class HomeFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onEditSong(Song song) {
|
public void onEditSong(Song song) {
|
||||||
|
SongEditorDialog songEditorDialog = new SongEditorDialog();
|
||||||
|
songEditorDialog.setEditedSong(song);
|
||||||
|
songEditorDialog.setHomeViewModel(homeViewModel);
|
||||||
|
songEditorDialog.show(getParentFragmentManager(), "songEditorDialog");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDeleteSong(Song song) {
|
public void onDeleteSong(Song song) {
|
||||||
|
@ -63,4 +63,18 @@ public class HomeViewModel extends ViewModel {
|
|||||||
allSongs.setValue(currentSongs);
|
allSongs.setValue(currentSongs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateSong(Song editedSong) {
|
||||||
|
List<Song> currentSongs = allSongs.getValue();
|
||||||
|
if(currentSongs != null) {
|
||||||
|
for(int i = 0; i < currentSongs.size(); i++) {
|
||||||
|
if(currentSongs.get(i).getLocalID() == editedSong.getLocalID()) {
|
||||||
|
currentSongs.set(i, editedSong);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
songRepository.updateSong(editedSong);
|
||||||
|
allSongs.setValue(currentSongs);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -17,6 +17,7 @@ import android.view.ViewGroup;
|
|||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import com.stormtales.notevault.R;
|
import com.stormtales.notevault.R;
|
||||||
import com.stormtales.notevault.data.entities.Song;
|
import com.stormtales.notevault.data.entities.Song;
|
||||||
|
import com.stormtales.notevault.data.sync.SyncStatus;
|
||||||
import com.stormtales.notevault.ui.home.HomeViewModel;
|
import com.stormtales.notevault.ui.home.HomeViewModel;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -27,6 +28,8 @@ public class SongEditorDialog extends DialogFragment {
|
|||||||
private Uri[] noteSheetFiles;
|
private Uri[] noteSheetFiles;
|
||||||
private HomeViewModel homeViewModel;
|
private HomeViewModel homeViewModel;
|
||||||
|
|
||||||
|
private Song editedSong;
|
||||||
|
|
||||||
public SongEditorDialog() {
|
public SongEditorDialog() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
@ -38,6 +41,8 @@ public class SongEditorDialog extends DialogFragment {
|
|||||||
LayoutInflater inflater = LayoutInflater.from(getContext());
|
LayoutInflater inflater = LayoutInflater.from(getContext());
|
||||||
View dialogView = inflater.inflate(R.layout.fragment_song_editor_dialog, null);
|
View dialogView = inflater.inflate(R.layout.fragment_song_editor_dialog, null);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dialogView.findViewById(R.id.btnCancel).setOnClickListener(v-> onCancel());
|
dialogView.findViewById(R.id.btnCancel).setOnClickListener(v-> onCancel());
|
||||||
dialogView.findViewById(R.id.btnSave).setOnClickListener(v -> onSave());
|
dialogView.findViewById(R.id.btnSave).setOnClickListener(v -> onSave());
|
||||||
|
|
||||||
@ -47,9 +52,22 @@ public class SongEditorDialog extends DialogFragment {
|
|||||||
|
|
||||||
dialog = builder.create();
|
dialog = builder.create();
|
||||||
dialog.setCanceledOnTouchOutside(false);
|
dialog.setCanceledOnTouchOutside(false);
|
||||||
|
|
||||||
|
|
||||||
return dialog;
|
return dialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
if(editedSong != null) {
|
||||||
|
((EditText) dialog.findViewById(R.id.etTitle)).setText(editedSong.getTitle());
|
||||||
|
((EditText) dialog.findViewById(R.id.etComposer)).setText(editedSong.getComposer());
|
||||||
|
((EditText) dialog.findViewById(R.id.etGenre)).setText(editedSong.getGenre());
|
||||||
|
((EditText) dialog.findViewById(R.id.etYear)).setText(String.valueOf(editedSong.getYear()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void onCancel() {
|
private void onCancel() {
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
}
|
}
|
||||||
@ -62,8 +80,17 @@ public class SongEditorDialog extends DialogFragment {
|
|||||||
int releaseYear = year_string.isBlank()? 0 : Integer.parseInt(year_string);
|
int releaseYear = year_string.isBlank()? 0 : Integer.parseInt(year_string);
|
||||||
String genre = ((EditText) dialog.findViewById(R.id.etGenre)).getText().toString();
|
String genre = ((EditText) dialog.findViewById(R.id.etGenre)).getText().toString();
|
||||||
|
|
||||||
|
if(editedSong != null) {
|
||||||
|
editedSong.setTitle(title);
|
||||||
|
editedSong.setComposer(composer);
|
||||||
|
editedSong.setYear(releaseYear);
|
||||||
|
editedSong.setGenre(genre);
|
||||||
|
editedSong.setSyncStatus(SyncStatus.MODIFIED);
|
||||||
|
homeViewModel.updateSong(editedSong);
|
||||||
|
} else {
|
||||||
Song song = new Song(title, composer, genre, releaseYear);
|
Song song = new Song(title, composer, genre, releaseYear);
|
||||||
homeViewModel.addSong(song);
|
homeViewModel.addSong(song);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
@ -77,4 +104,8 @@ public class SongEditorDialog extends DialogFragment {
|
|||||||
public void setHomeViewModel(HomeViewModel homeViewModel) {
|
public void setHomeViewModel(HomeViewModel homeViewModel) {
|
||||||
this.homeViewModel = homeViewModel;
|
this.homeViewModel = homeViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setEditedSong(Song editedSong) {
|
||||||
|
this.editedSong = editedSong;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user