|
|
|
@ -61,6 +61,7 @@ import androidx.compose.ui.res.stringResource |
|
|
|
import androidx.compose.ui.text.style.TextOverflow |
|
|
|
import androidx.compose.ui.unit.dp |
|
|
|
import androidx.fragment.app.FragmentActivity |
|
|
|
import androidx.lifecycle.viewmodel.compose.viewModel |
|
|
|
import kotlinx.coroutines.launch |
|
|
|
import org.videolan.medialibrary.interfaces.media.Album |
|
|
|
import org.videolan.medialibrary.interfaces.media.Artist |
|
|
|
@ -78,6 +79,8 @@ import org.videolan.television.ui.compose.theme.WhiteTransparent10 |
|
|
|
import org.videolan.television.ui.compose.utils.conditional |
|
|
|
import org.videolan.television.ui.compose.utils.getDescriptionAnnotated |
|
|
|
import org.videolan.television.ui.compose.utils.inlineContentMap |
|
|
|
import org.videolan.television.viewmodel.MainActivityViewModel |
|
|
|
import org.videolan.television.viewmodel.SnackbarContent |
|
|
|
import org.videolan.vlc.gui.helpers.getTvIconRes |
|
|
|
import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate.Companion.askStoragePermission |
|
|
|
import org.videolan.vlc.util.ThumbnailsProvider |
|
|
|
@ -88,7 +91,7 @@ fun AudioItem(audios: List<MediaLibraryItem>, index: Int, inCard: Boolean = true |
|
|
|
} |
|
|
|
|
|
|
|
@Composable |
|
|
|
fun AudioItemCard(item: MediaLibraryItem, modifier: Modifier = Modifier, spannableDescription: Boolean = false) { |
|
|
|
fun AudioItemCard(item: MediaLibraryItem, modifier: Modifier = Modifier, spannableDescription: Boolean = false, viewModel: MainActivityViewModel = viewModel()) { |
|
|
|
val mapBitmap: MutableState<Pair<MediaLibraryItem, Bitmap?>?> = remember { mutableStateOf(null) } |
|
|
|
val coroutineScope = rememberCoroutineScope() |
|
|
|
val activity = LocalActivity.current |
|
|
|
@ -105,7 +108,6 @@ fun AudioItemCard(item: MediaLibraryItem, modifier: Modifier = Modifier, spannab |
|
|
|
} |
|
|
|
.combinedClickable( |
|
|
|
onClick = { |
|
|
|
val item = item |
|
|
|
when (item) { |
|
|
|
is Artist -> TvUtil.openAudioCategory(activity!!, item) |
|
|
|
is Album -> TvUtil.openAudioCategory(activity!!, item) |
|
|
|
@ -115,11 +117,11 @@ fun AudioItemCard(item: MediaLibraryItem, modifier: Modifier = Modifier, spannab |
|
|
|
} |
|
|
|
}, |
|
|
|
onLongClick = { |
|
|
|
val item = item |
|
|
|
if (item is MediaWrapper) |
|
|
|
TvUtil.showMediaDetail(activity!!, item, false) |
|
|
|
else |
|
|
|
(activity as? FragmentActivity)?.askStoragePermission(false, null) |
|
|
|
when (item) { |
|
|
|
is MediaWrapper -> TvUtil.showMediaDetail(activity!!, item, false) |
|
|
|
is DummyItem -> (activity as? FragmentActivity)?.askStoragePermission(false, null) |
|
|
|
else -> viewModel.showSnackbar(SnackbarContent(activity!!.resources.getString(R.string.not_implemented))) |
|
|
|
} |
|
|
|
}, |
|
|
|
indication = null, |
|
|
|
interactionSource = null |
|
|
|
@ -213,7 +215,7 @@ fun AudioItemCard(item: MediaLibraryItem, modifier: Modifier = Modifier, spannab |
|
|
|
} |
|
|
|
|
|
|
|
@Composable |
|
|
|
fun AudioItemList(item: MediaLibraryItem, modifier: Modifier = Modifier, spannableDescription: Boolean = false) { |
|
|
|
fun AudioItemList(item: MediaLibraryItem, modifier: Modifier = Modifier, spannableDescription: Boolean = false, viewModel: MainActivityViewModel = viewModel()) { |
|
|
|
val mapBitmap: MutableState<Pair<MediaLibraryItem, Bitmap?>?> = remember { mutableStateOf(null) } |
|
|
|
val coroutineScope = rememberCoroutineScope() |
|
|
|
val activity = LocalActivity.current |
|
|
|
@ -240,10 +242,11 @@ fun AudioItemList(item: MediaLibraryItem, modifier: Modifier = Modifier, spannab |
|
|
|
} |
|
|
|
}, |
|
|
|
onLongClick = { |
|
|
|
if (item is MediaWrapper) |
|
|
|
TvUtil.showMediaDetail(activity!!, item, false) |
|
|
|
else |
|
|
|
(activity as? FragmentActivity)?.askStoragePermission(false, null) |
|
|
|
when (item) { |
|
|
|
is MediaWrapper -> TvUtil.showMediaDetail(activity!!, item, false) |
|
|
|
is DummyItem -> (activity as? FragmentActivity)?.askStoragePermission(false, null) |
|
|
|
else -> viewModel.showSnackbar(SnackbarContent(activity!!.resources.getString(R.string.not_implemented))) |
|
|
|
} |
|
|
|
}, |
|
|
|
indication = null, |
|
|
|
interactionSource = null |
|
|
|
|