mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Add: Compose's top bar to MainNav fragment
This commit is contained in:
parent
67945b8d19
commit
02169f4adb
@ -1,6 +1,8 @@
|
|||||||
package com.looker.droidify.ui.fragments
|
package com.looker.droidify.ui.fragments
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@ -10,6 +12,9 @@ import androidx.compose.foundation.layout.Column
|
|||||||
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.material.ExperimentalMaterialApi
|
import androidx.compose.material.ExperimentalMaterialApi
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.rounded.Settings
|
||||||
|
import androidx.compose.material.icons.rounded.Sync
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
@ -21,7 +26,12 @@ import com.looker.droidify.database.entity.Product
|
|||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.databinding.FragmentComposeBinding
|
import com.looker.droidify.databinding.FragmentComposeBinding
|
||||||
import com.looker.droidify.entity.Section
|
import com.looker.droidify.entity.Section
|
||||||
|
import com.looker.droidify.service.SyncService
|
||||||
|
import com.looker.droidify.ui.activities.PrefsActivityX
|
||||||
import com.looker.droidify.ui.compose.ProductsVerticalRecycler
|
import com.looker.droidify.ui.compose.ProductsVerticalRecycler
|
||||||
|
import com.looker.droidify.ui.compose.components.ExpandableSearchAction
|
||||||
|
import com.looker.droidify.ui.compose.components.TopBar
|
||||||
|
import com.looker.droidify.ui.compose.components.TopBarAction
|
||||||
import com.looker.droidify.ui.compose.theme.AppTheme
|
import com.looker.droidify.ui.compose.theme.AppTheme
|
||||||
import com.looker.droidify.ui.compose.utils.SelectableChipRow
|
import com.looker.droidify.ui.compose.utils.SelectableChipRow
|
||||||
import com.looker.droidify.utility.isDarkTheme
|
import com.looker.droidify.utility.isDarkTheme
|
||||||
@ -50,7 +60,10 @@ class ExploreFragment : MainNavFragmentX() {
|
|||||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||||
repositories = it.associateBy { repo -> repo.id }
|
repositories = it.associateBy { repo -> repo.id }
|
||||||
}
|
}
|
||||||
viewModel.installed.observe(viewLifecycleOwner) {}
|
viewModel.installed.observe(viewLifecycleOwner) {
|
||||||
|
// Avoid the compiler using the same class as observer
|
||||||
|
Log.d(this::class.java.canonicalName, this.toString())
|
||||||
|
}
|
||||||
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
||||||
redrawPage(it, viewModel.categories.value ?: emptyList())
|
redrawPage(it, viewModel.categories.value ?: emptyList())
|
||||||
}
|
}
|
||||||
@ -69,7 +82,29 @@ class ExploreFragment : MainNavFragmentX() {
|
|||||||
else -> isDarkTheme
|
else -> isDarkTheme
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Scaffold { _ ->
|
Scaffold(
|
||||||
|
// TODO add the topBar to the activity instead of the fragments
|
||||||
|
topBar = {
|
||||||
|
TopBar(title = stringResource(id = R.string.application_name)) {
|
||||||
|
ExpandableSearchAction(
|
||||||
|
query = viewModel.searchQuery.value.orEmpty(),
|
||||||
|
onClose = {
|
||||||
|
viewModel.searchQuery.value = ""
|
||||||
|
},
|
||||||
|
onQueryChanged = { query ->
|
||||||
|
if (isResumed && query != viewModel.searchQuery.value)
|
||||||
|
viewModel.setSearchQuery(query)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
TopBarAction(icon = Icons.Rounded.Sync) {
|
||||||
|
mainActivityX.syncConnection.binder?.sync(SyncService.SyncRequest.MANUAL)
|
||||||
|
}
|
||||||
|
TopBarAction(icon = Icons.Rounded.Settings) {
|
||||||
|
startActivity(Intent(context, PrefsActivityX::class.java))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) { _ ->
|
||||||
Column(
|
Column(
|
||||||
Modifier
|
Modifier
|
||||||
.background(MaterialTheme.colorScheme.background)
|
.background(MaterialTheme.colorScheme.background)
|
||||||
|
@ -1,17 +1,35 @@
|
|||||||
package com.looker.droidify.ui.fragments
|
package com.looker.droidify.ui.fragments
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
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.*
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.Chip
|
import androidx.compose.material.Chip
|
||||||
import androidx.compose.material.ChipDefaults
|
import androidx.compose.material.ChipDefaults
|
||||||
import androidx.compose.material.ExperimentalMaterialApi
|
import androidx.compose.material.ExperimentalMaterialApi
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.rounded.Settings
|
||||||
|
import androidx.compose.material.icons.rounded.Sync
|
||||||
|
import androidx.compose.material3.ButtonDefaults
|
||||||
|
import androidx.compose.material3.ElevatedButton
|
||||||
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Scaffold
|
||||||
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
@ -27,8 +45,13 @@ import com.looker.droidify.content.Preferences
|
|||||||
import com.looker.droidify.database.entity.Product
|
import com.looker.droidify.database.entity.Product
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.databinding.FragmentComposeBinding
|
import com.looker.droidify.databinding.FragmentComposeBinding
|
||||||
|
import com.looker.droidify.service.SyncService
|
||||||
|
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.ProductsVerticalRecycler
|
||||||
|
import com.looker.droidify.ui.compose.components.ExpandableSearchAction
|
||||||
|
import com.looker.droidify.ui.compose.components.TopBar
|
||||||
|
import com.looker.droidify.ui.compose.components.TopBarAction
|
||||||
import com.looker.droidify.ui.compose.theme.AppTheme
|
import com.looker.droidify.ui.compose.theme.AppTheme
|
||||||
import com.looker.droidify.utility.isDarkTheme
|
import com.looker.droidify.utility.isDarkTheme
|
||||||
|
|
||||||
@ -56,7 +79,10 @@ class InstalledFragment : MainNavFragmentX() {
|
|||||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||||
repositories = it.associateBy { repo -> repo.id }
|
repositories = it.associateBy { repo -> repo.id }
|
||||||
}
|
}
|
||||||
viewModel.installed.observe(viewLifecycleOwner) {}
|
viewModel.installed.observe(viewLifecycleOwner) {
|
||||||
|
// Avoid the compiler using the same class as observer
|
||||||
|
Log.d(this::class.java.canonicalName, this.toString())
|
||||||
|
}
|
||||||
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
||||||
redrawPage(it, viewModel.secondaryProducts.value)
|
redrawPage(it, viewModel.secondaryProducts.value)
|
||||||
}
|
}
|
||||||
@ -75,7 +101,29 @@ class InstalledFragment : MainNavFragmentX() {
|
|||||||
else -> isDarkTheme
|
else -> isDarkTheme
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Scaffold { _ ->
|
Scaffold(
|
||||||
|
// TODO add the topBar to the activity instead of the fragments
|
||||||
|
topBar = {
|
||||||
|
TopBar(title = stringResource(id = R.string.application_name)) {
|
||||||
|
ExpandableSearchAction(
|
||||||
|
query = viewModel.searchQuery.value.orEmpty(),
|
||||||
|
onClose = {
|
||||||
|
viewModel.searchQuery.value = ""
|
||||||
|
},
|
||||||
|
onQueryChanged = { query ->
|
||||||
|
if (isResumed && query != viewModel.searchQuery.value)
|
||||||
|
viewModel.setSearchQuery(query)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
TopBarAction(icon = Icons.Rounded.Sync) {
|
||||||
|
mainActivityX.syncConnection.binder?.sync(SyncService.SyncRequest.MANUAL)
|
||||||
|
}
|
||||||
|
TopBarAction(icon = Icons.Rounded.Settings) {
|
||||||
|
startActivity(Intent(context, PrefsActivityX::class.java))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) { _ ->
|
||||||
var updatesVisible by remember(secondaryList) { mutableStateOf(true) }
|
var updatesVisible by remember(secondaryList) { mutableStateOf(true) }
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
|
@ -1,16 +1,32 @@
|
|||||||
package com.looker.droidify.ui.fragments
|
package com.looker.droidify.ui.fragments
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
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.*
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.Chip
|
import androidx.compose.material.Chip
|
||||||
import androidx.compose.material.ChipDefaults
|
import androidx.compose.material.ChipDefaults
|
||||||
import androidx.compose.material.ExperimentalMaterialApi
|
import androidx.compose.material.ExperimentalMaterialApi
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.rounded.Settings
|
||||||
|
import androidx.compose.material.icons.rounded.Sync
|
||||||
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Scaffold
|
||||||
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
@ -21,8 +37,13 @@ import com.looker.droidify.content.Preferences
|
|||||||
import com.looker.droidify.database.entity.Product
|
import com.looker.droidify.database.entity.Product
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.databinding.FragmentComposeBinding
|
import com.looker.droidify.databinding.FragmentComposeBinding
|
||||||
|
import com.looker.droidify.service.SyncService
|
||||||
|
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.ProductsVerticalRecycler
|
||||||
|
import com.looker.droidify.ui.compose.components.ExpandableSearchAction
|
||||||
|
import com.looker.droidify.ui.compose.components.TopBar
|
||||||
|
import com.looker.droidify.ui.compose.components.TopBarAction
|
||||||
import com.looker.droidify.ui.compose.theme.AppTheme
|
import com.looker.droidify.ui.compose.theme.AppTheme
|
||||||
import com.looker.droidify.utility.isDarkTheme
|
import com.looker.droidify.utility.isDarkTheme
|
||||||
|
|
||||||
@ -51,7 +72,10 @@ class LatestFragment : MainNavFragmentX() {
|
|||||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||||
repositories = it.associateBy { repo -> repo.id }
|
repositories = it.associateBy { repo -> repo.id }
|
||||||
}
|
}
|
||||||
viewModel.installed.observe(viewLifecycleOwner) {}
|
viewModel.installed.observe(viewLifecycleOwner) {
|
||||||
|
// Avoid the compiler using the same class as observer
|
||||||
|
Log.d(this::class.java.canonicalName, this.toString())
|
||||||
|
}
|
||||||
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
||||||
redrawPage(it, viewModel.secondaryProducts.value)
|
redrawPage(it, viewModel.secondaryProducts.value)
|
||||||
}
|
}
|
||||||
@ -70,7 +94,29 @@ class LatestFragment : MainNavFragmentX() {
|
|||||||
else -> isDarkTheme
|
else -> isDarkTheme
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
Scaffold { _ ->
|
Scaffold(
|
||||||
|
// TODO add the topBar to the activity instead of the fragments
|
||||||
|
topBar = {
|
||||||
|
TopBar(title = stringResource(id = R.string.application_name)) {
|
||||||
|
ExpandableSearchAction(
|
||||||
|
query = viewModel.searchQuery.value.orEmpty(),
|
||||||
|
onClose = {
|
||||||
|
viewModel.searchQuery.value = ""
|
||||||
|
},
|
||||||
|
onQueryChanged = { query ->
|
||||||
|
if (isResumed && query != viewModel.searchQuery.value)
|
||||||
|
viewModel.setSearchQuery(query)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
TopBarAction(icon = Icons.Rounded.Sync) {
|
||||||
|
mainActivityX.syncConnection.binder?.sync(SyncService.SyncRequest.MANUAL)
|
||||||
|
}
|
||||||
|
TopBarAction(icon = Icons.Rounded.Settings) {
|
||||||
|
startActivity(Intent(context, PrefsActivityX::class.java))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) { _ ->
|
||||||
Column(
|
Column(
|
||||||
Modifier
|
Modifier
|
||||||
.background(MaterialTheme.colorScheme.background)
|
.background(MaterialTheme.colorScheme.background)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user