summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/org/terst/listen/ui/EpisodeTransport.kt8
-rw-r--r--app/src/main/java/org/terst/listen/ui/SubscriptionRow.kt13
2 files changed, 17 insertions, 4 deletions
diff --git a/app/src/main/java/org/terst/listen/ui/EpisodeTransport.kt b/app/src/main/java/org/terst/listen/ui/EpisodeTransport.kt
index b8185bf..837b98a 100644
--- a/app/src/main/java/org/terst/listen/ui/EpisodeTransport.kt
+++ b/app/src/main/java/org/terst/listen/ui/EpisodeTransport.kt
@@ -112,13 +112,17 @@ fun EpisodeTransport(
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically,
) {
+ // Sleep, speed, ad -- Peter's order, and it was backwards. Sleep is the one set
+ // deliberately before settling down, so it gets the near edge; the ad button is
+ // pressed mid-listen when something slips through, so it sits furthest out where a
+ // stray press costs least.
+ SleepChip(sleep, onSleep)
+ SpeedChip(speed, actions.setSpeed)
// A circle-and-slash, the same mark the notification uses, so the two read as one
// control in two places rather than two features.
IconButton(onClick = actions.reportAd, enabled = playback.isPlaying) {
Icon(Icons.Default.Block, contentDescription = "This is an ad")
}
- SpeedChip(speed, actions.setSpeed)
- SleepChip(sleep, onSleep)
}
}
}
diff --git a/app/src/main/java/org/terst/listen/ui/SubscriptionRow.kt b/app/src/main/java/org/terst/listen/ui/SubscriptionRow.kt
index 7b793bb..c8b2dd5 100644
--- a/app/src/main/java/org/terst/listen/ui/SubscriptionRow.kt
+++ b/app/src/main/java/org/terst/listen/ui/SubscriptionRow.kt
@@ -1,7 +1,8 @@
package org.terst.listen.ui
import androidx.compose.foundation.background
-import androidx.compose.foundation.clickable
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
@@ -45,6 +46,7 @@ private const val CAUGHT_UP_ALPHA = 0.38f
* refresh looks exactly like a feed with nothing new, and that is the one case where "nothing
* waiting" is a lie worth shouting about.
*/
+@OptIn(ExperimentalFoundationApi::class)
@Composable
internal fun SubscriptionRow(
listing: SubscriptionListing,
@@ -56,7 +58,14 @@ internal fun SubscriptionRow(
val alpha = if (listing.hasWaiting) 1f else CAUGHT_UP_ALPHA
Row(
- Modifier.fillMaxWidth().clickable(onClick = onClick).padding(start = 16.dp, end = 4.dp),
+ Modifier
+ .fillMaxWidth()
+ // Tap opens the show; press and hold plays what it is offering. The same pair the
+ // episode list carries, for the same reason -- the three buttons are the deliberate
+ // actions, and "just play it" should cost no width. Null when the show is offering
+ // nothing, so holding an empty row does nothing rather than something arbitrary.
+ .combinedClickable(onClick = onClick, onLongClick = actions?.play)
+ .padding(start = 16.dp, end = 4.dp),
verticalAlignment = Alignment.Top,
) {
AsyncImage(