diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..da18ceb --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e84242b..ded4726 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -61,6 +61,7 @@ dependencies { implementation("androidx.navigation:navigation-fragment-ktx:2.7.5") implementation("androidx.navigation:navigation-ui-ktx:2.7.5") implementation("androidx.compose.material3:material3:1.1.2") + implementation("androidx.compose.material:material-icons-extended") // TODO: Remove stuff with ProGuard? implementation("org.matrix.android:matrix-android-sdk2:1.5.30") implementation("com.squareup.okhttp3:okhttp:4.12.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") diff --git a/app/src/main/java/eu/steffo/twom/room/MemberListItem.kt b/app/src/main/java/eu/steffo/twom/room/MemberListItem.kt new file mode 100644 index 0000000..a039f68 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/MemberListItem.kt @@ -0,0 +1,121 @@ +package eu.steffo.twom.room + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Icon +import androidx.compose.material3.ListItem +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import eu.steffo.twom.R +import eu.steffo.twom.matrix.LocalSession +import eu.steffo.twom.matrix.avatar.AvatarFromURL +import eu.steffo.twom.theme.colorRoleLater +import eu.steffo.twom.theme.colorRoleMaybe +import eu.steffo.twom.theme.colorRoleNoway +import eu.steffo.twom.theme.colorRoleSure +import eu.steffo.twom.theme.iconRoleLater +import eu.steffo.twom.theme.iconRoleMaybe +import eu.steffo.twom.theme.iconRoleNoway +import eu.steffo.twom.theme.iconRoleSure +import org.matrix.android.sdk.api.session.getUser + +// TODO: Check this with brain on + +@Composable +fun MemberListItem( + modifier: Modifier = Modifier, + memberId: String, + onClickMember: (memberId: String) -> Unit = {}, + rsvpAnswer: RSVPAnswer? = null, + rsvpComment: String = "", +) { + val session = LocalSession.current + + val user = session?.getUser(memberId) + + // TODO: These are going to get cached many times... + val crSure = colorRoleSure() + val crLater = colorRoleLater() + val crMaybe = colorRoleMaybe() + val crNoway = colorRoleNoway() + + ListItem( + modifier = Modifier.clickable { + onClickMember(memberId) + }, + headlineContent = { + Text(user?.displayName ?: stringResource(R.string.user_unresolved_name)) + }, + leadingContent = { + Box( + Modifier + .padding(end = 10.dp) + .size(40.dp) + .clip(MaterialTheme.shapes.extraLarge) + ) { + AvatarFromURL( + url = user?.avatarUrl, + ) + } + }, + trailingContent = { + when (rsvpAnswer) { + RSVPAnswer.SURE -> { + Icon( + imageVector = iconRoleSure, + contentDescription = stringResource(R.string.room_rsvp_sure_label), + tint = crSure.value, + ) + } + + RSVPAnswer.LATER -> { + Icon( + imageVector = iconRoleLater, + contentDescription = stringResource(R.string.room_rsvp_later_label), + tint = crLater.value, + ) + } + + RSVPAnswer.MAYBE -> { + Icon( + imageVector = iconRoleMaybe, + contentDescription = stringResource(R.string.room_rsvp_maybe_label), + tint = crMaybe.value, + ) + } + + RSVPAnswer.NOWAY -> { + Icon( + imageVector = iconRoleNoway, + contentDescription = stringResource(R.string.room_rsvp_later_label), + tint = crNoway.value, + ) + } + + null -> {} + } + }, + supportingContent = { + if (rsvpComment != "") { + Text( + text = rsvpComment, + color = when (rsvpAnswer) { + RSVPAnswer.SURE -> crSure.value + RSVPAnswer.LATER -> crLater.value + RSVPAnswer.MAYBE -> crMaybe.value + RSVPAnswer.NOWAY -> crNoway.value + null -> Color.Unspecified + } + ) + } + }, + ) +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/room/RSVPAnswer.kt b/app/src/main/java/eu/steffo/twom/room/RSVPAnswer.kt new file mode 100644 index 0000000..7cb3f2d --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/RSVPAnswer.kt @@ -0,0 +1,8 @@ +package eu.steffo.twom.room + +enum class RSVPAnswer { + SURE, + LATER, + MAYBE, + NOWAY, +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityChip.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityChip.kt new file mode 100644 index 0000000..e912301 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityChip.kt @@ -0,0 +1,49 @@ +package eu.steffo.twom.room + +import androidx.compose.material3.ElevatedFilterChip +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FilterChipDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import eu.steffo.twom.theme.StaticColorRole +import eu.steffo.twom.theme.TwoMPadding + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun RoomActivityChip( + modifier: Modifier = Modifier, + selected: Boolean = false, + onClick: () -> Unit = {}, + text: String, + imageVector: ImageVector, + colorRole: StaticColorRole, +) { + ElevatedFilterChip( + modifier = TwoMPadding.chips, + selected = selected, + onClick = onClick, + leadingIcon = { + Icon( + imageVector = imageVector, + contentDescription = null, + ) + }, + label = { + Text( + text = text, + style = MaterialTheme.typography.labelLarge, + ) + }, + colors = FilterChipDefaults.elevatedFilterChipColors( + iconColor = colorRole.value, + labelColor = colorRole.value, + selectedContainerColor = colorRole.valueContainer, + selectedLeadingIconColor = colorRole.onValueContainer, + selectedLabelColor = colorRole.onValueContainer, + ), + ) +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityChipLater.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipLater.kt new file mode 100644 index 0000000..599a760 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipLater.kt @@ -0,0 +1,25 @@ +package eu.steffo.twom.room + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.R +import eu.steffo.twom.theme.colorRoleLater +import eu.steffo.twom.theme.iconRoleLater + +@Composable +@Preview +fun RoomActivityChipLater( + modifier: Modifier = Modifier, + selected: Boolean = false, + onClick: () -> Unit = {}, +) { + RoomActivityChip( + selected = selected, + onClick = onClick, + imageVector = iconRoleLater, + text = stringResource(R.string.room_rsvp_later_label), + colorRole = colorRoleLater(), + ) +} diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityChipMaybe.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipMaybe.kt new file mode 100644 index 0000000..50c648f --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipMaybe.kt @@ -0,0 +1,26 @@ +package eu.steffo.twom.room + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.R +import eu.steffo.twom.theme.colorRoleMaybe +import eu.steffo.twom.theme.iconRoleMaybe + +@Composable +@Preview +fun RoomActivityChipMaybe( + modifier: Modifier = Modifier, + selected: Boolean = false, + onClick: () -> Unit = {}, +) { + // TODO: Pick a better color + RoomActivityChip( + selected = selected, + onClick = onClick, + imageVector = iconRoleMaybe, + text = stringResource(R.string.room_rsvp_maybe_label), + colorRole = colorRoleMaybe(), + ) +} diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityChipNoway.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipNoway.kt new file mode 100644 index 0000000..31339a0 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipNoway.kt @@ -0,0 +1,25 @@ +package eu.steffo.twom.room + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.R +import eu.steffo.twom.theme.colorRoleNoway +import eu.steffo.twom.theme.iconRoleNoway + +@Composable +@Preview +fun RoomActivityChipNoway( + modifier: Modifier = Modifier, + selected: Boolean = false, + onClick: () -> Unit = {}, +) { + RoomActivityChip( + selected = selected, + onClick = onClick, + imageVector = iconRoleNoway, + text = stringResource(R.string.room_rsvp_noway_label), + colorRole = colorRoleNoway(), + ) +} diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityChipSelector.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipSelector.kt new file mode 100644 index 0000000..7bc1b2c --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipSelector.kt @@ -0,0 +1,79 @@ +package eu.steffo.twom.room + +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import eu.steffo.twom.theme.TwoMPadding + +@Composable +@Preview +fun RoomActivityChipSelector( + modifier: Modifier = Modifier, + value: RSVPAnswer? = null, + onChange: (answer: RSVPAnswer?) -> Unit = {}, +) { + Box( + modifier = modifier + .horizontalScroll(rememberScrollState()) + ) { + Row( + modifier = Modifier + .padding(start = 8.dp, end = 8.dp) + ) { + RoomActivityChipSure( + modifier = TwoMPadding.chips, + selected = (value == RSVPAnswer.SURE), + onClick = { + onChange( + when (value) { + RSVPAnswer.SURE -> null + else -> RSVPAnswer.SURE + } + ) + } + ) + RoomActivityChipLater( + modifier = TwoMPadding.chips, + selected = (value == RSVPAnswer.LATER), + onClick = { + onChange( + when (value) { + RSVPAnswer.LATER -> null + else -> RSVPAnswer.LATER + } + ) + } + ) + RoomActivityChipMaybe( + modifier = TwoMPadding.chips, + selected = (value == RSVPAnswer.MAYBE), + onClick = { + onChange( + when (value) { + RSVPAnswer.MAYBE -> null + else -> RSVPAnswer.MAYBE + } + ) + } + ) + RoomActivityChipNoway( + modifier = TwoMPadding.chips, + selected = (value == RSVPAnswer.NOWAY), + onClick = { + onChange( + when (value) { + RSVPAnswer.NOWAY -> null + else -> RSVPAnswer.NOWAY + } + ) + } + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityChipSure.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipSure.kt new file mode 100644 index 0000000..a1cc316 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityChipSure.kt @@ -0,0 +1,26 @@ +package eu.steffo.twom.room + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.R +import eu.steffo.twom.theme.colorRoleSure +import eu.steffo.twom.theme.iconRoleSure + + +@Composable +@Preview +fun RoomActivityChipSure( + modifier: Modifier = Modifier, + selected: Boolean = false, + onClick: () -> Unit = {}, +) { + RoomActivityChip( + selected = selected, + onClick = onClick, + imageVector = iconRoleSure, + text = stringResource(R.string.room_rsvp_sure_label), + colorRole = colorRoleSure(), + ) +} diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityContent.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityContent.kt index ffac140..25638ec 100644 --- a/app/src/main/java/eu/steffo/twom/room/RoomActivityContent.kt +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityContent.kt @@ -2,11 +2,25 @@ package eu.steffo.twom.room import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text +import androidx.compose.material3.TextField import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import eu.steffo.twom.R +import eu.steffo.twom.matrix.LocalSession import eu.steffo.twom.theme.TwoMPadding + @Composable fun RoomActivityContent( modifier: Modifier = Modifier, @@ -15,11 +29,74 @@ fun RoomActivityContent( val roomSummary = LocalRoom.current?.getOrNull() val isError = (!isLoading && roomSummary == null) + var rsvpAnswer by rememberSaveable { mutableStateOf(null) } + var rsvpComment by rememberSaveable { mutableStateOf("") } + Column(modifier) { - Row(TwoMPadding.base) { - if (roomSummary != null) { + if (roomSummary != null) { + Row(TwoMPadding.base) { + Text( + text = stringResource(R.string.room_topic_title), + style = MaterialTheme.typography.titleMedium + ) + } + Row(TwoMPadding.base) { Text(roomSummary.topic) } + + Row(TwoMPadding.base) { + Text( + text = stringResource(R.string.room_rsvp_title), + style = MaterialTheme.typography.titleMedium + ) + } + + RoomActivityChipSelector( + value = rsvpAnswer, + onChange = { rsvpAnswer = it } + ) + + if (rsvpAnswer != null) { + Row(Modifier.padding(start = 10.dp, end = 10.dp, bottom = 10.dp)) { + TextField( + modifier = Modifier.fillMaxWidth(), + singleLine = true, + value = rsvpComment, + onValueChange = { rsvpComment = it }, + placeholder = { + Text(LocalContext.current.getString(R.string.room_rsvp_comment_placeholder)) + }, + ) + } + } + + Row(TwoMPadding.base) { + Text( + text = stringResource(R.string.room_invitees_title), + style = MaterialTheme.typography.titleMedium + ) + } + + // TODO: Risky assertion? + Column(TwoMPadding.base) { + MemberListItem( + memberId = LocalSession.current!!.myUserId, + rsvpAnswer = rsvpAnswer, + rsvpComment = if (rsvpAnswer != null) { + rsvpComment + } else { + "" + }, + ) + + roomSummary.otherMemberIds.forEach { + MemberListItem( + memberId = it, + rsvpAnswer = null, + rsvpComment = "", + ) + } + } } } } diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivityTopBar.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivityTopBar.kt index d6be7d6..8e4acc5 100644 --- a/app/src/main/java/eu/steffo/twom/room/RoomActivityTopBar.kt +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivityTopBar.kt @@ -7,6 +7,7 @@ import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable @@ -38,7 +39,10 @@ fun RoomActivityTopBar( }, title = { if (roomSummary != null) { - Text(roomSummary.displayName) + Text( + text = roomSummary.displayName, + style = MaterialTheme.typography.titleLarge, + ) } }, actions = { diff --git a/app/src/main/java/eu/steffo/twom/theme/StaticColorRole.kt b/app/src/main/java/eu/steffo/twom/theme/StaticColorRole.kt new file mode 100644 index 0000000..852b915 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/StaticColorRole.kt @@ -0,0 +1,10 @@ +package eu.steffo.twom.theme + +import androidx.compose.ui.graphics.Color + +data class StaticColorRole( + val value: Color, + val onValue: Color, + val valueContainer: Color, + val onValueContainer: Color, +) diff --git a/app/src/main/java/eu/steffo/twom/theme/TwoMPadding.kt b/app/src/main/java/eu/steffo/twom/theme/TwoMPadding.kt index 03f4694..0fb55cb 100644 --- a/app/src/main/java/eu/steffo/twom/theme/TwoMPadding.kt +++ b/app/src/main/java/eu/steffo/twom/theme/TwoMPadding.kt @@ -7,4 +7,5 @@ import androidx.compose.ui.unit.dp object TwoMPadding { val base = Modifier.padding(all = 10.dp) + val chips = Modifier.padding(start = 2.5.dp, end = 2.5.dp) } diff --git a/app/src/main/java/eu/steffo/twom/theme/colorRoleLater.kt b/app/src/main/java/eu/steffo/twom/theme/colorRoleLater.kt new file mode 100644 index 0000000..07f88a2 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/colorRoleLater.kt @@ -0,0 +1,29 @@ +package eu.steffo.twom.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import com.google.android.material.color.MaterialColors + + +@Composable +fun colorRoleLater(): StaticColorRole { + val ctx = LocalContext.current + + return when (isSystemInDarkTheme()) { + false -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x00658B)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFFFFF)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xC4E7FF)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x001E2C)), + ) + + true -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x7DD0FF)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x00344A)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x004C69)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xC4E7FF)), + ) + } +} diff --git a/app/src/main/java/eu/steffo/twom/theme/colorRoleMaybe.kt b/app/src/main/java/eu/steffo/twom/theme/colorRoleMaybe.kt new file mode 100644 index 0000000..47d8f45 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/colorRoleMaybe.kt @@ -0,0 +1,29 @@ +package eu.steffo.twom.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import com.google.android.material.color.MaterialColors + + +@Composable +fun colorRoleMaybe(): StaticColorRole { + val ctx = LocalContext.current + + return when (isSystemInDarkTheme()) { + false -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x765B00)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFFFFF)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFDF94)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x241A00)), + ) + + true -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xEDC148)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x3E2E00)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x594400)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFDF94)), + ) + } +} diff --git a/app/src/main/java/eu/steffo/twom/theme/colorRoleNoway.kt b/app/src/main/java/eu/steffo/twom/theme/colorRoleNoway.kt new file mode 100644 index 0000000..cd72ef4 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/colorRoleNoway.kt @@ -0,0 +1,29 @@ +package eu.steffo.twom.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import com.google.android.material.color.MaterialColors + + +@Composable +fun colorRoleNoway(): StaticColorRole { + val ctx = LocalContext.current + + return when (isSystemInDarkTheme()) { + false -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xAB3520)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFFFFF)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFDAD3)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x3F0400)), + ) + + true -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFB4A5)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x650A00)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x891D0A)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFDAD3)), + ) + } +} diff --git a/app/src/main/java/eu/steffo/twom/theme/colorRoleSure.kt b/app/src/main/java/eu/steffo/twom/theme/colorRoleSure.kt new file mode 100644 index 0000000..2e51ccb --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/colorRoleSure.kt @@ -0,0 +1,28 @@ +package eu.steffo.twom.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import com.google.android.material.color.MaterialColors + +@Composable +fun colorRoleSure(): StaticColorRole { + val ctx = LocalContext.current + + return when (isSystemInDarkTheme()) { + false -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x006E2C)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0xFFFFFF)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x7FFC95)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x002108)), + ) + + true -> StaticColorRole( + value = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x62DF7C)), + onValue = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x003913)), + valueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x00531F)), + onValueContainer = Color(MaterialColors.harmonizeWithPrimary(ctx, 0x7FFC95)), + ) + } +} diff --git a/app/src/main/java/eu/steffo/twom/theme/iconRoleLater.kt b/app/src/main/java/eu/steffo/twom/theme/iconRoleLater.kt new file mode 100644 index 0000000..69f887d --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/iconRoleLater.kt @@ -0,0 +1,6 @@ +package eu.steffo.twom.theme + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Schedule + +val iconRoleLater = Icons.Outlined.Schedule diff --git a/app/src/main/java/eu/steffo/twom/theme/iconRoleMaybe.kt b/app/src/main/java/eu/steffo/twom/theme/iconRoleMaybe.kt new file mode 100644 index 0000000..105ddb8 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/iconRoleMaybe.kt @@ -0,0 +1,6 @@ +package eu.steffo.twom.theme + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.PauseCircle + +val iconRoleMaybe = Icons.Outlined.PauseCircle diff --git a/app/src/main/java/eu/steffo/twom/theme/iconRoleNoway.kt b/app/src/main/java/eu/steffo/twom/theme/iconRoleNoway.kt new file mode 100644 index 0000000..6ebdb33 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/iconRoleNoway.kt @@ -0,0 +1,6 @@ +package eu.steffo.twom.theme + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.RemoveCircleOutline + +val iconRoleNoway = Icons.Outlined.RemoveCircleOutline diff --git a/app/src/main/java/eu/steffo/twom/theme/iconRoleSure.kt b/app/src/main/java/eu/steffo/twom/theme/iconRoleSure.kt new file mode 100644 index 0000000..1098723 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/theme/iconRoleSure.kt @@ -0,0 +1,6 @@ +package eu.steffo.twom.theme + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.CheckCircle + +val iconRoleSure = Icons.Outlined.CheckCircle diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9fe6a52..af007d5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,4 +36,17 @@ Error The entered username is not a valid Matrix ID. Failed to detect well-known data for the specified Matrix homeserver. The server might not exist, be offline, or not be supporting well-known lookups. + Invitees + Your reply + Sure! + I\'ll be late... + Maybe? + Nope. + About this party + [unknown user] + Will be there + Will arrive late + Will maybe partecipate + Won\'t be there + Leave a comment... \ No newline at end of file