Skip to content

Commit f3b974b

Browse files
committed
wip
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 4f6c29c commit f3b974b

9 files changed

Lines changed: 138 additions & 189 deletions

File tree

‎ui/src/main/java/com/nextcloud/android/common/ui/share/ShareScreen.kt‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,7 @@ private fun ShareList(
245245
expandedShareIds + share.id
246246
}
247247
},
248-
onShowOverlay = onShowOverlay,
249-
onRemoveRecipient = { share, recipient ->
250-
viewModel.removeRecipient(share.id, recipient.clazz, recipient.value, recipient.instance)
251-
}
248+
onShowOverlay = onShowOverlay
252249
)
253250
}
254251

‎ui/src/main/java/com/nextcloud/android/common/ui/share/component/ShareContextMenu.kt‎

Lines changed: 0 additions & 45 deletions
This file was deleted.

‎ui/src/main/java/com/nextcloud/android/common/ui/share/component/ShareListItem.kt‎

Lines changed: 23 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,27 @@ package com.nextcloud.android.common.ui.share.component
1111

1212
import androidx.compose.animation.AnimatedVisibility
1313
import androidx.compose.foundation.background
14-
import androidx.compose.foundation.combinedClickable
14+
import androidx.compose.foundation.clickable
1515
import androidx.compose.foundation.layout.Box
1616
import androidx.compose.foundation.layout.Column
17-
import androidx.compose.foundation.layout.Row
1817
import androidx.compose.foundation.layout.fillMaxWidth
1918
import androidx.compose.foundation.layout.size
2019
import androidx.compose.material.icons.Icons
20+
import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight
2121
import androidx.compose.material.icons.filled.KeyboardArrowDown
22-
import androidx.compose.material.icons.filled.MoreVert
2322
import androidx.compose.material3.Icon
2423
import androidx.compose.material3.IconButton
2524
import androidx.compose.material3.ListItem
2625
import androidx.compose.material3.ListItemDefaults
2726
import androidx.compose.material3.MaterialTheme
2827
import androidx.compose.material3.Text
2928
import androidx.compose.runtime.Composable
30-
import androidx.compose.runtime.getValue
3129
import androidx.compose.runtime.key
32-
import androidx.compose.runtime.mutableStateOf
33-
import androidx.compose.runtime.remember
34-
import androidx.compose.runtime.setValue
3530
import androidx.compose.ui.Alignment
3631
import androidx.compose.ui.Modifier
3732
import androidx.compose.ui.draw.clip
3833
import androidx.compose.ui.draw.rotate
3934
import androidx.compose.ui.graphics.Color
40-
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
41-
import androidx.compose.ui.platform.LocalHapticFeedback
4235
import androidx.compose.ui.res.stringResource
4336
import androidx.compose.ui.text.style.TextOverflow
4437
import androidx.compose.ui.unit.dp
@@ -60,8 +53,6 @@ private val LEADING_ICON_SIZE = 24.dp
6053
@Composable
6154
fun ShareListItem(state: ShareListItemState, permissionPresets: List<PermissionPreset>, actions: ShareListItemActions) {
6255
val share = state.share
63-
var contextMenuExpanded by remember { mutableStateOf(false) }
64-
val haptics = LocalHapticFeedback.current
6556

6657
Column(
6758
modifier = Modifier
@@ -70,13 +61,7 @@ fun ShareListItem(state: ShareListItemState, permissionPresets: List<PermissionP
7061
.background(MaterialTheme.colorScheme.surfaceVariant.copy(alpha = CONTAINER_ALPHA))
7162
) {
7263
ListItem(
73-
modifier = Modifier.combinedClickable(
74-
onClick = { actions.onSelectShare(share) },
75-
onLongClick = {
76-
haptics.performHapticFeedback(HapticFeedbackType.LongPress)
77-
contextMenuExpanded = true
78-
}
79-
),
64+
modifier = Modifier.clickable { actions.onSelectShare(share) },
8065
headlineContent = {
8166
Text(
8267
text = state.title,
@@ -85,22 +70,15 @@ fun ShareListItem(state: ShareListItemState, permissionPresets: List<PermissionP
8570
overflow = TextOverflow.Ellipsis
8671
)
8772
},
88-
leadingContent = { ShareItemLeadingContent(share) },
73+
leadingContent = { ShareItemLeadingContent(share = share, isExpanded = state.isExpanded) },
8974
supportingContent = {
9075
SharePermissionChip(
9176
options = PermissionPresetOption.optionsFor(share, permissionPresets),
9277
selectedOption = PermissionPresetOption.from(share.permissionPreset, permissionPresets),
9378
onClick = { actions.onShowOverlay(ShareOverlay.QuickShare(share.id)) }
9479
)
9580
},
96-
trailingContent = {
97-
ShareItemTrailingContent(
98-
state = state,
99-
isContextMenuExpanded = contextMenuExpanded,
100-
onContextMenuExpandedChange = { contextMenuExpanded = it },
101-
actions = actions
102-
)
103-
},
81+
trailingContent = { ShareItemTrailingContent(state = state, actions = actions) },
10482
colors = ListItemDefaults.colors(containerColor = Color.Transparent)
10583
)
10684

@@ -115,35 +93,20 @@ fun ShareListItem(state: ShareListItemState, permissionPresets: List<PermissionP
11593
}
11694

11795
@Composable
118-
private fun ShareItemTrailingContent(
119-
state: ShareListItemState,
120-
isContextMenuExpanded: Boolean,
121-
onContextMenuExpandedChange: (Boolean) -> Unit,
122-
actions: ShareListItemActions
123-
) {
124-
Row(verticalAlignment = Alignment.CenterVertically) {
125-
if (state.share.hasMultipleRecipients) {
126-
ExpandRecipientsButton(
127-
isExpanded = state.isExpanded,
128-
onClick = { actions.onToggleExpanded(state.share) }
129-
)
130-
}
131-
132-
Box {
133-
IconButton(onClick = { onContextMenuExpandedChange(true) }) {
134-
Icon(
135-
imageVector = Icons.Default.MoreVert,
136-
contentDescription = stringResource(R.string.share_view_list_item_more_options)
137-
)
138-
}
139-
140-
ShareContextMenu(
141-
expanded = isContextMenuExpanded,
142-
onDismiss = { onContextMenuExpandedChange(false) },
143-
onEdit = { actions.onSelectShare(state.share) }
144-
)
145-
}
96+
private fun ShareItemTrailingContent(state: ShareListItemState, actions: ShareListItemActions) {
97+
if (state.share.hasMultipleRecipients) {
98+
ExpandRecipientsButton(
99+
isExpanded = state.isExpanded,
100+
onClick = { actions.onToggleExpanded(state.share) }
101+
)
102+
return
146103
}
104+
105+
Icon(
106+
imageVector = Icons.AutoMirrored.Filled.KeyboardArrowRight,
107+
contentDescription = null,
108+
tint = MaterialTheme.colorScheme.onSurfaceVariant
109+
)
147110
}
148111

149112
@Composable
@@ -164,18 +127,19 @@ private fun ShareRecipientList(share: Share, permissionPresets: List<PermissionP
164127
recipientInstance = recipient.instance
165128
)
166129
)
167-
},
168-
onRemove = { actions.onRemoveRecipient(share, recipient) }
130+
}
169131
)
170132
}
171133
}
172134
}
173135
}
174136

