Skip to content

Commit 15535b5

Browse files
style: Move profile enablement to list
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
1 parent 1b2372a commit 15535b5

5 files changed

Lines changed: 52 additions & 62 deletions

File tree

app/src/main/java/com/nextcloud/talk/profile/AvatarSection.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ private fun AvatarImage(state: ProfileUiState, avatarSize: Dp) {
5555
fun AvatarSection(state: ProfileUiState, callbacks: ProfileCallbacks, modifier: Modifier) {
5656
Column(modifier = modifier.padding(top = 16.dp), horizontalAlignment = Alignment.CenterHorizontally) {
5757
AvatarImage(state, 96.dp)
58+
if (state.showAvatarButtons) {
59+
AvatarButtonsRow(callbacks = callbacks, modifier = Modifier.padding(top = 8.dp, bottom = 8.dp))
60+
}
5861
if (state.displayName.isNotEmpty()) {
5962
Spacer(modifier = Modifier.height(8.dp))
6063
Text(
@@ -75,16 +78,6 @@ fun AvatarSection(state: ProfileUiState, callbacks: ProfileCallbacks, modifier:
7578
modifier = Modifier.padding(horizontal = 16.dp, vertical = 2.dp)
7679
)
7780
}
78-
if (state.showAvatarButtons) {
79-
AvatarButtonsRow(callbacks = callbacks, modifier = Modifier.padding(top = 8.dp, bottom = 8.dp))
80-
}
81-
if (state.showProfileEnabledCard) {
82-
ProfileEnabledCard(
83-
isEnabled = state.isProfileEnabled,
84-
onCheckedChange = callbacks.onProfileEnabledChange,
85-
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp)
86-
)
87-
}
8881
}
8982
}
9083

app/src/main/java/com/nextcloud/talk/profile/ProfileContentPane.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,15 @@ private fun ProfileItemList(
8080
contentPadding = PaddingValues(bottom = bottomPadding),
8181
modifier = modifier
8282
) {
83+
if (state.showProfileEnabledCard) {
84+
item(key = "profile_enabled_card") {
85+
ProfileEnabledCard(
86+
isEnabled = state.isProfileEnabled,
87+
onCheckedChange = callbacks.onProfileEnabledChange,
88+
modifier = Modifier.padding(start = 16.dp, top = 8.dp, bottom = 8.dp, end = 8.dp)
89+
)
90+
}
91+
}
8392
itemsIndexed(displayItems) { index, item ->
8493
val position = when {
8594
displayItems.size == 1 -> UserInfoDetailItemPosition.FIRST

app/src/main/java/com/nextcloud/talk/profile/ProfileEnabledCard.kt

Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ package com.nextcloud.talk.profile
88

99
import android.content.res.Configuration
1010
import androidx.compose.foundation.isSystemInDarkTheme
11+
import androidx.compose.foundation.clickable
12+
import androidx.compose.foundation.layout.Box
1113
import androidx.compose.foundation.layout.Row
1214
import androidx.compose.foundation.layout.Spacer
1315
import androidx.compose.foundation.layout.fillMaxWidth
1416
import androidx.compose.foundation.layout.padding
1517
import androidx.compose.foundation.layout.size
1618
import androidx.compose.foundation.layout.width
17-
import androidx.compose.material3.Card
1819
import androidx.compose.material3.Icon
1920
import androidx.compose.material3.MaterialTheme
2021
import androidx.compose.material3.Surface
@@ -34,45 +35,35 @@ import com.nextcloud.talk.R
3435

3536
@Composable
3637
fun ProfileEnabledCard(isEnabled: Boolean, onCheckedChange: (Boolean) -> Unit, modifier: Modifier = Modifier) {
37-
Row(
38-
modifier = modifier.fillMaxWidth(),
39-
verticalAlignment = Alignment.CenterVertically
38+
Box(
39+
modifier = Modifier
40+
.padding(top = 8.dp, bottom = 8.dp, start = 16.dp, end = 16.dp)
41+
.clickable { onCheckedChange(!isEnabled) }
4042
) {
41-
Icon(
42-
painter = painterResource(R.drawable.ic_id_card_24px),
43-
contentDescription = null,
44-
modifier = Modifier.size(24.dp),
45-
tint = MaterialTheme.colorScheme.primary
46-
)
47-
Spacer(modifier = Modifier.width(16.dp))
48-
Card(modifier = Modifier.weight(1f), onClick = { onCheckedChange(!isEnabled) }) {
49-
Row(
50-
modifier = Modifier
51-
.fillMaxWidth()
52-
.padding(horizontal = 16.dp, vertical = 12.dp),
53-
verticalAlignment = Alignment.CenterVertically
54-
) {
55-
Text(
56-
text = stringResource(
57-
if (isEnabled) {
58-
R.string.user_info_profile_disable
59-
} else {
60-
R.string.user_info_profile_enable
61-
}
62-
),
63-
style = MaterialTheme.typography.titleMedium,
64-
maxLines = 2,
65-
overflow = TextOverflow.Ellipsis,
66-
modifier = Modifier.weight(1f)
67-
)
68-
Spacer(modifier = Modifier.width(16.dp))
69-
Switch(
70-
checked = isEnabled,
71-
onCheckedChange = onCheckedChange
72-
)
73-
}
43+
Row(
44+
modifier = Modifier.fillMaxWidth(),
45+
verticalAlignment = Alignment.CenterVertically
46+
) {
47+
Icon(
48+
painter = painterResource(R.drawable.ic_id_card_24px),
49+
contentDescription = null,
50+
modifier = Modifier.size(24.dp),
51+
tint = MaterialTheme.colorScheme.primary
52+
)
53+
Spacer(modifier = Modifier.width(32.dp))
54+
Text(
55+
text = stringResource(R.string.user_info_profile_enable),
56+
style = MaterialTheme.typography.bodyLarge,
57+
maxLines = 2,
58+
overflow = TextOverflow.Ellipsis,
59+
modifier = Modifier.weight(1f)
60+
)
61+
Spacer(modifier = Modifier.width(16.dp))
62+
Switch(
63+
checked = isEnabled,
64+
onCheckedChange = onCheckedChange
65+
)
7466
}
75-
Spacer(modifier = Modifier.width(32.dp))
7667
}
7768
}
7869

app/src/main/java/com/nextcloud/talk/profile/UserInfoDetailItemEditable.kt

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import androidx.compose.runtime.remember
3333
import androidx.compose.runtime.setValue
3434
import androidx.compose.ui.Alignment
3535
import androidx.compose.ui.Modifier
36-
import androidx.compose.ui.draw.alpha
3736
import androidx.compose.ui.res.painterResource
3837
import androidx.compose.ui.res.stringResource
3938
import androidx.compose.ui.text.input.ImeAction
@@ -42,7 +41,6 @@ import androidx.compose.ui.unit.dp
4241
import com.nextcloud.talk.R
4342
import com.nextcloud.talk.models.json.userprofile.Scope
4443

45-
private const val ENABLED_ALPHA = 1f
4644
private const val DISABLED_ALPHA = 0.38f
4745

4846
@Composable
@@ -60,7 +58,7 @@ fun UserInfoDetailItemEditable(
6058
modifier = Modifier
6159
.fillMaxWidth()
6260
.defaultMinSize(minHeight = 48.dp)
63-
.padding(top = topPadding, bottom = bottomPadding),
61+
.padding(top = topPadding, bottom = bottomPadding, end = 16.dp),
6462
verticalAlignment = Alignment.CenterVertically
6563
) {
6664
Spacer(modifier = Modifier.width(16.dp))
@@ -84,15 +82,20 @@ fun UserInfoDetailItemEditable(
8482
enabled = enabled,
8583
singleLine = !multiLine,
8684
keyboardOptions = KeyboardOptions(imeAction = if (multiLine) ImeAction.Default else ImeAction.Next),
85+
trailingIcon = if (data.scope != null) {
86+
{ ScopeIconButton(data.scope, data.hint, enabled, listeners.onScopeClick) }
87+
} else {
88+
null
89+
},
8790
colors = OutlinedTextFieldDefaults.colors(
8891
focusedBorderColor = MaterialTheme.colorScheme.primary,
8992
focusedLabelColor = MaterialTheme.colorScheme.primary,
90-
cursorColor = MaterialTheme.colorScheme.primary
93+
cursorColor = MaterialTheme.colorScheme.primary,
94+
focusedTrailingIconColor = MaterialTheme.colorScheme.onSurfaceVariant,
95+
unfocusedTrailingIconColor = MaterialTheme.colorScheme.onSurfaceVariant,
96+
disabledTrailingIconColor = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = DISABLED_ALPHA)
9197
)
9298
)
93-
if (data.scope != null) {
94-
ScopeIconButton(data.scope, data.hint, enabled, listeners.onScopeClick)
95-
}
9699
}
97100
}
98101

@@ -106,16 +109,11 @@ private fun ScopeIconButton(scope: Scope, hint: String, enabled: Boolean, onScop
106109
}
107110
IconButton(
108111
onClick = { onScopeClick?.invoke() },
109-
modifier = Modifier
110-
.size(48.dp)
111-
.padding(top = 8.dp)
112-
.alpha(if (enabled) ENABLED_ALPHA else DISABLED_ALPHA),
113112
enabled = enabled
114113
) {
115114
Icon(
116115
painter = painterResource(id = scopeIconRes),
117-
contentDescription = stringResource(R.string.scope_toggle_description, hint),
118-
tint = MaterialTheme.colorScheme.onSurfaceVariant
116+
contentDescription = stringResource(R.string.scope_toggle_description, hint)
119117
)
120118
}
121119
}

app/src/main/res/values/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,6 @@ How to translate with transifex:
687687
<string name="user_info_headline">Headline</string>
688688
<string name="user_info_organisation">Organization</string>
689689
<string name="user_info_profile_enable">Enable profile</string>
690-
<string name="user_info_profile_disable">Disable profile</string>
691690
<string name="user_info_pronouns">Pronouns</string>
692691
<string name="user_info_role">Role</string>
693692
<string name="user_info_bluesky">Bluesky</string>

0 commit comments

Comments
 (0)