mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 11:22:12 +00:00
Update: Use fully composables for Main
This commit is contained in:
parent
4c4c6cc51e
commit
2f4ee61ebf
@ -4,29 +4,48 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.os.PowerManager
|
||||
import android.view.Menu
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import androidx.activity.viewModels
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.padding
|
||||
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.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
import com.google.accompanist.navigation.animation.rememberAnimatedNavController
|
||||
import com.machiav3lli.fdroid.BuildConfig
|
||||
import com.machiav3lli.fdroid.ContextWrapperX
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NAV_MAIN
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.databinding.ActivityMainXBinding
|
||||
import com.machiav3lli.fdroid.installer.AppInstaller
|
||||
import com.machiav3lli.fdroid.service.Connection
|
||||
import com.machiav3lli.fdroid.service.SyncService
|
||||
import com.machiav3lli.fdroid.ui.compose.components.ExpandableSearchAction
|
||||
import com.machiav3lli.fdroid.ui.compose.components.TopBar
|
||||
import com.machiav3lli.fdroid.ui.compose.components.TopBarAction
|
||||
import com.machiav3lli.fdroid.ui.compose.theme.AppTheme
|
||||
import com.machiav3lli.fdroid.ui.fragments.AppSheetX
|
||||
import com.machiav3lli.fdroid.ui.fragments.MainNavFragmentX
|
||||
import com.machiav3lli.fdroid.ui.fragments.Source
|
||||
import com.machiav3lli.fdroid.ui.viewmodels.MainActivityViewModelX
|
||||
import com.machiav3lli.fdroid.ui.navigation.BottomNavBar
|
||||
import com.machiav3lli.fdroid.ui.navigation.MainNavHost
|
||||
import com.machiav3lli.fdroid.ui.navigation.NavItem
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utility.isDarkTheme
|
||||
import com.machiav3lli.fdroid.utility.setCustomTheme
|
||||
import com.machiav3lli.fdroid.utility.showBatteryOptimizationDialog
|
||||
import kotlinx.coroutines.launch
|
||||
@ -76,7 +95,6 @@ class MainActivityX : AppCompatActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityMainXBinding.inflate(layoutInflater)
|
||||
|
||||
setContentView(binding.root)
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
val navHostFragment =
|
||||
@ -90,6 +108,51 @@ class MainActivityX : AppCompatActivity() {
|
||||
if (savedInstanceState == null && (intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
|
||||
handleIntent(intent)
|
||||
}
|
||||
|
||||
setContent {
|
||||
AppTheme(
|
||||
darkTheme = when (Preferences[Preferences.Key.Theme]) {
|
||||
is Preferences.Theme.System -> isSystemInDarkTheme()
|
||||
is Preferences.Theme.AmoledSystem -> isSystemInDarkTheme()
|
||||
else -> isDarkTheme
|
||||
}
|
||||
) {
|
||||
var searchQuery by remember() { mutableStateOf("") } // TODO link query to the current Page/VM
|
||||
val navController = rememberAnimatedNavController()
|
||||
|
||||
Scaffold(
|
||||
containerColor = Color.Transparent,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
bottomBar = { BottomNavBar(page = NAV_MAIN, navController = navController) },
|
||||
topBar = {
|
||||
TopBar(
|
||||
title = stringResource(id = R.string.application_name),
|
||||
) {
|
||||
ExpandableSearchAction(
|
||||
query = searchQuery,
|
||||
onClose = {
|
||||
searchQuery = ""
|
||||
},
|
||||
onQueryChanged = { query ->
|
||||
if (query != searchQuery) searchQuery = query
|
||||
}
|
||||
)
|
||||
TopBarAction(icon = Icons.Rounded.Sync) {
|
||||
syncConnection.binder?.sync(SyncService.SyncRequest.MANUAL)
|
||||
}
|
||||
TopBarAction(icon = Icons.Rounded.Settings) {
|
||||
navController.navigate(NavItem.Prefs.destination)
|
||||
}
|
||||
}
|
||||
}
|
||||
) { paddingValues ->
|
||||
MainNavHost(
|
||||
modifier = Modifier.padding(paddingValues),
|
||||
navController = navController
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user