Skip to content

Commit 53df5cb

Browse files
authored
Merge pull request #19 from Javernaut/improvement/stream_folding
Improving the StreamCard's fold button
2 parents 2f8a3db + 78ff779 commit 53df5cb

File tree

1 file changed

+31
-23
lines changed
  • app/src/main/java/com/javernaut/whatthecodec/home/ui/stream

1 file changed

+31
-23
lines changed

app/src/main/java/com/javernaut/whatthecodec/home/ui/stream/StreamCard.kt

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package com.javernaut.whatthecodec.home.ui.stream
22

33
import androidx.compose.animation.AnimatedVisibility
44
import androidx.compose.animation.core.animateFloatAsState
5-
import androidx.compose.foundation.clickable
6-
import androidx.compose.foundation.interaction.MutableInteractionSource
75
import androidx.compose.foundation.layout.Arrangement.spacedBy
86
import androidx.compose.foundation.layout.Column
97
import androidx.compose.foundation.layout.PaddingValues
@@ -17,10 +15,10 @@ import androidx.compose.foundation.lazy.LazyColumn
1715
import androidx.compose.foundation.lazy.itemsIndexed
1816
import androidx.compose.material.icons.Icons
1917
import androidx.compose.material.icons.filled.ExpandLess
20-
import androidx.compose.material.ripple.rememberRipple
2118
import androidx.compose.material3.Card
2219
import androidx.compose.material3.CardDefaults
2320
import androidx.compose.material3.Icon
21+
import androidx.compose.material3.IconButton
2422
import androidx.compose.material3.MaterialTheme
2523
import androidx.compose.material3.Text
2624
import androidx.compose.runtime.Composable
@@ -35,10 +33,12 @@ import androidx.compose.ui.platform.LocalLayoutDirection
3533
import androidx.compose.ui.res.stringResource
3634
import androidx.compose.ui.text.style.TextAlign
3735
import androidx.compose.ui.text.style.TextOverflow
36+
import androidx.compose.ui.tooling.preview.PreviewLightDark
3837
import androidx.compose.ui.unit.LayoutDirection
3938
import androidx.compose.ui.unit.dp
4039
import com.javernaut.whatthecodec.R
4140
import com.javernaut.whatthecodec.compose.common.GridLayout
41+
import com.javernaut.whatthecodec.compose.theme.WhatTheCodecTheme
4242
import io.github.javernaut.mediafile.BasicStreamInfo
4343
import io.github.javernaut.mediafile.MediaStream
4444

@@ -136,10 +136,9 @@ private fun StreamCardTopRow(
136136
arrowClicked: () -> Unit
137137
) {
138138
Row(
139-
Modifier
139+
verticalAlignment = Alignment.CenterVertically,
140+
modifier = Modifier
140141
.height(56.dp)
141-
.padding(end = 5.dp),
142-
verticalAlignment = Alignment.CenterVertically
143142
) {
144143
Text(
145144
text = title,
@@ -151,23 +150,32 @@ private fun StreamCardTopRow(
151150
maxLines = 1
152151
)
153152

154-
val angle by animateFloatAsState(
155-
targetValue = if (gridVisible)
156-
if (LocalLayoutDirection.current == LayoutDirection.Ltr) 360f else 0f
157-
else 180f
158-
)
159-
Icon(
160-
Icons.Filled.ExpandLess,
161-
contentDescription = null,
162-
modifier = Modifier
163-
.rotate(angle)
164-
.clickable(
165-
interactionSource = remember { MutableInteractionSource() },
166-
indication = rememberRipple(bounded = false),
167-
onClick = arrowClicked
168-
)
169-
.padding(12.dp),
170-
)
153+
IconButton(
154+
onClick = arrowClicked,
155+
modifier = Modifier.padding(end = 4.dp)
156+
) {
157+
val angle by animateFloatAsState(
158+
targetValue = if (gridVisible)
159+
if (LocalLayoutDirection.current == LayoutDirection.Ltr) 360f else 0f
160+
else 180f
161+
)
162+
Icon(
163+
imageVector = Icons.Filled.ExpandLess,
164+
contentDescription = null,
165+
modifier = Modifier.rotate(angle)
166+
)
167+
}
168+
}
169+
}
170+
171+
172+
@PreviewLightDark
173+
@Composable
174+
private fun StreamCardTopRowPreview() {
175+
WhatTheCodecTheme.Static {
176+
StreamCard(
177+
title = "Title"
178+
) {}
171179
}
172180
}
173181

0 commit comments

Comments
 (0)