6.8.3 commit
This commit is contained in:
parent
89143c60d3
commit
03cb641080
|
@ -31,8 +31,8 @@ android {
|
|||
testApplicationId "ac.mdiq.podcini.tests"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
versionCode 3020259
|
||||
versionName "6.8.2"
|
||||
versionCode 3020260
|
||||
versionName "6.8.3"
|
||||
|
||||
applicationId "ac.mdiq.podcini.R"
|
||||
def commit = ""
|
||||
|
@ -171,6 +171,7 @@ android {
|
|||
|
||||
dependencies {
|
||||
implementation libs.androidx.material3.android
|
||||
implementation libs.androidx.material3
|
||||
|
||||
/** Desugaring for using VistaGuide **/
|
||||
coreLibraryDesugaring libs.desugar.jdk.libs.nio
|
||||
|
@ -179,7 +180,7 @@ dependencies {
|
|||
def composeBom = libs.androidx.compose.bom
|
||||
implementation composeBom
|
||||
androidTestImplementation composeBom
|
||||
implementation libs.androidx.material
|
||||
// implementation libs.androidx.material
|
||||
implementation libs.androidx.ui.tooling.preview
|
||||
debugImplementation libs.androidx.ui.tooling
|
||||
implementation libs.androidx.constraintlayout.compose
|
||||
|
|
|
@ -17,7 +17,7 @@ import android.widget.ImageView
|
|||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
|
|
@ -18,7 +18,7 @@ import androidx.annotation.OptIn
|
|||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
@ -108,7 +108,7 @@ class ShareReceiverActivity : AppCompatActivity() {
|
|||
)
|
||||
Text(
|
||||
text = stringResource(R.string.pref_video_mode_audio_only),
|
||||
style = MaterialTheme.typography.body1.merge(),
|
||||
style = MaterialTheme.typography.bodyLarge.merge(),
|
||||
)
|
||||
}
|
||||
Button(onClick = {
|
||||
|
|
|
@ -9,13 +9,13 @@ import android.util.TypedValue
|
|||
import androidx.annotation.AttrRes
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Shapes
|
||||
import androidx.compose.material.darkColors
|
||||
import androidx.compose.material.lightColors
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Shapes
|
||||
import androidx.compose.material3.darkColorScheme
|
||||
import androidx.compose.material3.lightColorScheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.material.Typography
|
||||
import androidx.compose.material3.Typography
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.font.FontFamily
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
|
@ -26,12 +26,12 @@ import androidx.core.content.ContextCompat
|
|||
private val TAG = "AppTheme"
|
||||
|
||||
val Typography = Typography(
|
||||
h1 = TextStyle(
|
||||
displayLarge = TextStyle(
|
||||
fontFamily = FontFamily.Default,
|
||||
fontWeight = FontWeight.Bold,
|
||||
fontSize = 30.sp
|
||||
),
|
||||
body1 = TextStyle(
|
||||
bodyLarge = TextStyle(
|
||||
fontFamily = FontFamily.Default,
|
||||
fontWeight = FontWeight.Normal,
|
||||
fontSize = 16.sp
|
||||
|
@ -65,10 +65,10 @@ fun getSecondaryColor(context: Context): Color {
|
|||
return Color(getColorFromAttr(context, R.attr.colorSecondary))
|
||||
}
|
||||
|
||||
val LightColors = lightColors(
|
||||
val LightColors = lightColorScheme(
|
||||
primary = Color(0xFF6200EE),
|
||||
primaryVariant = Color(0xFF3700B3),
|
||||
secondary = Color(0xFF03DAC6),
|
||||
secondary = Color(0xFF3700B3),
|
||||
tertiary = Color(0xFF03DAC6),
|
||||
background = Color(0xFFFFFFFF),
|
||||
surface = Color(0xFFFFFFFF),
|
||||
error = Color(0xFFB00020),
|
||||
|
@ -79,10 +79,10 @@ val LightColors = lightColors(
|
|||
onError = Color(0xFFFFFFFF)
|
||||
)
|
||||
|
||||
val DarkColors = darkColors(
|
||||
val DarkColors = darkColorScheme(
|
||||
primary = Color(0xFFBB86FC),
|
||||
primaryVariant = Color(0xFF3700B3),
|
||||
secondary = Color(0xFF03DAC6),
|
||||
secondary = Color(0xFF3700B3),
|
||||
tertiary = Color(0xFF03DAC6),
|
||||
background = Color(0xFF121212),
|
||||
surface = Color(0xFF121212),
|
||||
error = Color(0xFFCF6679),
|
||||
|
@ -119,7 +119,7 @@ fun CustomTheme(context: Context, content: @Composable () -> Unit) {
|
|||
}
|
||||
|
||||
MaterialTheme(
|
||||
colors = colors,
|
||||
colorScheme = colors,
|
||||
typography = Typography,
|
||||
shapes = Shapes,
|
||||
content = content
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package ac.mdiq.podcini.ui.compose
|
||||
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun Spinner(
|
||||
items: List<String>,
|
||||
|
@ -33,14 +33,12 @@ fun Spinner(
|
|||
onDismissRequest = { expanded = false }
|
||||
) {
|
||||
items.forEach { item ->
|
||||
DropdownMenuItem(
|
||||
DropdownMenuItem(text = { Text(item) },
|
||||
onClick = {
|
||||
onItemSelected(item)
|
||||
expanded = false
|
||||
}
|
||||
) {
|
||||
Text(text = item)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,9 +33,9 @@ import androidx.compose.foundation.layout.*
|
|||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.itemsIndexed
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Edit
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.runtime.snapshots.SnapshotStateList
|
||||
import androidx.compose.ui.Alignment
|
||||
|
@ -64,14 +64,14 @@ import kotlin.math.roundToInt
|
|||
|
||||
@Composable
|
||||
fun InforBar(text: MutableState<String>, leftAction: MutableState<SwipeAction?>, rightAction: MutableState<SwipeAction?>, actionConfig: () -> Unit) {
|
||||
val textColor = MaterialTheme.colors.onSurface
|
||||
val textColor = MaterialTheme.colorScheme.onSurface
|
||||
Logd("InforBar", "textState: ${text.value}")
|
||||
Row {
|
||||
Icon(painter = painterResource(leftAction.value?.getActionIcon() ?:R.drawable.ic_questionmark), tint = textColor, contentDescription = "left_action_icon",
|
||||
modifier = Modifier.width(24.dp).height(24.dp).clickable(onClick = actionConfig))
|
||||
Icon(painter = painterResource(R.drawable.baseline_arrow_left_alt_24), tint = textColor, contentDescription = "left_arrow", modifier = Modifier.width(24.dp).height(24.dp))
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
Text(text.value, color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(text.value, color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
Icon(painter = painterResource(R.drawable.baseline_arrow_right_alt_24), tint = textColor, contentDescription = "right_arrow", modifier = Modifier.width(24.dp).height(24.dp))
|
||||
Icon(painter = painterResource(rightAction.value?.getActionIcon() ?:R.drawable.ic_questionmark), tint = textColor, contentDescription = "right_action_icon",
|
||||
|
@ -177,11 +177,11 @@ fun EpisodeSpeedDial(activity: MainActivity, selected: SnapshotStateList<Episode
|
|||
val scrollState = rememberScrollState()
|
||||
Column(modifier = modifier.verticalScroll(scrollState), verticalArrangement = Arrangement.Bottom) {
|
||||
if (isExpanded) options.forEachIndexed { _, button ->
|
||||
FloatingActionButton(modifier = Modifier.padding(start = 4.dp, bottom = 6.dp).height(50.dp),
|
||||
backgroundColor = Color.LightGray,
|
||||
FloatingActionButton(modifier = Modifier.padding(start = 4.dp, bottom = 6.dp).height(40.dp),
|
||||
containerColor = Color.LightGray,
|
||||
onClick = {}) { button() }
|
||||
}
|
||||
FloatingActionButton(backgroundColor = Color.Green,
|
||||
FloatingActionButton(containerColor = Color.Green,
|
||||
onClick = { isExpanded = !isExpanded }) { Icon(Icons.Filled.Edit, "Edit") }
|
||||
}
|
||||
}
|
||||
|
@ -191,7 +191,6 @@ fun EpisodeSpeedDial(activity: MainActivity, selected: SnapshotStateList<Episode
|
|||
fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episode>, leftSwipeCB: (Episode) -> Unit, rightSwipeCB: (Episode) -> Unit, actionButton_: ((Episode)->EpisodeActionButton)? = null) {
|
||||
val TAG = "EpisodeLazyColumn"
|
||||
var selectMode by remember { mutableStateOf(false) }
|
||||
// val selectedIds = remember { mutableSetOf<Long>() }
|
||||
var selectedSize by remember { mutableStateOf(0) }
|
||||
val selected = remember { mutableStateListOf<Episode>() }
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
@ -263,31 +262,28 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
val velocityTracker = remember { VelocityTracker() }
|
||||
val offsetX = remember { Animatable(0f) }
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.pointerInput(Unit) {
|
||||
detectHorizontalDragGestures(
|
||||
onDragStart = { velocityTracker.resetTracking() },
|
||||
onHorizontalDrag = { change, dragAmount ->
|
||||
velocityTracker.addPosition(change.uptimeMillis, change.position)
|
||||
coroutineScope.launch { offsetX.snapTo(offsetX.value + dragAmount) }
|
||||
},
|
||||
onDragEnd = {
|
||||
coroutineScope.launch {
|
||||
val velocity = velocityTracker.calculateVelocity().x
|
||||
if (velocity > 1000f || velocity < -1000f) {
|
||||
if (velocity > 0) rightSwipeCB(episodes[index])
|
||||
else leftSwipeCB(episodes[index])
|
||||
}
|
||||
offsetX.animateTo(
|
||||
targetValue = 0f, // Back to the initial position
|
||||
animationSpec = tween(500) // Adjust animation duration as needed
|
||||
)
|
||||
modifier = Modifier.fillMaxWidth().pointerInput(Unit) {
|
||||
detectHorizontalDragGestures(
|
||||
onDragStart = { velocityTracker.resetTracking() },
|
||||
onHorizontalDrag = { change, dragAmount ->
|
||||
velocityTracker.addPosition(change.uptimeMillis, change.position)
|
||||
coroutineScope.launch { offsetX.snapTo(offsetX.value + dragAmount) }
|
||||
},
|
||||
onDragEnd = {
|
||||
coroutineScope.launch {
|
||||
val velocity = velocityTracker.calculateVelocity().x
|
||||
if (velocity > 1000f || velocity < -1000f) {
|
||||
if (velocity > 0) rightSwipeCB(episodes[index])
|
||||
else leftSwipeCB(episodes[index])
|
||||
}
|
||||
offsetX.animateTo(
|
||||
targetValue = 0f, // Back to the initial position
|
||||
animationSpec = tween(500) // Adjust animation duration as needed
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
.offset { IntOffset(offsetX.value.roundToInt(), 0) }
|
||||
}
|
||||
)
|
||||
}.offset { IntOffset(offsetX.value.roundToInt(), 0) }
|
||||
) {
|
||||
var isSelected by remember { mutableStateOf(false) }
|
||||
LaunchedEffect(key1 = selectMode, key2 = selectedSize) {
|
||||
|
@ -296,16 +292,11 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
}
|
||||
fun toggleSelected() {
|
||||
isSelected = !isSelected
|
||||
if (isSelected) {
|
||||
// selectedIds.add(episode.id)
|
||||
selected.add(episodes[index])
|
||||
} else {
|
||||
// selectedIds.remove(episode.id)
|
||||
selected.remove(episodes[index])
|
||||
}
|
||||
if (isSelected) selected.add(episodes[index])
|
||||
else selected.remove(episodes[index])
|
||||
}
|
||||
val textColor = MaterialTheme.colors.onSurface
|
||||
Row (Modifier.background(if (isSelected) MaterialTheme.colors.secondary else MaterialTheme.colors.surface)) {
|
||||
val textColor = MaterialTheme.colorScheme.onSurface
|
||||
Row (Modifier.background(if (isSelected) MaterialTheme.colorScheme.secondary else MaterialTheme.colorScheme.surface)) {
|
||||
if (false) {
|
||||
val typedValue = TypedValue()
|
||||
LocalContext.current.theme.resolveAttribute(R.attr.dragview_background, typedValue, true)
|
||||
|
@ -344,12 +335,9 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
selectMode = !selectMode
|
||||
isSelected = selectMode
|
||||
if (selectMode) {
|
||||
// selectedIds.add(episode.id)
|
||||
selected.add(episodes[index])
|
||||
// selectedSize = selectedIds.size
|
||||
longPressIndex = index
|
||||
} else {
|
||||
// selectedIds.clear()
|
||||
selectedSize = 0
|
||||
longPressIndex = -1
|
||||
}
|
||||
|
@ -363,7 +351,7 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
if (episode.inQueueState.value)
|
||||
Icon(painter = painterResource(R.drawable.ic_playlist_play), tint = textColor, contentDescription = "ivInPlaylist", modifier = Modifier.width(14.dp).height(14.dp))
|
||||
val dateSizeText = " · " + formatAbbrev(LocalContext.current, episode.getPubDate()) + " · " + if((episode.media?.size?:0) > 0) Formatter.formatShortFileSize(LocalContext.current, episode.media!!.size) else ""
|
||||
Text(dateSizeText, color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(dateSizeText, color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
}
|
||||
Text(episode.title?:"", color = textColor, maxLines = 2, overflow = TextOverflow.Ellipsis)
|
||||
if (InTheatre.isCurMedia(episode.media) || inProgressState) {
|
||||
|
@ -371,13 +359,14 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
val dur = remember(episode, episode.media) { episode.media!!.getDuration()}
|
||||
val prog = if (dur > 0 && pos >= 0 && dur >= pos) 1.0f * pos / dur else 0f
|
||||
Row {
|
||||
Text(DurationConverter.getDurationStringLong(pos), color = textColor, style = MaterialTheme.typography.caption)
|
||||
Text(DurationConverter.getDurationStringLong(pos), color = textColor, style = MaterialTheme.typography.bodySmall)
|
||||
LinearProgressIndicator(progress = prog, modifier = Modifier.weight(1f).height(4.dp).align(Alignment.CenterVertically))
|
||||
Text(DurationConverter.getDurationStringLong(dur), color = textColor, style = MaterialTheme.typography.caption)
|
||||
Text(DurationConverter.getDurationStringLong(dur), color = textColor, style = MaterialTheme.typography.bodySmall)
|
||||
}
|
||||
}
|
||||
}
|
||||
var actionButton by remember { mutableStateOf(if (actionButton_ == null) EpisodeActionButton.forItem(episodes[index]) else actionButton_(episodes[index])) }
|
||||
val actionRes by mutableIntStateOf(actionButton.getDrawable())
|
||||
var showAltActionsDialog by remember { mutableStateOf(false) }
|
||||
val dls = remember { DownloadServiceInterface.get() }
|
||||
var dlPercent by remember { mutableIntStateOf(0) }
|
||||
|
@ -400,7 +389,7 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
actionButton.onClick(activity)
|
||||
})
|
||||
}, contentAlignment = Alignment.Center) {
|
||||
Icon(painter = painterResource(actionButton.getDrawable()), tint = textColor, contentDescription = null, modifier = Modifier.width(28.dp).height(32.dp))
|
||||
Icon(painter = painterResource(actionRes), tint = textColor, contentDescription = null, modifier = Modifier.width(28.dp).height(32.dp))
|
||||
if (isDownloading() && dlPercent >= 0) CircularProgressIndicator(progress = 0.01f * dlPercent, strokeWidth = 4.dp, color = textColor)
|
||||
}
|
||||
if (showAltActionsDialog) actionButton.AltActionsDialog(activity, showAltActionsDialog, onDismiss = { showAltActionsDialog = false })
|
||||
|
@ -412,10 +401,8 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
Row(modifier = Modifier.align(Alignment.TopEnd).width(150.dp).height(45.dp).background(Color.LightGray), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(painter = painterResource(R.drawable.baseline_arrow_upward_24), tint = Color.Black, contentDescription = null, modifier = Modifier.width(35.dp).height(35.dp).padding(end = 10.dp)
|
||||
.clickable(onClick = {
|
||||
// selectedIds.clear()
|
||||
selected.clear()
|
||||
for (i in 0..longPressIndex) {
|
||||
// selectedIds.add(episodes[i].id)
|
||||
selected.add(episodes[i])
|
||||
}
|
||||
selectedSize = selected.size
|
||||
|
@ -423,10 +410,8 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
}))
|
||||
Icon(painter = painterResource(R.drawable.baseline_arrow_downward_24), tint = Color.Black, contentDescription = null, modifier = Modifier.width(35.dp).height(35.dp).padding(end = 10.dp)
|
||||
.clickable(onClick = {
|
||||
// selectedIds.clear()
|
||||
selected.clear()
|
||||
for (i in longPressIndex..episodes.size-1) {
|
||||
// selectedIds.add(episodes[i].id)
|
||||
selected.add(episodes[i])
|
||||
}
|
||||
selectedSize = selected.size
|
||||
|
@ -437,12 +422,10 @@ fun EpisodeLazyColumn(activity: MainActivity, episodes: SnapshotStateList<Episod
|
|||
.clickable(onClick = {
|
||||
if (selectedSize != episodes.size) {
|
||||
for (e in episodes) {
|
||||
// selectedIds.add(e.id)
|
||||
selected.add(e)
|
||||
}
|
||||
selectAllRes = R.drawable.ic_select_none
|
||||
} else {
|
||||
// selectedIds.clear()
|
||||
selected.clear()
|
||||
selectAllRes = R.drawable.ic_select_all
|
||||
}
|
||||
|
|
|
@ -8,8 +8,8 @@ import ac.mdiq.podcini.ui.utils.TransitionEffect
|
|||
import ac.mdiq.podcini.util.Logd
|
||||
import androidx.compose.foundation.*
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
@ -27,7 +27,7 @@ import coil.compose.AsyncImage
|
|||
@Composable
|
||||
fun FeedEpisodesHeader(activity: MainActivity, feed: Feed?, filterButColor: Color, filterClickCB: ()->Unit, filterLongClickCB: ()->Unit) {
|
||||
val TAG = "FeedEpisodesHeader"
|
||||
val textColor = MaterialTheme.colors.onSurface
|
||||
val textColor = MaterialTheme.colorScheme.onSurface
|
||||
ConstraintLayout(modifier = Modifier.fillMaxWidth().height(120.dp)) {
|
||||
val (controlRow, image1, image2, imgvCover, taColumn) = createRefs()
|
||||
Row(Modifier.fillMaxWidth().padding(horizontal = 8.dp, vertical = 2.dp).background(colorResource(id = R.color.image_readability_tint))
|
||||
|
@ -47,7 +47,7 @@ fun FeedEpisodesHeader(activity: MainActivity, feed: Feed?, filterButColor: Colo
|
|||
}
|
||||
}))
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
Text(feed?.episodes?.size?.toString()?:"", textAlign = TextAlign.Center, color = Color.White, style = MaterialTheme.typography.body1)
|
||||
Text(feed?.episodes?.size?.toString()?:"", textAlign = TextAlign.Center, color = Color.White, style = MaterialTheme.typography.bodyLarge)
|
||||
}
|
||||
Image(painter = painterResource(R.drawable.ic_rounded_corner_left), contentDescription = "left_corner",
|
||||
Modifier.width(12.dp).height(12.dp).constrainAs(image1) {
|
||||
|
@ -69,8 +69,8 @@ fun FeedEpisodesHeader(activity: MainActivity, feed: Feed?, filterButColor: Colo
|
|||
Column(Modifier.constrainAs(taColumn) {
|
||||
top.linkTo(imgvCover.top)
|
||||
start.linkTo(imgvCover.end) }) {
|
||||
Text(feed?.title?:"", color = textColor, style = MaterialTheme.typography.body1, maxLines = 2, overflow = TextOverflow.Ellipsis)
|
||||
Text(feed?.author?:"", color = textColor, style = MaterialTheme.typography.body2, maxLines = 1, overflow = TextOverflow.Ellipsis)
|
||||
Text(feed?.title?:"", color = textColor, style = MaterialTheme.typography.bodyLarge, maxLines = 2, overflow = TextOverflow.Ellipsis)
|
||||
Text(feed?.author?:"", color = textColor, style = MaterialTheme.typography.bodyMedium, maxLines = 1, overflow = TextOverflow.Ellipsis)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -57,10 +57,10 @@ import android.widget.Toast
|
|||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.compose.foundation.*
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.Icon
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Slider
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Slider
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
@ -199,8 +199,8 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
@Composable
|
||||
fun PlayerUI() {
|
||||
Column(modifier = Modifier.fillMaxWidth().height(133.dp)) {
|
||||
val textColor = MaterialTheme.colors.onSurface
|
||||
Text(titleText, maxLines = 1, color = textColor, style = MaterialTheme.typography.body2)
|
||||
val textColor = MaterialTheme.colorScheme.onSurface
|
||||
Text(titleText, maxLines = 1, color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
var tempSliderValue by remember { mutableStateOf(sliderValue) }
|
||||
Slider(value = tempSliderValue, valueRange = 0f..duration.toFloat(), modifier = Modifier.height(15.dp),
|
||||
onValueChange = {
|
||||
|
@ -213,10 +213,10 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
if (playbackService?.isServiceReady() == true) seekTo(currentPosition)
|
||||
})
|
||||
Row {
|
||||
Text(DurationConverter.getDurationStringLong(currentPosition), color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(DurationConverter.getDurationStringLong(currentPosition), color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
Spacer(Modifier.weight(1f))
|
||||
showTimeLeft = UserPreferences.shouldShowRemainingTime()
|
||||
Text(txtvLengtTexth, color = textColor, style = MaterialTheme.typography.body2, modifier = Modifier.clickable {
|
||||
Text(txtvLengtTexth, color = textColor, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.clickable {
|
||||
if (controller == null) return@clickable
|
||||
showTimeLeft = !showTimeLeft
|
||||
UserPreferences.setShowRemainTimeSetting(showTimeLeft)
|
||||
|
@ -255,7 +255,7 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
modifier = Modifier.width(48.dp).height(48.dp).clickable(onClick = {
|
||||
VariableSpeedDialog.newInstance(booleanArrayOf(true, true, true), null)?.show(childFragmentManager, null)
|
||||
}))
|
||||
Text(txtvPlaybackSpeed, color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(txtvPlaybackSpeed, color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
}
|
||||
Spacer(Modifier.weight(0.1f))
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
|
@ -268,7 +268,7 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
}, onLongClick = {
|
||||
SkipPreferenceDialog.showSkipPreference(requireContext(), SkipPreferenceDialog.SkipDirection.SKIP_REWIND)
|
||||
}))
|
||||
Text(NumberFormat.getInstance().format(UserPreferences.rewindSecs.toLong()), color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(NumberFormat.getInstance().format(UserPreferences.rewindSecs.toLong()), color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
}
|
||||
Spacer(Modifier.weight(0.1f))
|
||||
Icon(painter = painterResource(playButRes), tint = textColor,
|
||||
|
@ -301,7 +301,7 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
}, onLongClick = {
|
||||
SkipPreferenceDialog.showSkipPreference(requireContext(), SkipPreferenceDialog.SkipDirection.SKIP_FORWARD)
|
||||
}))
|
||||
Text(NumberFormat.getInstance().format(UserPreferences.fastForwardSecs.toLong()), color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(NumberFormat.getInstance().format(UserPreferences.fastForwardSecs.toLong()), color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
}
|
||||
Spacer(Modifier.weight(0.1f))
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
|
@ -323,7 +323,7 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
}, onLongClick = {
|
||||
activity?.sendBroadcast(MediaButtonReceiver.createIntent(requireContext(), KeyEvent.KEYCODE_MEDIA_NEXT))
|
||||
}))
|
||||
if (UserPreferences.speedforwardSpeed > 0.1f) Text(NumberFormat.getInstance().format(UserPreferences.speedforwardSpeed), color = textColor, style = MaterialTheme.typography.body2)
|
||||
if (UserPreferences.speedforwardSpeed > 0.1f) Text(NumberFormat.getInstance().format(UserPreferences.speedforwardSpeed), color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
}
|
||||
Spacer(Modifier.weight(0.1f))
|
||||
}
|
||||
|
@ -335,7 +335,7 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
fun DetailUI() {
|
||||
val scrollState = rememberScrollState()
|
||||
Column(modifier = Modifier.fillMaxWidth().verticalScroll(scrollState)) {
|
||||
val textColor = MaterialTheme.colors.onSurface
|
||||
val textColor = MaterialTheme.colorScheme.onSurface
|
||||
fun copyText(text: String): Boolean {
|
||||
val clipboardManager: ClipboardManager? = ContextCompat.getSystemService(requireContext(), ClipboardManager::class.java)
|
||||
clipboardManager?.setPrimaryClip(ClipData.newPlainText("Podcini", text))
|
||||
|
@ -344,7 +344,7 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
}
|
||||
return true
|
||||
}
|
||||
Text(txtvPodcastTitle, textAlign = TextAlign.Center, color = textColor, style = MaterialTheme.typography.h5,
|
||||
Text(txtvPodcastTitle, textAlign = TextAlign.Center, color = textColor, style = MaterialTheme.typography.headlineSmall,
|
||||
modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 5.dp).combinedClickable(onClick = {
|
||||
if (currentMedia is EpisodeMedia) {
|
||||
if (currentItem?.feedId != null) {
|
||||
|
@ -353,8 +353,8 @@ class AudioPlayerFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
}
|
||||
}
|
||||
}, onLongClick = { copyText(currentMedia?.getFeedTitle()?:"") }))
|
||||
Text(episodeDate, textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 2.dp), color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(titleText, textAlign = TextAlign.Center, color = textColor, style = MaterialTheme.typography.h6, modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 5.dp)
|
||||
Text(episodeDate, textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 2.dp), color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
Text(titleText, textAlign = TextAlign.Center, color = textColor, style = MaterialTheme.typography.titleLarge, modifier = Modifier.fillMaxWidth().padding(top = 2.dp, bottom = 5.dp)
|
||||
.combinedClickable(onClick = {}, onLongClick = { copyText(currentItem?.title?:"") }))
|
||||
fun restoreFromPreference(): Boolean {
|
||||
if ((activity as MainActivity).bottomSheet.state != BottomSheetBehavior.STATE_EXPANDED) return false
|
||||
|
|
|
@ -50,9 +50,9 @@ import androidx.compose.foundation.clickable
|
|||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.Icon
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
|
@ -188,14 +188,14 @@ class EpisodeInfoFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
@Composable
|
||||
fun InfoView() {
|
||||
Column {
|
||||
val textColor = MaterialTheme.colors.onSurface
|
||||
val textColor = MaterialTheme.colorScheme.onSurface
|
||||
Row(modifier = Modifier.padding(start = 16.dp, end = 16.dp), verticalAlignment = Alignment.CenterVertically) {
|
||||
val imgLoc = if (episode != null) ImageResourceUtils.getEpisodeListImageLocation(episode!!) else null
|
||||
AsyncImage(model = imgLoc, contentDescription = "imgvCover", Modifier.width(56.dp).height(56.dp).clickable(onClick = { openPodcast() }))
|
||||
Column(modifier = Modifier.padding(start = 10.dp)) {
|
||||
Text(txtvPodcast, color = textColor, style = MaterialTheme.typography.body1, modifier = Modifier.clickable { openPodcast() })
|
||||
Text(txtvTitle, color = textColor, style = MaterialTheme.typography.body1.copy(fontWeight = FontWeight.Bold), maxLines = 5, overflow = TextOverflow.Ellipsis)
|
||||
Text(txtvPublished + " · " + txtvDuration + " · " + txtvSize, color = textColor, style = MaterialTheme.typography.body2)
|
||||
Text(txtvPodcast, color = textColor, style = MaterialTheme.typography.bodyLarge, modifier = Modifier.clickable { openPodcast() })
|
||||
Text(txtvTitle, color = textColor, style = MaterialTheme.typography.bodyLarge.copy(fontWeight = FontWeight.Bold), maxLines = 5, overflow = TextOverflow.Ellipsis)
|
||||
Text(txtvPublished + " · " + txtvDuration + " · " + txtvSize, color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
}
|
||||
}
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
|
@ -237,7 +237,7 @@ class EpisodeInfoFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
}
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
}
|
||||
if (!hasMedia) Text("noMediaLabel", color = textColor, style = MaterialTheme.typography.body2)
|
||||
if (!hasMedia) Text("noMediaLabel", color = textColor, style = MaterialTheme.typography.bodyMedium)
|
||||
val scrollState = rememberScrollState()
|
||||
Column(modifier = Modifier.fillMaxWidth().verticalScroll(scrollState)) {
|
||||
AndroidView(modifier = Modifier.fillMaxSize(), factory = { context ->
|
||||
|
@ -251,7 +251,7 @@ class EpisodeInfoFragment : Fragment(), Toolbar.OnMenuItemClickListener {
|
|||
}, update = {
|
||||
it.loadDataWithBaseURL("https://127.0.0.1", webviewData, "text/html", "utf-8", "about:blank")
|
||||
})
|
||||
Text(itemLink, color = textColor, style = MaterialTheme.typography.caption)
|
||||
Text(itemLink, color = textColor, style = MaterialTheme.typography.bodySmall)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,8 @@ import ac.mdiq.podcini.storage.database.Feeds.persistFeedPreferences
|
|||
import ac.mdiq.podcini.storage.database.RealmDB.realm
|
||||
import ac.mdiq.podcini.storage.database.RealmDB.upsertBlk
|
||||
import ac.mdiq.podcini.storage.model.*
|
||||
import ac.mdiq.podcini.storage.model.FeedPreferences.*
|
||||
import ac.mdiq.podcini.storage.model.FeedPreferences.AutoDeleteAction
|
||||
import ac.mdiq.podcini.storage.model.FeedPreferences.AutoDownloadPolicy
|
||||
import ac.mdiq.podcini.storage.model.FeedPreferences.Companion.FeedAutoDeleteOptions
|
||||
import ac.mdiq.podcini.ui.adapter.SimpleChipAdapter
|
||||
import ac.mdiq.podcini.ui.compose.CustomTheme
|
||||
|
@ -37,7 +38,7 @@ import androidx.compose.foundation.clickable
|
|||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
@ -45,11 +46,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
|
|||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.res.vectorResource
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.input.OffsetMapping
|
||||
import androidx.compose.ui.text.input.TransformedText
|
||||
import androidx.compose.ui.text.input.VisualTransformation
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.fragment.app.Fragment
|
||||
|
@ -95,7 +92,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
|
||||
binding.composeView.setContent {
|
||||
CustomTheme(requireContext()) {
|
||||
val textColor = MaterialTheme.colors.onSurface
|
||||
val textColor = MaterialTheme.colorScheme.onSurface
|
||||
Column(
|
||||
modifier = Modifier.padding(start = 20.dp, end = 16.dp, top = 10.dp, bottom = 10.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
|
@ -108,7 +105,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.keep_updated),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor
|
||||
)
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
@ -126,7 +123,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.keep_updated_summary),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -139,7 +136,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.feed_video_mode_label),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val composeView = ComposeView(requireContext()).apply {
|
||||
|
@ -156,7 +153,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(videoModeSummaryResId),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -169,7 +166,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.pref_stream_over_download_title),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor
|
||||
)
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
@ -189,7 +186,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.pref_stream_over_download_sum),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -202,7 +199,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.pref_feed_associated_queue),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val selectedOption = feed?.preferences?.queueText ?: "Default"
|
||||
|
@ -220,7 +217,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = curPrefQueue + " : " + stringResource(R.string.pref_feed_associated_queue_sum),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -234,7 +231,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.audo_add_new_queue),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor
|
||||
)
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
@ -252,7 +249,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.audo_add_new_queue_summary),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -265,7 +262,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.auto_delete_label),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val composeView = ComposeView(requireContext()).apply {
|
||||
|
@ -282,7 +279,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(autoDeleteSummaryResId),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -294,7 +291,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.feed_tags_label),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val dialog = TagSettingsDialog.newInstance(listOf(feed!!))
|
||||
|
@ -304,7 +301,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.feed_tags_summary),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -315,7 +312,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.playback_speed),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
PlaybackSpeedDialog().show()
|
||||
|
@ -324,7 +321,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.pref_feed_playback_speed_sum),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -335,7 +332,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.pref_feed_skip),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val composeView = ComposeView(requireContext()).apply {
|
||||
|
@ -352,7 +349,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.pref_feed_skip_sum),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -363,7 +360,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.feed_volume_adapdation),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val composeView = ComposeView(requireContext()).apply {
|
||||
|
@ -380,7 +377,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.feed_volume_adaptation_summary),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -392,7 +389,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Spacer(modifier = Modifier.width(20.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.authentication_label),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val composeView = ComposeView(requireContext()).apply {
|
||||
|
@ -410,7 +407,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.authentication_descr),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -422,7 +419,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Row(Modifier.fillMaxWidth()) {
|
||||
Text(
|
||||
text = stringResource(R.string.auto_download_label),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor
|
||||
)
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
@ -438,7 +435,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
if (!isEnableAutodownload) {
|
||||
Text(
|
||||
text = stringResource(R.string.auto_download_disabled_globally),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -449,7 +446,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Row(Modifier.fillMaxWidth()) {
|
||||
Text(
|
||||
text = stringResource(R.string.feed_auto_download_policy),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val composeView = ComposeView(requireContext()).apply {
|
||||
|
@ -471,7 +468,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Row(Modifier.fillMaxWidth()) {
|
||||
Text(
|
||||
text = stringResource(R.string.pref_episode_cache_title),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
val composeView = ComposeView(requireContext()).apply {
|
||||
|
@ -489,7 +486,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.pref_episode_cache_summary),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -498,7 +495,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Row(Modifier.fillMaxWidth()) {
|
||||
Text(
|
||||
text = stringResource(R.string.pref_auto_download_counting_played_title),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor
|
||||
)
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
@ -518,7 +515,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.pref_auto_download_counting_played_summary),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -527,7 +524,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Row(Modifier.fillMaxWidth()) {
|
||||
Text(
|
||||
text = stringResource(R.string.episode_inclusive_filters_label),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
object : AutoDownloadFilterPrefDialog(requireContext(),
|
||||
|
@ -545,7 +542,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.episode_filters_description),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -554,7 +551,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
Row(Modifier.fillMaxWidth()) {
|
||||
Text(
|
||||
text = stringResource(R.string.episode_exclusive_filters_label),
|
||||
style = MaterialTheme.typography.h6,
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = textColor,
|
||||
modifier = Modifier.clickable(onClick = {
|
||||
object : AutoDownloadFilterPrefDialog(requireContext(),
|
||||
|
@ -572,7 +569,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
}
|
||||
Text(
|
||||
text = stringResource(R.string.episode_filters_description),
|
||||
style = MaterialTheme.typography.body2,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor
|
||||
)
|
||||
}
|
||||
|
@ -657,7 +654,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
)
|
||||
Text(
|
||||
text = text,
|
||||
style = MaterialTheme.typography.body1.merge(),
|
||||
style = MaterialTheme.typography.bodyLarge.merge(),
|
||||
// color = textColor,
|
||||
modifier = Modifier.padding(start = 16.dp)
|
||||
)
|
||||
|
@ -727,7 +724,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
)
|
||||
Text(
|
||||
text = text,
|
||||
style = MaterialTheme.typography.body1.merge(),
|
||||
style = MaterialTheme.typography.bodyLarge.merge(),
|
||||
// color = textColor,
|
||||
modifier = Modifier.padding(start = 16.dp)
|
||||
)
|
||||
|
@ -774,7 +771,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
)
|
||||
Text(
|
||||
text = stringResource(item.resId),
|
||||
style = MaterialTheme.typography.body1.merge(),
|
||||
style = MaterialTheme.typography.bodyLarge.merge(),
|
||||
// color = textColor,
|
||||
modifier = Modifier.padding(start = 16.dp)
|
||||
)
|
||||
|
@ -822,7 +819,7 @@ class FeedSettingsFragment : Fragment() {
|
|||
)
|
||||
Text(
|
||||
text = stringResource(item.resId),
|
||||
style = MaterialTheme.typography.body1.merge(),
|
||||
style = MaterialTheme.typography.bodyLarge.merge(),
|
||||
// color = textColor,
|
||||
modifier = Modifier.padding(start = 16.dp)
|
||||
)
|
||||
|
|
|
@ -55,10 +55,10 @@ import androidx.compose.foundation.layout.Column
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.wrapContentSize
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.Button
|
||||
import androidx.compose.material.Card
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material.TextField
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Card
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextField
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -32,7 +32,4 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<!-- <include-->
|
||||
<!-- layout="@layout/multi_select_speed_dial" />-->
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/subscription_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
|
@ -21,52 +22,11 @@
|
|||
app:navigationContentDescription="@string/toolbar_back_button_content_description"
|
||||
app:navigationIcon="?homeAsUpIndicator" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/feeds_info_layout"
|
||||
<androidx.compose.ui.platform.ComposeView
|
||||
android:id="@+id/infobar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingVertical="4dp"
|
||||
android:layout_marginTop="-12dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:src="@drawable/ic_info" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<com.mikepenz.iconics.view.IconicsTextView
|
||||
android:id="@+id/txtvInformation"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:gravity="center"
|
||||
android:textColor="?attr/colorAccent"
|
||||
tools:visibility="visible"
|
||||
tools:text="(i) Information" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp"
|
||||
android:text="12 Podcasts" />
|
||||
</LinearLayout>
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
@ -79,19 +39,7 @@
|
|||
android:layout_marginTop="-12dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:layout_below="@id/appbar">
|
||||
|
||||
<!-- <com.google.android.material.textfield.TextInputEditText-->
|
||||
<!-- android:id="@+id/search_box"-->
|
||||
<!-- android:layout_width="0dp"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_weight="1"-->
|
||||
<!-- android:inputType="text"-->
|
||||
<!-- android:hint="@string/feed_search_hint_text"-->
|
||||
<!-- android:lines="1"-->
|
||||
<!-- android:imeOptions="actionSearch"-->
|
||||
<!-- android:background="?attr/background_color"/>-->
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/queues_spinner"
|
||||
|
@ -118,44 +66,9 @@
|
|||
android:spinnerMode="dropdown"/>
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipeRefresh"
|
||||
<androidx.compose.ui.platform.ComposeView
|
||||
android:id="@+id/lazyColumn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/selection_block">
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/subscriptions_grid"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:paddingBottom="88dp"
|
||||
tools:itemCount="2"
|
||||
tools:listitem="@layout/subscription_item" />
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<!-- <ProgressBar-->
|
||||
<!-- android:id="@+id/progressBar"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_centerInParent="true"-->
|
||||
<!-- android:indeterminateOnly="true"-->
|
||||
<!-- android:visibility="visible" />-->
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/subscriptions_add"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_margin="16dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:contentDescription="@string/add_feed_label"
|
||||
app:srcCompat="@drawable/ic_add" />
|
||||
|
||||
<include
|
||||
layout="@layout/multi_select_speed_dial" />
|
||||
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -1,114 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:squareImageView="http://schemas.android.com/apk/ac.mdiq.podcini"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp"
|
||||
android:id="@+id/subscription_item"
|
||||
tools:layout_width="400dp">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/outerContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clickable="false"
|
||||
android:foreground="?attr/selectableItemBackground"
|
||||
app:cardCornerRadius="12dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ac.mdiq.podcini.ui.view.SquareImageView
|
||||
android:id="@+id/coverImage"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:outlineProvider="background"
|
||||
squareImageView:direction="width"
|
||||
tools:src="@tools:sample/avatars" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/info_card"
|
||||
android:layout_width="0.dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/titleLabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:lines="1"
|
||||
android:text="Title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/producerLabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:lines="1"
|
||||
android:text="Author" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:id="@+id/episodeCount"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:text="0 episodes" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sortInfo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:text="info" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/errorIcon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_margin="8dp"
|
||||
android:visibility="gone"
|
||||
android:contentDescription="@string/refresh_failed_msg"
|
||||
app:srcCompat="@drawable/ic_error"
|
||||
tools:visibility="visible" />
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/selectContainer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/selectCheckBox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:minWidth="0dp"
|
||||
android:minHeight="0dp"
|
||||
android:layout_margin="8dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
</FrameLayout>
|
|
@ -1,125 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:squareImageView="http://schemas.android.com/apk/ac.mdiq.podcini"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp"
|
||||
android:id="@+id/subscription_item_brief"
|
||||
tools:layout_width="150dp">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/outerContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clickable="false"
|
||||
android:foreground="?attr/selectableItemBackground"
|
||||
app:cardCornerRadius="12dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="1px"
|
||||
android:clickable="false"
|
||||
app:cardBackgroundColor="@color/non_square_icon_background"
|
||||
app:cardCornerRadius="12dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ac.mdiq.podcini.ui.view.SquareImageView
|
||||
android:id="@+id/coverImage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitCenter"
|
||||
android:outlineProvider="background"
|
||||
squareImageView:direction="width"
|
||||
tools:src="@tools:sample/avatars" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fallbackTitleLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignStart="@+id/coverImage"
|
||||
android:layout_alignLeft="@+id/coverImage"
|
||||
android:layout_alignTop="@+id/coverImage"
|
||||
android:layout_alignEnd="@+id/coverImage"
|
||||
android:layout_alignRight="@+id/coverImage"
|
||||
android:layout_alignBottom="@+id/coverImage"
|
||||
android:background="@color/feed_text_bg"
|
||||
android:gravity="center"
|
||||
android:ellipsize="end"
|
||||
android:padding="6dp"
|
||||
android:textColor="#fff"
|
||||
tools:text="@sample/episodes.json/data/title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/episodeCount"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="3"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:textSize="14sp"
|
||||
style="@style/TextPill"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/errorIcon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignBottom="@id/coverImage"
|
||||
android:layout_margin="8dp"
|
||||
android:visibility="gone"
|
||||
android:contentDescription="@string/refresh_failed_msg"
|
||||
app:srcCompat="@drawable/ic_error"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/titleLabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:lines="2"
|
||||
android:importantForAccessibility="no"
|
||||
tools:text="@sample/episodes.json/data/title" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/selectContainer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/selectCheckBox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:minWidth="0dp"
|
||||
android:minHeight="0dp"
|
||||
android:layout_margin="8dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
</FrameLayout>
|
|
@ -1,43 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/remove_feed"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/remove_feed_label"
|
||||
android:icon="@drawable/ic_delete"/>
|
||||
<item
|
||||
android:id="@+id/keep_updated"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/keep_updated"
|
||||
android:icon="@drawable/ic_refresh"/>
|
||||
<item
|
||||
android:id="@+id/autodownload"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/auto_download_label"
|
||||
android:icon="@drawable/ic_download"/>
|
||||
<item
|
||||
android:id="@+id/autoDeleteDownload"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/auto_delete_label"
|
||||
android:icon="@drawable/ic_delete_auto"/>
|
||||
<item
|
||||
android:id="@+id/playback_speed"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/playback_speed"
|
||||
android:icon="@drawable/ic_playback_speed"/>
|
||||
<item
|
||||
android:id="@+id/edit_tags"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/edit_tags"
|
||||
android:icon="@drawable/ic_tag"/>
|
||||
<item
|
||||
android:id="@+id/associate_queue"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/pref_feed_associated_queue"
|
||||
android:icon="@drawable/ic_playlist_play"/>
|
||||
<item
|
||||
android:id="@+id/export_opml"
|
||||
android:menuCategory="container"
|
||||
android:title="@string/opml_export_label"
|
||||
android:icon="@drawable/baseline_import_export_24"/>
|
||||
</menu>
|
|
@ -26,6 +26,9 @@
|
|||
<item
|
||||
android:id="@+id/refresh_item"
|
||||
android:title="@string/refresh_label"
|
||||
android:menuCategory="container"
|
||||
custom:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/toggle_grid_list"
|
||||
android:title="@string/toggle_grid_list"
|
||||
custom:showAsAction="never" />
|
||||
</menu>
|
||||
|
|
|
@ -119,6 +119,7 @@
|
|||
<string name="error_label">Error</string>
|
||||
<string name="error_msg_prefix">An error occurred:</string>
|
||||
<string name="refresh_label">Refresh</string>
|
||||
<string name="toggle_grid_list">Toggle grid list</string>
|
||||
<string name="refreshing_label">Refreshing</string>
|
||||
<string name="reconcile_label">Reconcile</string>
|
||||
<string name="chapters_label">Chapters</string>
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
# 6.8.3 (Preview release)
|
||||
|
||||
* most of Subscriptions view are in Jetpack Compose, feed viewholder and adapters etc are removed
|
||||
* added toggle grid and list views in the menu of Subscriptions
|
||||
* migrated reliance on compose.material to compose.material3
|
||||
* not yet for prime time
|
||||
|
||||
# 6.8.2 (Preview release)
|
||||
|
||||
* AudioPlayerFragment got overhauled. migrated to Jetpack Compose and PlayUI and PlayerDetailed fragments are Removed
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
Version 6.8.3 (preview release):
|
||||
|
||||
* most of Subscriptions view are in Jetpack Compose, feed viewholder and adapters etc are removed
|
||||
* added toggle grid and list views in the menu of Subscriptions
|
||||
* migrated reliance on compose.material to compose.material3
|
||||
* not yet for prime time
|
|
@ -33,7 +33,8 @@ kotlin = "2.0.20"
|
|||
kotlinxCoroutinesAndroid = "1.8.1"
|
||||
libraryBase = "2.1.0"
|
||||
lifecycleRuntimeKtx = "2.8.6"
|
||||
material = "1.7.2"
|
||||
#material = "1.7.2"
|
||||
material3 = "1.3.0"
|
||||
material3Android = "1.3.0"
|
||||
materialVersion = "1.12.0"
|
||||
media3Common = "1.4.1"
|
||||
|
@ -87,8 +88,9 @@ androidx-espresso-intents = { module = "androidx.test.espresso:espresso-intents"
|
|||
androidx-gridlayout = { module = "androidx.gridlayout:gridlayout", version.ref = "gridlayout" }
|
||||
androidx-junit = { module = "androidx.test.ext:junit", version.ref = "junit" }
|
||||
androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
|
||||
androidx-material = { module = "androidx.compose.material:material", version.ref = "material" }
|
||||
androidx-material3-android = { group = "androidx.compose.material3", name = "material3-android", version.ref = "material3Android" }
|
||||
#androidx-material = { module = "androidx.compose.material:material", version.ref = "material" }
|
||||
androidx-material3 = { module = "androidx.compose.material3:material3", version.ref = "material3" }
|
||||
androidx-material3-android = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" }
|
||||
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3Exoplayer" }
|
||||
androidx-media3-media3-datasource-okhttp = { module = "androidx.media3:media3-datasource-okhttp", version.ref = "media3Ui" }
|
||||
androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3Ui" }
|
||||
|
|
Loading…
Reference in New Issue