|
|
@ -34,13 +34,14 @@ import androidx.compose.ui.Modifier |
|
|
|
import androidx.compose.ui.graphics.StrokeCap |
|
|
|
import androidx.compose.ui.graphics.StrokeCap |
|
|
|
import androidx.compose.ui.res.pluralStringResource |
|
|
|
import androidx.compose.ui.res.pluralStringResource |
|
|
|
import androidx.compose.ui.semantics.Role |
|
|
|
import androidx.compose.ui.semantics.Role |
|
|
|
|
|
|
|
import androidx.compose.ui.tooling.preview.Preview |
|
|
|
import androidx.compose.ui.unit.dp |
|
|
|
import androidx.compose.ui.unit.dp |
|
|
|
import io.element.android.libraries.designsystem.preview.DayNightPreviews |
|
|
|
import io.element.android.libraries.designsystem.preview.ElementThemedPreview |
|
|
|
import io.element.android.libraries.designsystem.preview.ElementPreview |
|
|
|
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.Icon |
|
|
|
import io.element.android.libraries.designsystem.theme.components.Icon |
|
|
|
import io.element.android.libraries.designsystem.theme.components.IconToggleButton |
|
|
|
import io.element.android.libraries.designsystem.theme.components.IconToggleButton |
|
|
|
import io.element.android.libraries.designsystem.theme.components.LinearProgressIndicator |
|
|
|
import io.element.android.libraries.designsystem.theme.components.LinearProgressIndicator |
|
|
|
import io.element.android.libraries.designsystem.theme.components.Text |
|
|
|
import io.element.android.libraries.designsystem.theme.components.Text |
|
|
|
|
|
|
|
import io.element.android.libraries.designsystem.toEnabledColor |
|
|
|
import io.element.android.libraries.theme.ElementTheme |
|
|
|
import io.element.android.libraries.theme.ElementTheme |
|
|
|
import io.element.android.libraries.ui.strings.CommonPlurals |
|
|
|
import io.element.android.libraries.ui.strings.CommonPlurals |
|
|
|
|
|
|
|
|
|
|
@ -55,6 +56,7 @@ fun PollAnswerView( |
|
|
|
.fillMaxWidth() |
|
|
|
.fillMaxWidth() |
|
|
|
.selectable( |
|
|
|
.selectable( |
|
|
|
selected = answerItem.isSelected, |
|
|
|
selected = answerItem.isSelected, |
|
|
|
|
|
|
|
enabled = answerItem.isEnabled, |
|
|
|
onClick = onClick, |
|
|
|
onClick = onClick, |
|
|
|
role = Role.RadioButton, |
|
|
|
role = Role.RadioButton, |
|
|
|
) |
|
|
|
) |
|
|
@ -62,6 +64,7 @@ fun PollAnswerView( |
|
|
|
IconToggleButton( |
|
|
|
IconToggleButton( |
|
|
|
modifier = Modifier.size(22.dp), |
|
|
|
modifier = Modifier.size(22.dp), |
|
|
|
checked = answerItem.isSelected, |
|
|
|
checked = answerItem.isSelected, |
|
|
|
|
|
|
|
enabled = answerItem.isEnabled, |
|
|
|
colors = IconButtonDefaults.iconToggleButtonColors( |
|
|
|
colors = IconButtonDefaults.iconToggleButtonColors( |
|
|
|
contentColor = ElementTheme.colors.iconSecondary, |
|
|
|
contentColor = ElementTheme.colors.iconSecondary, |
|
|
|
checkedContentColor = ElementTheme.colors.iconPrimary, |
|
|
|
checkedContentColor = ElementTheme.colors.iconPrimary, |
|
|
@ -83,7 +86,8 @@ fun PollAnswerView( |
|
|
|
Row { |
|
|
|
Row { |
|
|
|
Text( |
|
|
|
Text( |
|
|
|
modifier = Modifier.weight(1f), |
|
|
|
modifier = Modifier.weight(1f), |
|
|
|
text = answerItem.answer.text |
|
|
|
text = answerItem.answer.text, |
|
|
|
|
|
|
|
style = if (answerItem.isWinner) ElementTheme.typography.fontBodyLgMedium else ElementTheme.typography.fontBodyLgRegular, |
|
|
|
) |
|
|
|
) |
|
|
|
if (answerItem.isDisclosed) { |
|
|
|
if (answerItem.isDisclosed) { |
|
|
|
Text( |
|
|
|
Text( |
|
|
@ -93,35 +97,85 @@ fun PollAnswerView( |
|
|
|
count = answerItem.votesCount, |
|
|
|
count = answerItem.votesCount, |
|
|
|
answerItem.votesCount |
|
|
|
answerItem.votesCount |
|
|
|
), |
|
|
|
), |
|
|
|
style = ElementTheme.typography.fontBodySmRegular, |
|
|
|
style = if (answerItem.isWinner) ElementTheme.typography.fontBodySmMedium else ElementTheme.typography.fontBodySmRegular, |
|
|
|
color = ElementTheme.colors.textSecondary, |
|
|
|
color = if (answerItem.isWinner) ElementTheme.colors.textPrimary else ElementTheme.colors.textSecondary, |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
Spacer(modifier = Modifier.height(10.dp)) |
|
|
|
Spacer(modifier = Modifier.height(10.dp)) |
|
|
|
LinearProgressIndicator( |
|
|
|
LinearProgressIndicator( |
|
|
|
modifier = Modifier.fillMaxWidth(), |
|
|
|
modifier = Modifier.fillMaxWidth(), |
|
|
|
progress = answerItem.percentage, |
|
|
|
color = if (answerItem.isWinner) ElementTheme.colors.textSuccessPrimary else answerItem.isEnabled.toEnabledColor(), |
|
|
|
|
|
|
|
progress = when { |
|
|
|
|
|
|
|
answerItem.isDisclosed -> answerItem.percentage |
|
|
|
|
|
|
|
answerItem.isSelected -> 1f |
|
|
|
|
|
|
|
else -> 0f |
|
|
|
|
|
|
|
}, |
|
|
|
strokeCap = StrokeCap.Round, |
|
|
|
strokeCap = StrokeCap.Round, |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@DayNightPreviews |
|
|
|
@Preview |
|
|
|
|
|
|
|
@Composable |
|
|
|
|
|
|
|
internal fun PollAnswerDisclosedNotSelectedPreview() = ElementThemedPreview { |
|
|
|
|
|
|
|
PollAnswerView( |
|
|
|
|
|
|
|
answerItem = aPollAnswerItem(isDisclosed = true, isSelected = false), |
|
|
|
|
|
|
|
onClick = { }, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Preview |
|
|
|
|
|
|
|
@Composable |
|
|
|
|
|
|
|
internal fun PollAnswerDisclosedSelectedPreview() = ElementThemedPreview { |
|
|
|
|
|
|
|
PollAnswerView( |
|
|
|
|
|
|
|
answerItem = aPollAnswerItem(isDisclosed = true, isSelected = true), |
|
|
|
|
|
|
|
onClick = { } |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Preview |
|
|
|
@Composable |
|
|
|
@Composable |
|
|
|
internal fun PollAnswerViewNoResultsPreview() = ElementPreview { |
|
|
|
internal fun PollAnswerUndisclosedNotSelectedPreview() = ElementThemedPreview { |
|
|
|
PollAnswerView( |
|
|
|
PollAnswerView( |
|
|
|
answerItem = aPollAnswerItem(isSelected = true), |
|
|
|
answerItem = aPollAnswerItem(isDisclosed = false, isSelected = false), |
|
|
|
onClick = { }, |
|
|
|
onClick = { }, |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@DayNightPreviews |
|
|
|
@Preview |
|
|
|
|
|
|
|
@Composable |
|
|
|
|
|
|
|
internal fun PollAnswerUndisclosedSelectedPreview() = ElementThemedPreview { |
|
|
|
|
|
|
|
PollAnswerView( |
|
|
|
|
|
|
|
answerItem = aPollAnswerItem(isDisclosed = false, isSelected = true), |
|
|
|
|
|
|
|
onClick = { } |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Preview |
|
|
|
|
|
|
|
@Composable |
|
|
|
|
|
|
|
internal fun PollAnswerEndedWinnerNotSelectedPreview() = ElementThemedPreview { |
|
|
|
|
|
|
|
PollAnswerView( |
|
|
|
|
|
|
|
answerItem = aPollAnswerItem(isDisclosed = true, isSelected = false, isEnabled = false, isWinner = true), |
|
|
|
|
|
|
|
onClick = { } |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Preview |
|
|
|
|
|
|
|
@Composable |
|
|
|
|
|
|
|
internal fun PollAnswerEndedWinnerSelectedPreview() = ElementThemedPreview { |
|
|
|
|
|
|
|
PollAnswerView( |
|
|
|
|
|
|
|
answerItem = aPollAnswerItem(isDisclosed = true, isSelected = true, isEnabled = false, isWinner = true), |
|
|
|
|
|
|
|
onClick = { } |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Preview |
|
|
|
@Composable |
|
|
|
@Composable |
|
|
|
internal fun PollAnswerViewWithResultPreview() = ElementPreview { |
|
|
|
internal fun PollAnswerEndedSelectedPreview() = ElementThemedPreview { |
|
|
|
PollAnswerView( |
|
|
|
PollAnswerView( |
|
|
|
answerItem = aPollAnswerItem(isDisclosed = false), |
|
|
|
answerItem = aPollAnswerItem(isDisclosed = true, isSelected = true, isEnabled = false, isWinner = false), |
|
|
|
onClick = { } |
|
|
|
onClick = { } |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|