From a68f45e7dcb94ada5c7ba8124604d6a7b3d6c54d Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Thu, 15 Apr 2021 10:37:08 +0200 Subject: [PATCH] Added sync settings in preferences --- .../play/ui/activities/MainActivity.java | 7 +++ .../play/ui/fragment/HomeFragment.java | 13 ----- .../play/ui/fragment/LibraryFragment.java | 6 +-- .../play/ui/fragment/SettingsFragment.java | 51 +++++++++++++++++++ app/src/main/res/layout/fragment_home.xml | 15 ------ app/src/main/res/navigation/nav_graph.xml | 8 ++- app/src/main/res/values/strings.xml | 13 +++++ app/src/main/res/xml/global_preferences.xml | 36 ++++++++++++- 8 files changed, 114 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/ui/activities/MainActivity.java b/app/src/main/java/com/cappielloantonio/play/ui/activities/MainActivity.java index 2b52a9a6..824d8ace 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/activities/MainActivity.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/activities/MainActivity.java @@ -226,6 +226,13 @@ public class MainActivity extends BaseActivity { } } + public void goFromSettingsToSync(Bundle bundle) { + setBottomNavigationBarVisibility(false); + setBottomSheetVisibility(false); + + navController.navigate(R.id.action_settingsFragment_to_syncFragment, bundle); + } + public void goToHome() { bottomNavigationView.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java index 6be88718..cf3935a9 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java @@ -98,19 +98,6 @@ public class HomeFragment extends Fragment { bundle.putString(Song.IS_FAVORITE, Song.IS_FAVORITE); activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle); }); - - bind.syncMusicButton.setOnClickListener(v -> { - AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); - builder.setMessage("Force reload your entire music library") - .setTitle("Force sync") - .setNegativeButton(R.string.ignore, null) - .setPositiveButton("Sync", (dialog, id) -> { - PreferenceUtil.getInstance(requireContext()).setSync(false); - PreferenceUtil.getInstance(requireContext()).setSongGenreSync(false); - activity.goToSync(); - }) - .show(); - }); } private void initDiscoverSongSlideView() { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java index d2efdbe1..7b0472eb 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java @@ -122,12 +122,8 @@ public class LibraryFragment extends Fragment { builder.setMessage("Sync song's genres otherwise nothing will be shown in each genre category") .setTitle("Song's genres not synchronized") .setNegativeButton(R.string.ignore, null) - .setPositiveButton("Sync", (dialog, id) -> syncSongsPerGenre()) + .setPositiveButton("Sync", (dialog, id) -> activity.goToSync()) .show(); } } - - private void syncSongsPerGenre() { - activity.goToSync(); - } } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java index f8fab89e..7d6be9c1 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java @@ -1,16 +1,35 @@ package com.cappielloantonio.play.ui.fragment; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.preference.ListPreference; +import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import com.cappielloantonio.play.R; import com.cappielloantonio.play.helper.ThemeHelper; +import com.cappielloantonio.play.ui.activities.MainActivity; +import com.cappielloantonio.play.util.PreferenceUtil; +import com.cappielloantonio.play.util.SyncUtil; public class SettingsFragment extends PreferenceFragmentCompat { private static final String TAG = "SettingsFragment"; + private MainActivity activity; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + activity = (MainActivity) getActivity(); + return super.onCreateView(inflater, container, savedInstanceState); + } + @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.global_preferences, rootKey); @@ -24,5 +43,37 @@ public class SettingsFragment extends PreferenceFragmentCompat { return true; }); } + + Preference music_sync_button = findPreference(getString(R.string.music_sync)); + music_sync_button.setOnPreferenceClickListener(preference -> { + AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); + builder.setMessage("Force reload your entire music library") + .setTitle("Force sync") + .setNegativeButton(R.string.ignore, null) + .setPositiveButton("Sync", (dialog, id) -> { + PreferenceUtil.getInstance(requireContext()).setSync(false); + PreferenceUtil.getInstance(requireContext()).setSongGenreSync(false); + + Bundle bundle = SyncUtil.getSyncBundle(true, true, true, true, true, false); + activity.goFromSettingsToSync(bundle); + }) + .show(); + return true; + }); + + Preference cross_sync_button = findPreference(getString(R.string.genres_music_cross_sync)); + cross_sync_button.setOnPreferenceClickListener(preference -> { + AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); + builder.setMessage("Sync song's genres otherwise nothing will be shown in each genre category") + .setTitle("Song's genres not synchronized") + .setNegativeButton(R.string.ignore, null) + .setPositiveButton("Sync", (dialog, id) -> { + Bundle bundle = SyncUtil.getSyncBundle(false, false, true, false, false, true); + activity.goFromSettingsToSync(bundle); + }) + .show(); + return true; + }); } + } diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 3f28a9a0..b5934c32 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -293,21 +293,6 @@ android:paddingEnd="8dp" android:paddingBottom="8dp" /> - - diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 56de7ec9..1e9b5a80 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -111,7 +111,13 @@ android:id="@+id/settingsFragment" android:name="com.cappielloantonio.play.ui.fragment.SettingsFragment" android:label="SettingsFragment" - tools:layout="@layout/fragment_settings"/> + tools:layout="@layout/fragment_settings"> + + -- Save filters between sessions + Synchronization + Music sync + Sync tracks, albums, artists, genres and playlists + Genres-music cross sync + Cross sync genres for each track + About + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + 1.1 + Version + Github + Follow the development + https://github.com/CappielloAntonio/Play + Battery Optimizations Please disable battery optimizations for media playback while the screen is off. diff --git a/app/src/main/res/xml/global_preferences.xml b/app/src/main/res/xml/global_preferences.xml index 9204ec7e..109adebe 100644 --- a/app/src/main/res/xml/global_preferences.xml +++ b/app/src/main/res/xml/global_preferences.xml @@ -1,4 +1,5 @@ - + + + + + + + + + + + + + + + + + + + + \ No newline at end of file