Update: Convert latest view to LazyColumn

This commit is contained in:
machiav3lli 2022-06-26 01:51:57 +02:00
parent d79e5abb9f
commit d31791ec02

View File

@ -7,12 +7,12 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.Settings import androidx.compose.material.icons.rounded.Settings
import androidx.compose.material.icons.rounded.Sync import androidx.compose.material.icons.rounded.Sync
@ -38,8 +38,8 @@ import com.looker.droidify.database.entity.Repository
import com.looker.droidify.service.SyncService import com.looker.droidify.service.SyncService
import com.looker.droidify.ui.activities.PrefsActivityX import com.looker.droidify.ui.activities.PrefsActivityX
import com.looker.droidify.ui.compose.ProductsHorizontalRecycler import com.looker.droidify.ui.compose.ProductsHorizontalRecycler
import com.looker.droidify.ui.compose.ProductsVerticalRecycler
import com.looker.droidify.ui.compose.components.ExpandableSearchAction import com.looker.droidify.ui.compose.components.ExpandableSearchAction
import com.looker.droidify.ui.compose.components.ProductsListItem
import com.looker.droidify.ui.compose.components.TopBar import com.looker.droidify.ui.compose.components.TopBar
import com.looker.droidify.ui.compose.components.TopBarAction import com.looker.droidify.ui.compose.components.TopBarAction
import com.looker.droidify.ui.compose.theme.AppTheme import com.looker.droidify.ui.compose.theme.AppTheme
@ -109,70 +109,74 @@ class LatestFragment : MainNavFragmentX() {
} }
} }
) { padding -> ) { padding ->
Column( LazyColumn(
Modifier Modifier
.padding(padding) .padding(padding)
.background(MaterialTheme.colorScheme.background) .background(MaterialTheme.colorScheme.background)
.fillMaxSize() .fillMaxSize(),
) { ) {
Text( item {
text = stringResource(id = R.string.new_applications),
modifier = Modifier.padding(8.dp)
)
ProductsHorizontalRecycler(secondaryList, repositories) { item ->
mainActivityX.navigateProduct(item.packageName)
}
Row(
modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text( Text(
text = stringResource(id = R.string.recently_updated), text = stringResource(id = R.string.new_applications),
modifier = Modifier.weight(1f), modifier = Modifier.padding(8.dp)
) )
SuggestionChip( ProductsHorizontalRecycler(secondaryList, repositories) { item ->
shape = MaterialTheme.shapes.medium, mainActivityX.navigateProduct(item.packageName)
colors = SuggestionChipDefaults.suggestionChipColors( }
containerColor = MaterialTheme.colorScheme.surface, }
labelColor = MaterialTheme.colorScheme.onSurface, item {
), Row(
onClick = { }, // TODO add sort & filter modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp),
icon = { verticalAlignment = Alignment.CenterVertically
Icon( ) {
modifier = Modifier.size(18.dp), Text(
painter = painterResource(id = R.drawable.ic_sort), text = stringResource(id = R.string.recently_updated),
contentDescription = stringResource(id = R.string.sort_filter) modifier = Modifier.weight(1f),
)
SuggestionChip(
shape = MaterialTheme.shapes.medium,
colors = SuggestionChipDefaults.suggestionChipColors(
containerColor = MaterialTheme.colorScheme.surface,
labelColor = MaterialTheme.colorScheme.onSurface,
),
onClick = { }, // TODO add sort & filter
icon = {
Icon(
modifier = Modifier.size(18.dp),
painter = painterResource(id = R.drawable.ic_sort),
contentDescription = stringResource(id = R.string.sort_filter)
)
},
label = {
Text(text = stringResource(id = R.string.sort_filter))
}
)
}
}
items(
items = primaryList?.map { it.toItem() } ?: emptyList(),
) { item ->
ProductsListItem(
item = item,
repo = repositories[item.repositoryId],
isFavorite = favorites.contains(item.packageName),
onUserClick = { mainActivityX.navigateProduct(it.packageName) },
onFavouriteClick = {
viewModel.setFavorite(
it.packageName,
!favorites.contains(it.packageName)
) )
}, },
label = { installed = installedList?.get(item.packageName),
Text(text = stringResource(id = R.string.sort_filter)) onActionClick = {
val installed = installedList?.get(it.packageName)
if (installed != null && installed.launcherActivities.isNotEmpty())
requireContext().onLaunchClick(installed, childFragmentManager)
else
mainActivityX.syncConnection.binder?.installApps(listOf(it))
} }
) )
} }
ProductsVerticalRecycler(
productsList = primaryList,
repositories = repositories,
favorites = favorites,
modifier = Modifier
.fillMaxWidth()
.weight(1f),
onUserClick = { item ->
mainActivityX.navigateProduct(item.packageName)
},
onFavouriteClick = { item ->
viewModel.setFavorite(
item.packageName,
!favorites.contains(item.packageName)
)
},
getInstalled = { installedList?.get(it.packageName) }
) { item ->
val installed = installedList?.get(item.packageName)
if (installed != null && installed.launcherActivities.isNotEmpty())
requireContext().onLaunchClick(installed, childFragmentManager)
else
mainActivityX.syncConnection.binder?.installApps(listOf(item))
}
} }
} }
} }