Improved interaction of option drawers

This commit is contained in:
Ash 2022-04-22 04:46:05 +08:00
parent 128178ef86
commit 7d0721e80a
14 changed files with 44 additions and 22 deletions

View File

@ -13,10 +13,8 @@ import me.ash.reader.ui.component.ViewPager
import me.ash.reader.ui.ext.collectAsStateValue import me.ash.reader.ui.ext.collectAsStateValue
import me.ash.reader.ui.ext.findActivity import me.ash.reader.ui.ext.findActivity
import me.ash.reader.ui.page.common.ExtraName import me.ash.reader.ui.page.common.ExtraName
import me.ash.reader.ui.page.home.drawer.feed.FeedOptionDrawer import me.ash.reader.ui.page.home.feeds.option.feed.FeedOptionViewAction
import me.ash.reader.ui.page.home.drawer.feed.FeedOptionViewAction import me.ash.reader.ui.page.home.feeds.option.feed.FeedOptionViewModel
import me.ash.reader.ui.page.home.drawer.feed.FeedOptionViewModel
import me.ash.reader.ui.page.home.drawer.group.GroupOptionDrawer
import me.ash.reader.ui.page.home.feeds.FeedsPage import me.ash.reader.ui.page.home.feeds.FeedsPage
import me.ash.reader.ui.page.home.flow.FlowPage import me.ash.reader.ui.page.home.flow.FlowPage
import me.ash.reader.ui.page.home.read.ReadPage import me.ash.reader.ui.page.home.read.ReadPage
@ -150,7 +148,4 @@ fun HomePage(
), ),
) )
} }
FeedOptionDrawer()
GroupOptionDrawer()
} }

View File

@ -19,8 +19,8 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import me.ash.reader.data.entity.Feed import me.ash.reader.data.entity.Feed
import me.ash.reader.ui.page.home.drawer.feed.FeedOptionViewAction import me.ash.reader.ui.page.home.feeds.option.feed.FeedOptionViewAction
import me.ash.reader.ui.page.home.drawer.feed.FeedOptionViewModel import me.ash.reader.ui.page.home.feeds.option.feed.FeedOptionViewModel
@OptIn( @OptIn(
androidx.compose.foundation.ExperimentalFoundationApi::class, androidx.compose.foundation.ExperimentalFoundationApi::class,

View File

@ -38,6 +38,8 @@ import me.ash.reader.ui.ext.getName
import me.ash.reader.ui.page.common.RouteName import me.ash.reader.ui.page.common.RouteName
import me.ash.reader.ui.page.home.FilterBar import me.ash.reader.ui.page.home.FilterBar
import me.ash.reader.ui.page.home.FilterState import me.ash.reader.ui.page.home.FilterState
import me.ash.reader.ui.page.home.feeds.option.feed.FeedOptionDrawer
import me.ash.reader.ui.page.home.feeds.option.group.GroupOptionDrawer
import me.ash.reader.ui.page.home.feeds.subscribe.SubscribeDialog import me.ash.reader.ui.page.home.feeds.subscribe.SubscribeDialog
import me.ash.reader.ui.page.home.feeds.subscribe.SubscribeViewAction import me.ash.reader.ui.page.home.feeds.subscribe.SubscribeViewAction
import me.ash.reader.ui.page.home.feeds.subscribe.SubscribeViewModel import me.ash.reader.ui.page.home.feeds.subscribe.SubscribeViewModel
@ -239,5 +241,8 @@ fun FeedsPage(
) )
} }
) )
FeedOptionDrawer()
GroupOptionDrawer()
} }

View File

@ -27,8 +27,8 @@ import androidx.hilt.navigation.compose.hiltViewModel
import me.ash.reader.R import me.ash.reader.R
import me.ash.reader.data.entity.Feed import me.ash.reader.data.entity.Feed
import me.ash.reader.data.entity.Group import me.ash.reader.data.entity.Group
import me.ash.reader.ui.page.home.drawer.group.GroupOptionViewAction import me.ash.reader.ui.page.home.feeds.option.group.GroupOptionViewAction
import me.ash.reader.ui.page.home.drawer.group.GroupOptionViewModel import me.ash.reader.ui.page.home.feeds.option.group.GroupOptionViewModel
@OptIn(ExperimentalMaterialApi::class, androidx.compose.foundation.ExperimentalFoundationApi::class) @OptIn(ExperimentalMaterialApi::class, androidx.compose.foundation.ExperimentalFoundationApi::class)
@Composable @Composable

View File

@ -1,4 +1,4 @@
package me.ash.reader.ui.page.home.drawer.feed package me.ash.reader.ui.page.home.feeds.option.feed
import android.widget.Toast import android.widget.Toast
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons

View File

