diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java index 665ea0cc..ee0f00a0 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicDirectoryAdapter.java @@ -76,7 +76,7 @@ public class MusicDirectoryAdapter extends RecyclerView.Adapter(children)); diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java index 5f5f1c7c..9f820c39 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/MusicIndexAdapter.java @@ -73,7 +73,7 @@ public class MusicIndexAdapter extends RecyclerView.Adapter activity.navController.navigateUp()); - - if (bind != null) - bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { - if ((bind.directoryInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { - directoryViewModel.getDirectory().observe(getViewLifecycleOwner(), directory -> { - if (directory != null) { - bind.toolbar.setTitle(directory.getName()); - } - }); - } else { - bind.toolbar.setTitle(R.string.empty_string); - } - }); - - directoryViewModel.getDirectory().observe(getViewLifecycleOwner(), directory -> { - if (directory != null) { - bind.directoryTitleLabel.setText(directory.getName()); - } - }); - } - - private void initButtons() { - directoryViewModel.getDirectory().observe(getViewLifecycleOwner(), directory -> { - if (directory != null && directory.getParentId() != null && !Objects.equals(directory.getParentId(), "-1")) { - bind.directoryBackImageView.setVisibility(View.VISIBLE); - } else { - bind.directoryBackImageView.setVisibility(View.GONE); - } - }); - - bind.directoryBackImageView.setOnClickListener(v -> directoryViewModel.goBack()); + bind.directoryBackImageView.setOnClickListener(v -> activity.navController.navigateUp()); + } } private void initDirectoryListView() { @@ -137,13 +91,18 @@ public class DirectoryFragment extends Fragment implements ClickCallback { musicDirectoryAdapter = new MusicDirectoryAdapter(this); bind.directoryRecyclerView.setAdapter(musicDirectoryAdapter); + directoryViewModel.loadMusicDirectory(getArguments().getString(Constants.MUSIC_DIRECTORY_ID)).observe(getViewLifecycleOwner(), directory -> { + bind.appBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> { + if ((bind.directoryInfoSector.getHeight() + verticalOffset) < (2 * ViewCompat.getMinimumHeight(bind.toolbar))) { + bind.toolbar.setTitle(directory.getName()); + } else { + bind.toolbar.setTitle(R.string.empty_string); + } + }); - directoryViewModel.getDirectory().observe(getViewLifecycleOwner(), directory -> { - if (directory != null) { - musicDirectoryAdapter.setItems(directory.getChildren()); - } else { - musicDirectoryAdapter.setItems(Collections.emptyList()); - } + bind.directoryTitleLabel.setText(directory.getName()); + + musicDirectoryAdapter.setItems(directory.getChildren()); }); } @@ -162,11 +121,6 @@ public class DirectoryFragment extends Fragment implements ClickCallback { @Override public void onMusicDirectoryClick(Bundle bundle) { - Child child = bundle.getParcelable(Constants.MUSIC_DIRECTORY_OBJECT); - - if (child != null) { - directoryViewModel.setMusicDirectoryId(child.getId()); - directoryViewModel.setMusicDirectoryName(child.getTitle()); - } + Navigation.findNavController(requireView()).navigate(R.id.directoryFragment, bundle); } } \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt b/app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt index f29be3da..ccb740c2 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt +++ b/app/src/main/java/com/cappielloantonio/tempo/util/Constants.kt @@ -17,6 +17,7 @@ object Constants { const val MUSIC_FOLDER_OBJECT = "MUSIC_FOLDER_OBJECT" const val MUSIC_DIRECTORY_OBJECT = "MUSIC_DIRECTORY_OBJECT" const val MUSIC_INDEX_OBJECT = "MUSIC_DIRECTORY_OBJECT" + const val MUSIC_DIRECTORY_ID = "MUSIC_DIRECTORY_ID" const val ALBUM_RECENTLY_PLAYED = "ALBUM_RECENTLY_PLAYED" const val ALBUM_MOST_PLAYED = "ALBUM_MOST_PLAYED" diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java index f4355d35..4fd7480f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/DirectoryViewModel.java @@ -4,9 +4,7 @@ import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; -import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; import com.cappielloantonio.tempo.repository.DirectoryRepository; import com.cappielloantonio.tempo.subsonic.models.Directory; @@ -14,34 +12,13 @@ import com.cappielloantonio.tempo.subsonic.models.Directory; public class DirectoryViewModel extends AndroidViewModel { private final DirectoryRepository directoryRepository; - private MutableLiveData id = new MutableLiveData<>(null); - private MutableLiveData name = new MutableLiveData<>(null); - - private MutableLiveData directory = new MutableLiveData<>(null); - public DirectoryViewModel(@NonNull Application application) { super(application); directoryRepository = new DirectoryRepository(); } - public LiveData getDirectory() { - return directory; - } - - public void setMusicDirectoryId(String id) { - this.id.setValue(id); - } - - public void setMusicDirectoryName(String name) { - this.name.setValue(name); - } - - public void loadMusicDirectory(LifecycleOwner owner) { - this.id.observe(owner, id -> directoryRepository.getMusicDirectory(id).observe(owner, directory -> this.directory.setValue(directory))); - } - - public void goBack() { - this.id.setValue(this.directory.getValue().getParentId()); + public LiveData loadMusicDirectory(String id) { + return directoryRepository.getMusicDirectory(id); } } diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index fd63c731..4623d084 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -286,13 +286,16 @@ android:id="@+id/directoryFragment" android:name="com.cappielloantonio.tempo.ui.fragment.DirectoryFragment" android:label="DirectoryFragment" - tools:layout="@layout/fragment_directory" /> + tools:layout="@layout/fragment_directory"> + + -