mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +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.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
import android.view.Menu
|
import androidx.activity.compose.setContent
|
||||||
import android.view.inputmethod.InputMethodManager
|
|
||||||
import androidx.activity.viewModels
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
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.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
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.BuildConfig
|
||||||
import com.machiav3lli.fdroid.ContextWrapperX
|
import com.machiav3lli.fdroid.ContextWrapperX
|
||||||
import com.machiav3lli.fdroid.MainApplication
|
import com.machiav3lli.fdroid.MainApplication
|
||||||
|
import com.machiav3lli.fdroid.NAV_MAIN
|
||||||
import com.machiav3lli.fdroid.R
|
import com.machiav3lli.fdroid.R
|
||||||
import com.machiav3lli.fdroid.content.Preferences
|
import com.machiav3lli.fdroid.content.Preferences
|
||||||
import com.machiav3lli.fdroid.databinding.ActivityMainXBinding
|
import com.machiav3lli.fdroid.databinding.ActivityMainXBinding
|
||||||
import com.machiav3lli.fdroid.installer.AppInstaller
|
import com.machiav3lli.fdroid.installer.AppInstaller
|
||||||
import com.machiav3lli.fdroid.service.Connection
|
import com.machiav3lli.fdroid.service.Connection
|
||||||
import com.machiav3lli.fdroid.service.SyncService
|
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.AppSheetX
|
||||||
import com.machiav3lli.fdroid.ui.fragments.MainNavFragmentX
|
import com.machiav3lli.fdroid.ui.navigation.BottomNavBar
|
||||||
import com.machiav3lli.fdroid.ui.fragments.Source
|
import com.machiav3lli.fdroid.ui.navigation.MainNavHost
|
||||||
import com.machiav3lli.fdroid.ui.viewmodels.MainActivityViewModelX
|
import com.machiav3lli.fdroid.ui.navigation.NavItem
|
||||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
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.setCustomTheme
|
||||||
import com.machiav3lli.fdroid.utility.showBatteryOptimizationDialog
|
import com.machiav3lli.fdroid.utility.showBatteryOptimizationDialog
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -76,7 +95,6 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivityMainXBinding.inflate(layoutInflater)
|
binding = ActivityMainXBinding.inflate(layoutInflater)
|
||||||
|
|
||||||
setContentView(binding.root)
|
|
||||||
binding.lifecycleOwner = this
|
binding.lifecycleOwner = this
|
||||||
|
|
||||||
val navHostFragment =
|
val navHostFragment =
|
||||||
@ -90,6 +108,51 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
if (savedInstanceState == null && (intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
|
if (savedInstanceState == null && (intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
|
||||||
handleIntent(intent)
|
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() {
|
override fun onStart() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user