Add unfold more/unfold less action in FeedTab
This commit is contained in:
parent
a3c9e0a89e
commit
bfd54e1b19
@ -9,6 +9,7 @@ import com.readrops.db.entities.account.AccountType
|
||||
data class FeedState(
|
||||
val foldersAndFeeds: FolderAndFeedsState = FolderAndFeedsState.InitialState,
|
||||
val dialog: DialogState? = null,
|
||||
val areFoldersExpanded: Boolean = false
|
||||
)
|
||||
|
||||
sealed interface DialogState {
|
||||
|
@ -10,7 +10,6 @@ import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Add
|
||||
import androidx.compose.material.icons.filled.Delete
|
||||
import androidx.compose.material.icons.filled.MoreVert
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.FloatingActionButton
|
||||
import androidx.compose.material3.Icon
|
||||
@ -166,10 +165,13 @@ object FeedTab : Tab {
|
||||
title = { Text(text = "Feeds") },
|
||||
actions = {
|
||||
IconButton(
|
||||
onClick = {}
|
||||
onClick = { viewModel.setFolderExpandState(state.areFoldersExpanded.not()) }
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.MoreVert,
|
||||
painter = painterResource(id = if (state.areFoldersExpanded)
|
||||
R.drawable.ic_unfold_less
|
||||
else
|
||||
R.drawable.ic_unfold_more),
|
||||
contentDescription = null
|
||||
)
|
||||
}
|
||||
@ -231,6 +233,7 @@ object FeedTab : Tab {
|
||||
FolderExpandableItem(
|
||||
folder = folder,
|
||||
feeds = folderWithFeeds.second,
|
||||
isExpanded = state.areFoldersExpanded,
|
||||
onFeedClick = { feed ->
|
||||
viewModel.openDialog(
|
||||
DialogState.FeedSheet(feed, folder)
|
||||
|
@ -90,6 +90,9 @@ class FeedViewModel(
|
||||
}
|
||||
}
|
||||
|
||||
fun setFolderExpandState(isExpanded: Boolean) =
|
||||
_feedState.update { it.copy(areFoldersExpanded = isExpanded) }
|
||||
|
||||
fun closeDialog() = _feedState.update { it.copy(dialog = null) }
|
||||
|
||||
fun openDialog(state: DialogState) {
|
||||
@ -302,7 +305,9 @@ class FeedViewModel(
|
||||
if (updateFolder) {
|
||||
repository?.updateFolder(_folderState.value.folder)
|
||||
} else {
|
||||
repository?.addFolder(_folderState.value.folder.apply { accountId = currentAccount!!.id })
|
||||
repository?.addFolder(_folderState.value.folder.apply {
|
||||
accountId = currentAccount!!.id
|
||||
})
|
||||
}
|
||||
|
||||
closeDialog()
|
||||
|
@ -19,6 +19,7 @@ import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
@ -37,14 +38,19 @@ import com.readrops.db.entities.Folder
|
||||
fun FolderExpandableItem(
|
||||
folder: Folder,
|
||||
feeds: List<Feed>,
|
||||
isExpanded: Boolean = false,
|
||||
onFeedClick: (Feed) -> Unit,
|
||||
onFeedLongClick: (Feed) -> Unit,
|
||||
onUpdateFolder: () -> Unit,
|
||||
onDeleteFolder: () -> Unit
|
||||
) {
|
||||
var isExpanded by remember { mutableStateOf(false) }
|
||||
var isFolderExpanded by remember { mutableStateOf(false) }
|
||||
var isDropDownMenuExpanded by remember { mutableStateOf(false) }
|
||||
|
||||
LaunchedEffect(isExpanded) {
|
||||
isFolderExpanded = isExpanded
|
||||
}
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.animateContentSize(
|
||||
@ -56,7 +62,7 @@ fun FolderExpandableItem(
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.clickable { isExpanded = isExpanded.not() }
|
||||
.clickable { isFolderExpanded = isFolderExpanded.not() }
|
||||
.padding(
|
||||
horizontal = MaterialTheme.spacing.shortSpacing,
|
||||
vertical = MaterialTheme.spacing.veryShortSpacing,
|
||||
@ -121,7 +127,7 @@ fun FolderExpandableItem(
|
||||
}
|
||||
|
||||
Column {
|
||||
if (isExpanded) {
|
||||
if (isFolderExpanded) {
|
||||
for (feed in feeds) {
|
||||
FeedItem(
|
||||
feed = feed,
|
||||
|
5
appcompose/src/main/res/drawable/ic_unfold_less.xml
Normal file
5
appcompose/src/main/res/drawable/ic_unfold_less.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#000000"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M7.41,18.59L8.83,20 12,16.83 15.17,20l1.41,-1.41L12,14l-4.59,4.59zM16.59,5.41L15.17,4 12,7.17 8.83,4 7.41,5.41 12,10l4.59,-4.59z"/>
|
||||
</vector>
|
5
appcompose/src/main/res/drawable/ic_unfold_more.xml
Normal file
5
appcompose/src/main/res/drawable/ic_unfold_more.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#000000"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M12,5.83L15.17,9l1.41,-1.41L12,3 7.41,7.59 8.83,9 12,5.83zM12,18.17L8.83,15l-1.41,1.41L12,21l4.59,-4.59L15.17,15 12,18.17z"/>
|
||||
</vector>
|
Loading…
x
Reference in New Issue
Block a user