diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 73c63c24b..78deb3e8b 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -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 { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/LabelsSelectionSheet.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/LabelsSelectionSheet.kt index 468d08306..7da94c28f 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/LabelsSelectionSheet.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/components/LabelsSelectionSheet.kt @@ -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) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt index c8a268a72..9ebfc21fb 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt @@ -165,6 +165,7 @@ fun LibraryViewContent(libraryViewModel: LibraryViewModel, modifier: Modifier) { onRefresh = { libraryViewModel.refresh() } ) + val selectedItem: SavedItemWithLabelsAndHighlights? by libraryViewModel.actionsMenuItemLiveData.observeAsState() val cardsData: List 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) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt index 15d47dcf7..b8c92a734 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt @@ -186,6 +186,7 @@ fun SearchViewContent(viewModel: SearchViewModel, modifier: Modifier) { ) { items(cardsData) { cardDataWithLabels -> SavedItemCard( + selected = false, savedItemViewModel = viewModel, savedItem = cardDataWithLabels, onClickHandler = { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt index 6e60e0d77..654fcd22c 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt @@ -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),