175137
@Composable
176-
private fun ShareItemLeadingContent(share: Share) {
138+
private fun ShareItemLeadingContent(share: Share, isExpanded: Boolean) {
177139
if (share.hasMultipleRecipients) {
178-
RecipientAvatarStack(recipients = share.recipients)
140+
if (!isExpanded) {
141+
RecipientAvatarStack(recipients = share.recipients)
142+
}
179143
return
180144
}
181145

‎ui/src/main/java/com/nextcloud/android/common/ui/share/component/ShareRecipientRow.kt‎

Lines changed: 9 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,15 @@
1010
package com.nextcloud.android.common.ui.share.component
1111

1212
import androidx.compose.foundation.clickable
13-
import androidx.compose.foundation.layout.Box
1413
import androidx.compose.foundation.layout.padding
15-
import androidx.compose.foundation.layout.size
1614
import androidx.compose.material.icons.Icons
17-
import androidx.compose.material.icons.filled.Delete
18-
import androidx.compose.material.icons.filled.MoreVert
19-
import androidx.compose.material3.DropdownMenu
20-
import androidx.compose.material3.DropdownMenuItem
15+
import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight
2116
import androidx.compose.material3.Icon
22-
import androidx.compose.material3.IconButton
2317
import androidx.compose.material3.ListItem
2418
import androidx.compose.material3.ListItemDefaults
2519
import androidx.compose.material3.MaterialTheme
2620
import androidx.compose.material3.Text
2721
import androidx.compose.runtime.Composable
28-
import androidx.compose.runtime.getValue
29-
import androidx.compose.runtime.mutableStateOf
30-
import androidx.compose.runtime.remember
31-
import androidx.compose.runtime.setValue
3222
import androidx.compose.ui.Modifier
3323
import androidx.compose.ui.graphics.Color
3424
import androidx.compose.ui.res.stringResource
@@ -44,15 +34,13 @@ import com.nextcloud.android.common.ui.share.model.ui.recipientPresetOptions
4434

4535
private val ROW_START_PADDING = 24.dp
4636
private val AVATAR_SIZE = 24.dp
47-
private val MENU_ICON_SIZE = 18.dp
4837

4938
@Composable
5039
fun ShareRecipientRow(
5140
share: Share,
5241
recipient: Recipient,
5342
permissionPresets: List<PermissionPreset>,
54-
onEditPermissions: () -> Unit,
55-
onRemove: () -> Unit
43+
onEditPermissions: () -> Unit
5644
) {
5745
ListItem(
5846
modifier = Modifier
@@ -74,43 +62,13 @@ fun ShareRecipientRow(
7462
onClick = onEditPermissions
7563
)
7664
},
77-
trailingContent = { RecipientRowMenu(onRemove = onRemove) },
78-
colors = ListItemDefaults.colors(containerColor = Color.Transparent)
79-
)
80-
}
81-
82-
@Composable
83-
private fun RecipientRowMenu(onRemove: () -> Unit) {
84-
var expanded by remember { mutableStateOf(false) }
85-
86-
Box {
87-
IconButton(onClick = { expanded = true }) {
65+
trailingContent = {
8866
Icon(
89-
imageVector = Icons.Default.MoreVert,
90-
contentDescription = stringResource(R.string.share_view_list_item_more_options)
67+
imageVector = Icons.AutoMirrored.Filled.KeyboardArrowRight,
68+
contentDescription = null,
69+
tint = MaterialTheme.colorScheme.onSurfaceVariant
9170
)
92-
}
93-
94-
DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) {
95-
DropdownMenuItem(
96-
leadingIcon = {
97-
Icon(
98-
imageVector = Icons.Default.Delete,
99-
contentDescription = null,
100-
modifier = Modifier.size(MENU_ICON_SIZE)
101-
)
102-
},
103-
text = {
104-
Text(
105-
text = stringResource(R.string.share_view_recipient_remove),
106-
color = MaterialTheme.colorScheme.error
107-
)
108-
},
109-
onClick = {
110-
expanded = false
111-
onRemove()
112-
}
113-
)
114-
}
115-
}
71+
},
72+
colors = ListItemDefaults.colors(containerColor = Color.Transparent)
73+
)
11674
}

‎ui/src/main/java/com/nextcloud/android/common/ui/share/component/ShareSwitch.kt‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import androidx.compose.ui.Modifier
2424
import androidx.compose.ui.unit.dp
2525

2626
@Composable
27-
fun ShareSwitch(label: String, checked: Boolean, onCheckedChange: (Boolean) -> Unit) {
27+
fun ShareSwitch(label: String, checked: Boolean, onCheckedChange: (Boolean) -> Unit, enabled: Boolean = true) {
2828
Row(
2929
modifier = Modifier
3030
.fillMaxWidth()
@@ -35,14 +35,16 @@ fun ShareSwitch(label: String, checked: Boolean, onCheckedChange: (Boolean) -> U
3535
Text(
3636
text = label,
3737
style = MaterialTheme.typography.bodyLarge,
38+
color = if (enabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.outline,
3839
modifier = Modifier.weight(1f)
3940
)
4041

4142
Spacer(modifier = Modifier.width(16.dp))
4243

4344
Switch(
4445
checked = checked,
45-
onCheckedChange = onCheckedChange
46+
onCheckedChange = onCheckedChange,
47+
enabled = enabled
4648
)
4749
}
4850
}

0 commit comments

Comments
 (0)