diff --git a/AuxioTODO b/AuxioTODO index 848b95fe8..47a74a41d 100644 --- a/AuxioTODO +++ b/AuxioTODO @@ -24,18 +24,13 @@ TODOs surrounded with !s are things I tried to do, but failed for reasons includ /library/ - Exit functionality -- ? Remove gap from where I removed the overflow menu ? - ? Add icons to overflow menu items ? -- ? Implement filtering for search [Will resolve gap issue] ? -- ? Move into ViewPager ? +- ? Add Nested Nav to Library ViewPager fragment [Hold fire on this until everything else is added, there could be sneaky bugs later on if you add it now] ? - ! Move Adapter functionality to ListAdapter [RecyclerView scrolls to middle/bottom when data is re-sorted] ! /bugs/ - Fix issue where fast navigations will cause the app to not display anything -/other/ -- Standardize fragment init - To be added: /prefs/ /playback/ \ No newline at end of file diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index 31d8f486a..efac9d8a8 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -5,7 +5,6 @@ import android.os.Bundle import android.util.AttributeSet import android.view.View import androidx.appcompat.app.AppCompatActivity -import androidx.core.app.ActivityCompat import org.oxycblt.auxio.theme.accent class MainActivity : AppCompatActivity() { @@ -19,7 +18,6 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - ActivityCompat.postponeEnterTransition(this) setContentView(R.layout.activity_main) } } diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index 70ff7e692..a0ce81261 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -7,11 +7,14 @@ import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController import androidx.viewpager2.adapter.FragmentStateAdapter import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import org.oxycblt.auxio.databinding.FragmentMainBinding import org.oxycblt.auxio.library.LibraryFragment +import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.songs.SongsFragment import org.oxycblt.auxio.theme.accent import org.oxycblt.auxio.theme.getInactiveAlpha @@ -19,6 +22,10 @@ import org.oxycblt.auxio.theme.getTransparentAccent import org.oxycblt.auxio.theme.toColor class MainFragment : Fragment() { + private val musicModel: MusicViewModel by activityViewModels { + MusicViewModel.Factory(requireActivity().application) + } + private val shownFragments = listOf(0, 1) private val tabIcons = listOf( @@ -33,6 +40,14 @@ class MainFragment : Fragment() { ): View? { val binding = FragmentMainBinding.inflate(inflater) + // If musicModel was cleared while the app was closed [Likely due to Auxio being suspended + // in the background], then navigate back to loading to reload the music. + if (musicModel.response.value == null) { + findNavController().navigate(MainFragmentDirections.actionReturnToLoading()) + + return null + } + val colorActive = accent.first.toColor(requireContext()) val colorInactive = getTransparentAccent( requireContext(), diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt index 52ba3f992..2d17cb16b 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt @@ -31,7 +31,10 @@ import org.oxycblt.auxio.theme.resolveAttr class LibraryFragment : Fragment(), SearchView.OnQueryTextListener { - private val musicModel: MusicViewModel by activityViewModels() + private val musicModel: MusicViewModel by activityViewModels { + MusicViewModel.Factory(requireActivity().application) + } + private val libraryModel: LibraryViewModel by activityViewModels() override fun onCreateView( diff --git a/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt b/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt index 4fb6d6e42..e8d6f3a19 100644 --- a/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/theme/ThemeUtils.kt @@ -10,6 +10,7 @@ import android.view.MenuItem import android.widget.ImageButton import androidx.annotation.AttrRes import androidx.annotation.ColorInt +import androidx.annotation.ColorRes import androidx.core.content.ContextCompat import androidx.core.graphics.ColorUtils import androidx.recyclerview.widget.DividerItemDecoration @@ -43,7 +44,7 @@ val accent = ACCENTS[5] // Get the transparent variant of a color int @ColorInt -fun getTransparentAccent(context: Context, color: Int, alpha: Int): Int { +fun getTransparentAccent(context: Context, @ColorRes color: Int, alpha: Int): Int { return ColorUtils.setAlphaComponent( ContextCompat.getColor(context, color), alpha @@ -52,7 +53,7 @@ fun getTransparentAccent(context: Context, color: Int, alpha: Int): Int { // Get the inactive transparency of an accent @ColorInt -fun getInactiveAlpha(color: Int): Int { +fun getInactiveAlpha(@ColorRes color: Int): Int { return if (color == R.color.yellow) 100 else 150 } @@ -86,13 +87,14 @@ fun resolveAttr(context: Context, @AttrRes attr: Int): Int { } // Apply a color to a Menu Item -fun MenuItem.applyColor(color: Int) { +fun MenuItem.applyColor(@ColorRes color: Int) { SpannableString(title).apply { setSpan(ForegroundColorSpan(color), 0, length, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE) title = this } } +// Disable an ImageButton fun ImageButton.disable(context: Context) { imageTintList = ColorStateList.valueOf( R.color.inactive_color.toColor(context) diff --git a/app/src/main/res/navigation/nav_main.xml b/app/src/main/res/navigation/nav_main.xml index 2466d4f3b..e05dd25a5 100644 --- a/app/src/main/res/navigation/nav_main.xml +++ b/app/src/main/res/navigation/nav_main.xml @@ -46,6 +46,11 @@ app:popEnterAnim="@anim/fragment_fade_enter" app:popExitAnim="@anim/fragment_fade_exit" app:destination="@id/genreDetailFragment" /> +