Merge pull request #2209 from omnivore-app/fix/android-labels-scroll

Make the android label selector scrollable
This commit is contained in:
Jackson Harper
2023-05-19 11:30:02 +08:00
committed by GitHub
5 changed files with 30 additions and 10 deletions

View File

@ -17,8 +17,8 @@ android {
applicationId "app.omnivore.omnivore"
minSdk 26
targetSdk 33
versionCode 76
versionName "0.0.76"
versionCode 78
versionName "0.0.78"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {

View File

@ -3,9 +3,7 @@
package app.omnivore.omnivore.ui.components
import LabelChip
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.FocusInteraction
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.interaction.PressInteraction
@ -366,7 +364,13 @@ fun LabelsSelectionSheetContent(
}
if (filteredLabels.isNotEmpty()) {
FlowRow(modifier = Modifier.fillMaxWidth().padding(10.dp)) {
FlowRow(
modifier = Modifier
.fillMaxWidth()
.verticalScroll(rememberScrollState())
.padding(10.dp)
.padding(bottom = 55.dp)
) {
filteredLabels.forEach { label ->
val chipColors = LabelChipColors.fromHex(label.color)

View File

@ -165,6 +165,7 @@ fun LibraryViewContent(libraryViewModel: LibraryViewModel, modifier: Modifier) {
onRefresh = { libraryViewModel.refresh() }
)
val selectedItem: SavedItemWithLabelsAndHighlights? by libraryViewModel.actionsMenuItemLiveData.observeAsState()
val cardsData: List<SavedItemWithLabelsAndHighlights> by libraryViewModel.itemsLiveData.observeAsState(
listOf()
)
@ -188,10 +189,13 @@ fun LibraryViewContent(libraryViewModel: LibraryViewModel, modifier: Modifier) {
LibraryFilterBar(libraryViewModel)
}
items(cardsData) { cardDataWithLabels ->
val selected = cardDataWithLabels.savedItem.savedItemId == selectedItem?.savedItem?.savedItemId
SavedItemCard(
selected = selected,
savedItemViewModel = libraryViewModel,
savedItem = cardDataWithLabels,
onClickHandler = {
libraryViewModel.actionsMenuItemLiveData.postValue(null)
val activityClass =
if (cardDataWithLabels.savedItem.contentReader == "PDF") PDFReaderActivity::class.java else WebReaderLoadingContainerActivity::class.java
val intent = Intent(context, activityClass)

View File

@ -186,6 +186,7 @@ fun SearchViewContent(viewModel: SearchViewModel, modifier: Modifier) {
) {
items(cardsData) { cardDataWithLabels ->
SavedItemCard(
selected = false,
savedItemViewModel = viewModel,
savedItem = cardDataWithLabels,
onClickHandler = {

View File

@ -15,6 +15,8 @@ import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.focus.focusTarget
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.colorResource
@ -33,15 +35,23 @@ import coil.compose.rememberAsyncImagePainter
@OptIn(ExperimentalFoundationApi::class, ExperimentalLayoutApi::class)
@Composable
fun SavedItemCard(savedItemViewModel: SavedItemViewModel, savedItem: SavedItemWithLabelsAndHighlights, onClickHandler: () -> Unit, actionHandler: (SavedItemAction) -> Unit) {
val listState = rememberLazyListState()
fun SavedItemCard(
selected: Boolean,
savedItemViewModel: SavedItemViewModel,
savedItem: SavedItemWithLabelsAndHighlights,
onClickHandler: () -> Unit,
actionHandler: (SavedItemAction) -> Unit) {
// Log.d("selected", "is selected: ${selected}")
Column(
modifier = Modifier
modifier = Modifier
.combinedClickable(
onClick = onClickHandler,
onLongClick = { savedItemViewModel.actionsMenuItemLiveData.postValue(savedItem) }
onLongClick = {
savedItemViewModel.actionsMenuItemLiveData.postValue(savedItem)
}
)
.background(if (selected) MaterialTheme.colorScheme.surfaceVariant else MaterialTheme.colorScheme.background)
.fillMaxWidth()
) {
Row(
@ -51,6 +61,7 @@ fun SavedItemCard(savedItemViewModel: SavedItemViewModel, savedItem: SavedItemWi
.fillMaxWidth()
.padding(10.dp)
.background(Color.Transparent)
) {
Column(
verticalArrangement = Arrangement.spacedBy(5.dp),