feat(android): add separate touch actions for widget title and comment count

This commit is contained in:
Harsh Shandilya 2023-09-30 02:39:08 +05:30
parent 91bf5e5555
commit a3b7af0f79
No known key found for this signature in database
2 changed files with 45 additions and 32 deletions

View file

@ -6,10 +6,10 @@
*/ */
package dev.msfjarvis.claw.android.glance package dev.msfjarvis.claw.android.glance
import android.content.Intent
import android.net.Uri
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.text.font.FontStyle as UIFontStyle
import androidx.compose.ui.text.font.FontWeight as UIFontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.glance.GlanceComposable import androidx.glance.GlanceComposable
import androidx.glance.GlanceModifier import androidx.glance.GlanceModifier
@ -18,15 +18,15 @@ import androidx.glance.action.ActionParameters.Key
import androidx.glance.action.actionParametersOf import androidx.glance.action.actionParametersOf
import androidx.glance.action.actionStartActivity import androidx.glance.action.actionStartActivity
import androidx.glance.action.clickable import androidx.glance.action.clickable
import androidx.glance.appwidget.action.actionStartActivity
import androidx.glance.appwidget.cornerRadius import androidx.glance.appwidget.cornerRadius
import androidx.glance.background import androidx.glance.background
import androidx.glance.layout.Alignment import androidx.glance.layout.Alignment
import androidx.glance.layout.Box import androidx.glance.layout.Box
import androidx.glance.layout.Column import androidx.glance.layout.Row
import androidx.glance.layout.fillMaxWidth import androidx.glance.layout.fillMaxWidth
import androidx.glance.layout.padding import androidx.glance.layout.padding
import androidx.glance.text.FontStyle import androidx.glance.layout.wrapContentWidth
import androidx.glance.text.FontWeight
import androidx.glance.text.Text import androidx.glance.text.Text
import androidx.glance.text.TextAlign import androidx.glance.text.TextAlign
import androidx.glance.text.TextStyle import androidx.glance.text.TextStyle
@ -44,21 +44,26 @@ fun WidgetListEntry(
) { ) {
val titleStyle = MaterialTheme.typography.titleMedium val titleStyle = MaterialTheme.typography.titleMedium
val subtitleStyle = MaterialTheme.typography.labelLarge val subtitleStyle = MaterialTheme.typography.labelLarge
val postAction =
if (post.url.isNotEmpty()) {
actionStartActivity(Intent(Intent.ACTION_VIEW, Uri.parse(post.url)))
} else {
actionStartActivity<MainActivity>(actionParametersOf(destinationKey to post.shortId))
}
val commentsAction =
actionStartActivity<MainActivity>(actionParametersOf(destinationKey to post.shortId))
Box(modifier.padding(8.dp)) { Box(modifier.padding(8.dp)) {
Column( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
modifier = modifier =
GlanceModifier.fillMaxWidth() GlanceModifier.fillMaxWidth()
.background(GlanceTheme.colors.surfaceVariant) .background(GlanceTheme.colors.surfaceVariant)
.cornerRadius(8.dp) .cornerRadius(16.dp)
.padding(horizontal = 8.dp) .padding(8.dp),
.clickable(
actionStartActivity<MainActivity>(actionParametersOf(destinationKey to post.shortId))
),
) { ) {
Text( Text(
text = post.title, text = post.title,
modifier = GlanceModifier.padding(horizontal = 4.dp, vertical = 4.dp), modifier = GlanceModifier.defaultWeight().padding(start = 4.dp).clickable(postAction),
style = style =
TextStyle( TextStyle(
color = GlanceTheme.colors.onSurfaceVariant, color = GlanceTheme.colors.onSurfaceVariant,
@ -71,9 +76,7 @@ fun WidgetListEntry(
Text( Text(
text = "$count comments", text = "$count comments",
modifier = modifier =
GlanceModifier.defaultWeight() GlanceModifier.wrapContentWidth().padding(end = 4.dp).clickable(commentsAction),
.padding(horizontal = 4.dp, vertical = 4.dp)
.fillMaxWidth(),
style = style =
TextStyle( TextStyle(
color = GlanceTheme.colors.onSurfaceVariant, color = GlanceTheme.colors.onSurfaceVariant,
@ -87,20 +90,3 @@ fun WidgetListEntry(
} }
} }
} }
fun UIFontWeight?.toGlance(): FontWeight? {
return when (this) {
UIFontWeight.Normal -> FontWeight.Normal
UIFontWeight.Medium -> FontWeight.Medium
UIFontWeight.Bold -> FontWeight.Bold
else -> null
}
}
fun UIFontStyle?.toGlance(): FontStyle? {
return when (this) {
UIFontStyle.Normal -> FontStyle.Normal
UIFontStyle.Italic -> FontStyle.Italic
else -> null
}
}

View file

@ -0,0 +1,27 @@
/*
* Copyright © 2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
*/
package dev.msfjarvis.claw.android.glance
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight
fun FontWeight?.toGlance(): androidx.glance.text.FontWeight? {
return when (this) {
FontWeight.Normal -> androidx.glance.text.FontWeight.Normal
FontWeight.Medium -> androidx.glance.text.FontWeight.Medium
FontWeight.Bold -> androidx.glance.text.FontWeight.Bold
else -> null
}
}
fun FontStyle?.toGlance(): androidx.glance.text.FontStyle? {
return when (this) {
FontStyle.Normal -> androidx.glance.text.FontStyle.Normal
FontStyle.Italic -> androidx.glance.text.FontStyle.Italic
else -> null
}
}