Update: Use ActionChip for sort/filter and download-all chips

This commit is contained in:
machiav3lli 2022-10-09 23:08:17 +02:00
parent 269e462ae4
commit 1407e219d2
3 changed files with 24 additions and 94 deletions

View File

@ -7,13 +7,8 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth 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.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SuggestionChip
import androidx.compose.material3.SuggestionChipDefaults
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@ -31,6 +26,7 @@ import com.machiav3lli.fdroid.content.Preferences
import com.machiav3lli.fdroid.entity.Section import com.machiav3lli.fdroid.entity.Section
import com.machiav3lli.fdroid.ui.activities.MainActivityX import com.machiav3lli.fdroid.ui.activities.MainActivityX
import com.machiav3lli.fdroid.ui.compose.ProductsVerticalRecycler import com.machiav3lli.fdroid.ui.compose.ProductsVerticalRecycler
import com.machiav3lli.fdroid.ui.compose.components.ActionChip
import com.machiav3lli.fdroid.ui.compose.components.CategoryChip import com.machiav3lli.fdroid.ui.compose.components.CategoryChip
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.FunnelSimple import com.machiav3lli.fdroid.ui.compose.icons.phosphor.FunnelSimple
@ -88,26 +84,10 @@ fun ExplorePage(viewModel: MainNavFragmentViewModelX) {
mutableStateOf(false) mutableStateOf(false)
} }
SuggestionChip( ActionChip(
shape = MaterialTheme.shapes.medium, textId = R.string.sort_filter,
colors = SuggestionChipDefaults.suggestionChipColors( icon = Phosphor.FunnelSimple
containerColor = MaterialTheme.colorScheme.surface, ) { mainActivityX.navigateSortFilter(NavItem.Explore.destination) }
labelColor = MaterialTheme.colorScheme.onSurface,
),
onClick = {
mainActivityX.navigateSortFilter(NavItem.Explore.destination)
},
icon = {
Icon(
modifier = Modifier.size(18.dp),
imageVector = Phosphor.FunnelSimple,
contentDescription = stringResource(id = R.string.sort_filter)
)
},
label = {
Text(text = stringResource(id = R.string.sort_filter))
}
)
Spacer(modifier = Modifier.weight(1f)) Spacer(modifier = Modifier.weight(1f))
CategoryChip( CategoryChip(
category = stringResource(id = R.string.favorite_applications), category = stringResource(id = R.string.favorite_applications),

View File

@ -15,8 +15,6 @@ import androidx.compose.material3.ElevatedButton
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SuggestionChip
import androidx.compose.material3.SuggestionChipDefaults
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
@ -37,6 +35,7 @@ import com.machiav3lli.fdroid.database.entity.Product
import com.machiav3lli.fdroid.ui.activities.MainActivityX import com.machiav3lli.fdroid.ui.activities.MainActivityX
import com.machiav3lli.fdroid.ui.compose.ProductsHorizontalRecycler import com.machiav3lli.fdroid.ui.compose.ProductsHorizontalRecycler
import com.machiav3lli.fdroid.ui.compose.ProductsVerticalRecycler import com.machiav3lli.fdroid.ui.compose.ProductsVerticalRecycler
import com.machiav3lli.fdroid.ui.compose.components.ActionChip
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CaretDown import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CaretDown
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CaretUp import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CaretUp
@ -117,32 +116,18 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) {
) )
} }
Spacer(modifier = Modifier.weight(1f)) Spacer(modifier = Modifier.weight(1f))
SuggestionChip( ActionChip(
shape = MaterialTheme.shapes.medium, textId = R.string.update_all,
colors = SuggestionChipDefaults.suggestionChipColors( icon = Phosphor.Download,
containerColor = MaterialTheme.colorScheme.surface, ) {
labelColor = MaterialTheme.colorScheme.onSurface, secondaryList?.let {
), mainActivityX.syncConnection.binder?.updateApps(
onClick = { it.map(
secondaryList?.let { Product::toItem
mainActivityX.syncConnection.binder?.updateApps(
it.map(
Product::toItem
)
) )
}
},
icon = {
Icon(
modifier = Modifier.size(18.dp),
imageVector = Phosphor.Download,
contentDescription = stringResource(id = R.string.update_all)
) )
},
label = {
Text(text = stringResource(id = R.string.update_all))
} }
) }
} }
AnimatedVisibility(visible = updatesVisible) { AnimatedVisibility(visible = updatesVisible) {
ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item -> ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item ->
@ -159,26 +144,10 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) {
text = stringResource(id = R.string.installed_applications), text = stringResource(id = R.string.installed_applications),
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
) )
SuggestionChip( ActionChip(
shape = MaterialTheme.shapes.medium, textId = R.string.sort_filter,
colors = SuggestionChipDefaults.suggestionChipColors( icon = Phosphor.FunnelSimple
containerColor = MaterialTheme.colorScheme.surface, ) { mainActivityX.navigateSortFilter(NavItem.Installed.destination) }
labelColor = MaterialTheme.colorScheme.onSurface,
),
onClick = {
mainActivityX.navigateSortFilter(NavItem.Installed.destination)
},
icon = {
Icon(
modifier = Modifier.size(18.dp),
imageVector = Phosphor.FunnelSimple,
contentDescription = stringResource(id = R.string.sort_filter)
)
},
label = {
Text(text = stringResource(id = R.string.sort_filter))
}
)
} }
ProductsVerticalRecycler( ProductsVerticalRecycler(
productsList = primaryList?.sortedBy { it.label.lowercase() }, productsList = primaryList?.sortedBy { it.label.lowercase() },

View File

@ -4,14 +4,10 @@ import androidx.compose.foundation.background
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.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SuggestionChip
import androidx.compose.material3.SuggestionChipDefaults
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
@ -28,6 +24,7 @@ import com.machiav3lli.fdroid.R
import com.machiav3lli.fdroid.content.Preferences import com.machiav3lli.fdroid.content.Preferences
import com.machiav3lli.fdroid.ui.activities.MainActivityX import com.machiav3lli.fdroid.ui.activities.MainActivityX
import com.machiav3lli.fdroid.ui.compose.ProductsHorizontalRecycler import com.machiav3lli.fdroid.ui.compose.ProductsHorizontalRecycler
import com.machiav3lli.fdroid.ui.compose.components.ActionChip
import com.machiav3lli.fdroid.ui.compose.components.ProductsListItem import com.machiav3lli.fdroid.ui.compose.components.ProductsListItem
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.FunnelSimple import com.machiav3lli.fdroid.ui.compose.icons.phosphor.FunnelSimple
@ -97,26 +94,10 @@ fun LatestPage(viewModel: MainNavFragmentViewModelX) {
text = stringResource(id = R.string.recently_updated), text = stringResource(id = R.string.recently_updated),
modifier = Modifier.weight(1f), modifier = Modifier.weight(1f),
) )
SuggestionChip( ActionChip(
shape = MaterialTheme.shapes.medium, textId = R.string.sort_filter,
colors = SuggestionChipDefaults.suggestionChipColors( icon = Phosphor.FunnelSimple
containerColor = MaterialTheme.colorScheme.surface, ) { mainActivityX.navigateSortFilter(NavItem.Latest.destination) }
labelColor = MaterialTheme.colorScheme.onSurface,
),
onClick = {
mainActivityX.navigateSortFilter(NavItem.Latest.destination)
},
icon = {
Icon(
modifier = Modifier.size(18.dp),
imageVector = Phosphor.FunnelSimple,
contentDescription = stringResource(id = R.string.sort_filter)
)
},
label = {
Text(text = stringResource(id = R.string.sort_filter))
}
)
} }
} }
items( items(