@ -1,6 +1,7 @@
package me.ash.reader.ui.page.home.drawer.feed package me.ash.reader.ui.page.home.feeds.option.feed
import android.widget.Toast import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@ -19,6 +20,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import kotlinx.coroutines.launch
import me.ash.reader.R import me.ash.reader.R
import me.ash.reader.ui.component.BottomDrawer import me.ash.reader.ui.component.BottomDrawer
import me.ash.reader.ui.component.TextFieldDialog import me.ash.reader.ui.component.TextFieldDialog
@ -39,10 +41,16 @@ fun FeedOptionDrawer(
val feed = viewState.feed val feed = viewState.feed
val toastString = stringResource(R.string.rename_toast, viewState.newName) val toastString = stringResource(R.string.rename_toast, viewState.newName)
BackHandler(viewState.drawerState.isVisible) {
scope.launch {
viewState.drawerState.hide()
}
}
BottomDrawer( BottomDrawer(
drawerState = viewState.drawerState, drawerState = viewState.drawerState,
sheetContent = { sheetContent = {
Column { Column(modifier = Modifier.navigationBarsPadding()) {
Column( Column(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,

View File

@ -1,4 +1,4 @@
package me.ash.reader.ui.page.home.drawer.feed package me.ash.reader.ui.page.home.feeds.option.feed
import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.ModalBottomSheetState import androidx.compose.material.ModalBottomSheetState

View File

@ -1,4 +1,4 @@
package me.ash.reader.ui.page.home.drawer.group package me.ash.reader.ui.page.home.feeds.option.group
import android.widget.Toast import android.widget.Toast
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons

View File

@ -1,4 +1,4 @@
package me.ash.reader.ui.page.home.drawer.group package me.ash.reader.ui.page.home.feeds.option.group
import android.widget.Toast import android.widget.Toast
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons

View File

@ -1,4 +1,4 @@
package me.ash.reader.ui.page.home.drawer.group package me.ash.reader.ui.page.home.feeds.option.group
import android.widget.Toast import android.widget.Toast
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons

View File

@ -1,4 +1,4 @@
package me.ash.reader.ui.page.home.drawer.group package me.ash.reader.ui.page.home.feeds.option.group
import android.widget.Toast import android.widget.Toast
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons

View File

@ -1,7 +1,8 @@
package me.ash.reader.ui.page.home.drawer.group package me.ash.reader.ui.page.home.feeds.option.group
import android.content.Context import android.content.Context
import android.widget.Toast import android.widget.Toast
import androidx.activity.compose.BackHandler
import androidx.compose.animation.animateContentSize import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.LazyRow
@ -27,8 +28,10 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import com.google.accompanist.flowlayout.FlowCrossAxisAlignment
import com.google.accompanist.flowlayout.FlowRow import com.google.accompanist.flowlayout.FlowRow
import com.google.accompanist.flowlayout.MainAxisAlignment import com.google.accompanist.flowlayout.MainAxisAlignment
import kotlinx.coroutines.launch
import me.ash.reader.R import me.ash.reader.R
import me.ash.reader.data.entity.Group import me.ash.reader.data.entity.Group
import me.ash.reader.ui.component.BottomDrawer import me.ash.reader.ui.component.BottomDrawer
@ -53,10 +56,16 @@ fun GroupOptionDrawer(
val group = viewState.group val group = viewState.group
val toastString = stringResource(R.string.rename_toast, viewState.newName) val toastString = stringResource(R.string.rename_toast, viewState.newName)
BackHandler(viewState.drawerState.isVisible) {
scope.launch {
viewState.drawerState.hide()
}
}
BottomDrawer( BottomDrawer(
drawerState = viewState.drawerState, drawerState = viewState.drawerState,
sheetContent = { sheetContent = {
Column { Column(modifier = Modifier.navigationBarsPadding()) {
Column( Column(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@ -153,6 +162,7 @@ private fun Preset(
) { ) {
FlowRow( FlowRow(
mainAxisAlignment = MainAxisAlignment.Start, mainAxisAlignment = MainAxisAlignment.Start,
crossAxisAlignment = FlowCrossAxisAlignment.Center,
crossAxisSpacing = 10.dp, crossAxisSpacing = 10.dp,
mainAxisSpacing = 10.dp, mainAxisSpacing = 10.dp,
) { ) {
@ -208,6 +218,7 @@ private fun FlowRowGroups(
) { ) {
FlowRow( FlowRow(
mainAxisAlignment = MainAxisAlignment.Start, mainAxisAlignment = MainAxisAlignment.Start,
crossAxisAlignment = FlowCrossAxisAlignment.Center,
crossAxisSpacing = 10.dp, crossAxisSpacing = 10.dp,
mainAxisSpacing = 10.dp, mainAxisSpacing = 10.dp,
) { ) {

View File

@ -1,4 +1,4 @@
package me.ash.reader.ui.page.home.drawer.group package me.ash.reader.ui.page.home.feeds.option.group
import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.ModalBottomSheetState import androidx.compose.material.ModalBottomSheetState

View File

@ -28,6 +28,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.accompanist.flowlayout.FlowCrossAxisAlignment
import com.google.accompanist.flowlayout.FlowRow import com.google.accompanist.flowlayout.FlowRow
import com.google.accompanist.flowlayout.MainAxisAlignment import com.google.accompanist.flowlayout.MainAxisAlignment
import me.ash.reader.R import me.ash.reader.R
@ -123,6 +124,7 @@ private fun Preset(
Spacer(modifier = Modifier.height(10.dp)) Spacer(modifier = Modifier.height(10.dp))
FlowRow( FlowRow(
mainAxisAlignment = MainAxisAlignment.Start, mainAxisAlignment = MainAxisAlignment.Start,
crossAxisAlignment = FlowCrossAxisAlignment.Center,
crossAxisSpacing = 10.dp, crossAxisSpacing = 10.dp,
mainAxisSpacing = 10.dp, mainAxisSpacing = 10.dp,
) { ) {
@ -200,6 +202,7 @@ private fun AddToGroup(
} else { } else {
FlowRow( FlowRow(
mainAxisAlignment = MainAxisAlignment.Start, mainAxisAlignment = MainAxisAlignment.Start,
crossAxisAlignment = FlowCrossAxisAlignment.Center,
crossAxisSpacing = 10.dp, crossAxisSpacing = 10.dp,
mainAxisSpacing = 10.dp, mainAxisSpacing = 10.dp,
) { ) {