Merge pull request #2209 from omnivore-app/fix/android-labels-scroll
Make the android label selector scrollable
This commit is contained in:
@ -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 {
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -186,6 +186,7 @@ fun SearchViewContent(viewModel: SearchViewModel, modifier: Modifier) {
|
||||
) {
|
||||
items(cardsData) { cardDataWithLabels ->
|
||||
SavedItemCard(
|
||||
selected = false,
|
||||
savedItemViewModel = viewModel,
|
||||
savedItem = cardDataWithLabels,
|
||||
onClickHandler = {
|
||||
|
||||
@ -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),
|
||||
|
||||
Reference in New Issue
Block a user