Change file intent to play

Change the file intent to play instead of view. I may add the view option back in at some point however if the play functionality angers me enough.
This commit is contained in:
OxygenCobalt 2021-02-19 14:46:00 -07:00
parent 2dfd916736
commit ca4cabedbc
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
3 changed files with 23 additions and 18 deletions

View file

@ -111,8 +111,6 @@ class MainFragment : Fragment() {
} }
} }
playbackModel.restorePlaybackIfNeeded(requireContext())
logD("Fragment Created.") logD("Fragment Created.")
return binding.root return binding.root
@ -121,11 +119,17 @@ class MainFragment : Fragment() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
val intent = requireActivity().intent val activity = requireActivity()
val intent = activity.intent
if (intent != null && intent.action == Intent.ACTION_VIEW) { if (intent != null && intent.action == Intent.ACTION_VIEW) {
logD("Attempting to navigate from file intent") playbackModel.playWithIntent(intent, requireContext())
detailModel.navigateWithIntent(intent, requireActivity().application)
// Clear intent so that this does not fire again
// I see no consequences from doing this
activity.intent = null
} else {
playbackModel.restorePlaybackIfNeeded(requireContext())
} }
} }

View file

@ -1,12 +1,8 @@
package org.oxycblt.auxio.detail package org.oxycblt.auxio.detail
import android.app.Application
import android.content.Intent
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.BaseModel import org.oxycblt.auxio.music.BaseModel
@ -114,13 +110,4 @@ class DetailViewModel : ViewModel() {
fun doneWithNavToItem() { fun doneWithNavToItem() {
mNavToItem.value = null mNavToItem.value = null
} }
/** Navigate to an item using a file [Intent] */
fun navigateWithIntent(intent: Intent, app: Application) {
val uri = intent.data ?: return
viewModelScope.launch {
mNavToItem.value = musicStore.getSongForUri(uri, app.contentResolver)
}
}
} }

View file

@ -1,6 +1,7 @@
package org.oxycblt.auxio.playback package org.oxycblt.auxio.playback
import android.content.Context import android.content.Context
import android.content.Intent
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Transformations import androidx.lifecycle.Transformations
@ -13,6 +14,7 @@ import org.oxycblt.auxio.logE
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Genre
import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.music.Parent import org.oxycblt.auxio.music.Parent
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.toDuration import org.oxycblt.auxio.music.toDuration
@ -93,6 +95,7 @@ class PlaybackViewModel : ViewModel(), PlaybackStateManager.Callback {
private val playbackManager = PlaybackStateManager.getInstance() private val playbackManager = PlaybackStateManager.getInstance()
private val settingsManager = SettingsManager.getInstance() private val settingsManager = SettingsManager.getInstance()
private val musicStore = MusicStore.getInstance()
init { init {
playbackManager.addCallback(this) playbackManager.addCallback(this)
@ -155,6 +158,17 @@ class PlaybackViewModel : ViewModel(), PlaybackStateManager.Callback {
playbackManager.shuffleAll() playbackManager.shuffleAll()
} }
/** Play a song using an intent */
fun playWithIntent(intent: Intent, context: Context) {
val uri = intent.data ?: return
viewModelScope.launch {
musicStore.getSongForUri(uri, context.contentResolver)?.let { song ->
playSong(song)
}
}
}
// --- POSITION FUNCTIONS --- // --- POSITION FUNCTIONS ---
/** Update the position and push it to [PlaybackStateManager] */ /** Update the position and push it to [PlaybackStateManager] */