diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index c0d90bddc..119ac2538 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -52,7 +52,6 @@ class MainFragment : private val navModel: NavigationViewModel by activityViewModels() private var callback: DynamicBackPressedCallback? = null private var lastInsets: WindowInsets? = null - private var keepPlaybackSheetHidden = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt index 5e4a50650..d6f72ae03 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt @@ -69,10 +69,10 @@ class AlbumDetailFragment : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) } override fun onCreateBinding(inflater: LayoutInflater) = FragmentDetailBinding.inflate(inflater) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt index f39244d3a..2b99446a5 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt @@ -64,10 +64,10 @@ class ArtistDetailFragment : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) } override fun onCreateBinding(inflater: LayoutInflater) = FragmentDetailBinding.inflate(inflater) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt index ac699c62a..22b8ad5c8 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt @@ -65,10 +65,10 @@ class GenreDetailFragment : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) } override fun onCreateBinding(inflater: LayoutInflater) = FragmentDetailBinding.inflate(inflater) diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index 178520663..63156e338 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -35,6 +35,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayoutMediator +import com.google.android.material.transition.MaterialFadeThrough import com.google.android.material.transition.MaterialSharedAxis import java.lang.reflect.Field import kotlin.math.abs @@ -44,12 +45,7 @@ import org.oxycblt.auxio.home.list.AlbumListFragment import org.oxycblt.auxio.home.list.ArtistListFragment import org.oxycblt.auxio.home.list.GenreListFragment import org.oxycblt.auxio.home.list.SongListFragment -import org.oxycblt.auxio.music.Album -import org.oxycblt.auxio.music.Artist -import org.oxycblt.auxio.music.Genre -import org.oxycblt.auxio.music.Music -import org.oxycblt.auxio.music.MusicViewModel -import org.oxycblt.auxio.music.Song +import org.oxycblt.auxio.music.* import org.oxycblt.auxio.music.system.Indexer import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.ui.DisplayMode @@ -57,15 +53,7 @@ import org.oxycblt.auxio.ui.MainNavigationAction import org.oxycblt.auxio.ui.NavigationViewModel import org.oxycblt.auxio.ui.Sort import org.oxycblt.auxio.ui.fragment.ViewBindingFragment -import org.oxycblt.auxio.util.androidActivityViewModels -import org.oxycblt.auxio.util.collect -import org.oxycblt.auxio.util.collectImmediately -import org.oxycblt.auxio.util.getColorStateListSafe -import org.oxycblt.auxio.util.lazyReflectedField -import org.oxycblt.auxio.util.logD -import org.oxycblt.auxio.util.logE -import org.oxycblt.auxio.util.logTraceOrThrow -import org.oxycblt.auxio.util.textSafe +import org.oxycblt.auxio.util.* /** * The main "Launching Point" fragment of Auxio, allowing navigation to the detail views for each @@ -157,8 +145,11 @@ class HomeFragment : ViewBindingFragment(), Toolbar.OnMenuI when (item.itemId) { R.id.action_search -> { logD("Navigating to search") - exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + // Search has no contextual relation to home, use fade transitions + enterTransition = MaterialFadeThrough() + returnTransition = MaterialFadeThrough() + exitTransition = MaterialFadeThrough() + reenterTransition = MaterialFadeThrough() findNavController().navigate(HomeFragmentDirections.actionShowSearch()) } R.id.action_settings -> { @@ -346,29 +337,21 @@ class HomeFragment : ViewBindingFragment(), Toolbar.OnMenuI } private fun handleNavigation(item: Music?) { - when (item) { - is Song -> { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) - findNavController().navigate(HomeFragmentDirections.actionShowAlbum(item.album.id)) + val action = + when (item) { + is Song -> HomeFragmentDirections.actionShowAlbum(item.album.id) + is Album -> HomeFragmentDirections.actionShowAlbum(item.id) + is Artist -> HomeFragmentDirections.actionShowArtist(item.id) + is Genre -> HomeFragmentDirections.actionShowGenre(item.id) + else -> return } - is Album -> { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) - findNavController().navigate(HomeFragmentDirections.actionShowAlbum(item.id)) - } - is Artist -> { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) - findNavController().navigate(HomeFragmentDirections.actionShowArtist(item.id)) - } - is Genre -> { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) - findNavController().navigate(HomeFragmentDirections.actionShowGenre(item.id)) - } - else -> {} - } + + enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) + + findNavController().navigate(action) } /** diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt index 0f44fe934..1e9dce104 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt @@ -36,8 +36,6 @@ import org.oxycblt.auxio.util.logD * * TODO: Test older versions * - * TODO: Test restoration and song loss - * * @author OxygenCobalt */ class QueueFragment : ViewBindingFragment(), QueueItemListener { diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index d3213b02e..65c1a401f 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -28,6 +28,7 @@ import androidx.core.view.postDelayed import androidx.core.widget.addTextChangedListener import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController +import com.google.android.material.transition.MaterialFadeThrough import com.google.android.material.transition.MaterialSharedAxis import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentSearchBinding @@ -69,10 +70,10 @@ class SearchFragment : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, /* forward= */ true) - returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, /* forward= */ false) - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ true) - reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ false) + enterTransition = MaterialFadeThrough() + returnTransition = MaterialFadeThrough() + exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true) + reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) } override fun onCreateBinding(inflater: LayoutInflater) = FragmentSearchBinding.inflate(inflater)