SettingsFragment.kt
This commit is contained in:
@@ -18,6 +18,7 @@ import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
@@ -29,6 +30,7 @@ import androidx.fragment.app.Fragment
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
@@ -37,6 +39,7 @@ import com.example.hpostesting.firebase.FirebaseConfig
|
||||
import com.example.hpostesting.firebase.FirebaseManager
|
||||
import `in`.sminnovations.hpostesting.R
|
||||
import `in`.sminnovations.hpostesting.databinding.FragmentSlideshowBinding
|
||||
import kotlin.math.log
|
||||
|
||||
private var isLanguageChanged = false
|
||||
|
||||
@@ -97,6 +100,7 @@ class SlideshowFragment : Fragment() {
|
||||
// Do nothing here
|
||||
}
|
||||
}
|
||||
|
||||
binding.spinnerCuvette.setSelection(pos)
|
||||
binding.btnAddSize.setOnClickListener {
|
||||
with(sharedPreferences.edit()) {
|
||||
@@ -113,24 +117,25 @@ class SlideshowFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
class PrefsFragment : PreferenceFragmentCompat(){
|
||||
class PrefsFragment : PreferenceFragmentCompat() {
|
||||
private lateinit var tapManager: AppVersionTapManager
|
||||
private var isServerSelectionVisible = false
|
||||
private lateinit var serverPreference: Preference
|
||||
private lateinit var currentServerPreference: Preference
|
||||
lateinit var firebaseManager: FirebaseManager
|
||||
private var topDevMode = false
|
||||
lateinit var databaseRepository: DatabaseRepository
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
firebaseManager = FirebaseManager(requireContext())
|
||||
firebaseManager = FirebaseManager(requireContext())
|
||||
databaseRepository = (activity as DashboardActivity).databaseRepository
|
||||
|
||||
tapManager = AppVersionTapManager()
|
||||
topDevMode = firebaseManager.getDevMode()
|
||||
val sharedPreference =
|
||||
requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE)
|
||||
val preferenceScreen = preferenceManager.createPreferenceScreen(requireContext())
|
||||
val currentServer = firebaseManager.getLastSelectedServer().serverName
|
||||
|
||||
|
||||
// Language Preference
|
||||
val languagePreference = ListPreference(requireContext()).apply {
|
||||
key = "language_preference"
|
||||
@@ -140,111 +145,114 @@ class PrefsFragment : PreferenceFragmentCompat(){
|
||||
entryValues = arrayOf("en", "kn", "hi")
|
||||
setDefaultValue("en")
|
||||
icon = ContextCompat.getDrawable(requireContext(), R.drawable.baseline_translate_24)
|
||||
|
||||
onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
|
||||
val languageCode = newValue as String
|
||||
updateLanguage(requireContext(), languageCode)
|
||||
true
|
||||
}
|
||||
}
|
||||
val servers = firebaseManager.getAvailableServers()
|
||||
val serverNames = servers.map { it.serverName }.toTypedArray()
|
||||
|
||||
val serverSelectorPreference = ListPreference(requireContext()).apply {
|
||||
key = "server_preference"
|
||||
title = "Select the Server"
|
||||
summary = "Current server : $currentServer "
|
||||
entries = serverNames
|
||||
entryValues = serverNames
|
||||
setDefaultValue(currentServer)
|
||||
icon = ContextCompat.getDrawable(requireContext(), R.drawable.baseline_cloud_sync_24)
|
||||
onPreferenceChangeListener = Preference.OnPreferenceChangeListener { old, newValue ->
|
||||
val getPreferenceConfig = servers.find { it.serverName ==newValue }
|
||||
switchFirebaseServer(getPreferenceConfig!!)
|
||||
true
|
||||
}
|
||||
}
|
||||
preferenceScreen.addPreference(languagePreference)
|
||||
|
||||
|
||||
val developerToggle = SwitchPreferenceCompat(requireContext()).apply {
|
||||
title = "Developer Options"
|
||||
summary = "Enable or disable developer options"
|
||||
icon =
|
||||
ContextCompat.getDrawable(requireContext(), R.drawable.baseline_developer_mode_24)
|
||||
key = "developer_options" // Unique key for SharedPreferences
|
||||
|
||||
// Load toggle state from SharedPreferences
|
||||
isChecked = firebaseManager.getDevMode()
|
||||
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val isEnabled = newValue as Boolean
|
||||
firebaseManager.setDevModeOn(isEnabled)
|
||||
|
||||
if (!isEnabled) {
|
||||
// Hide Developer Toggle if switched off
|
||||
preferenceScreen.removePreference(this)
|
||||
preferenceScreen.removePreference(serverSelectorPreference)
|
||||
}
|
||||
if (!firebaseManager.getDevMode()){
|
||||
val prodConfig = servers.find { it.serverName == "prod" }
|
||||
switchFirebaseServer(prodConfig!!)
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val appVersionPreference = Preference(requireContext()).apply {
|
||||
title = "App Version"
|
||||
summary =
|
||||
getAppVersion(requireContext()) + " [ " + getAppEnvironment(requireContext()) +"->"+currentServer+"]"
|
||||
getAppVersion(requireContext()) + " [ " + getAppEnvironment(requireContext()) + "->" + currentServer + "]"
|
||||
icon = ContextCompat.getDrawable(requireContext(), R.drawable.baseline_info_24)
|
||||
|
||||
setOnPreferenceClickListener {
|
||||
if ((sharedPreference.getString(Constants.USER_ID, "").toString() == "ADMIN")) {
|
||||
tapManager.registerTap {
|
||||
if (!isServerSelectionVisible) {
|
||||
showServerSelection()
|
||||
}
|
||||
tapManager.registerTap {
|
||||
firebaseManager.setDevModeOn(true)
|
||||
if (preferenceScreen.findPreference<SwitchPreferenceCompat>("developer_options") == null) {
|
||||
preferenceScreen.addPreference(developerToggle)
|
||||
}
|
||||
} else {
|
||||
|
||||
if (preferenceScreen.findPreference<ListPreference>("server_preference") == null) {
|
||||
preferenceScreen.addPreference(serverSelectorPreference)
|
||||
}
|
||||
developerToggle.isChecked = true
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
preferenceScreen.addPreference(appVersionPreference)
|
||||
|
||||
|
||||
currentServerPreference = Preference(requireContext()).apply {
|
||||
key = "current_server_preference"
|
||||
title = "Current Server"
|
||||
summary = "No server selected"
|
||||
isVisible = false
|
||||
icon = ContextCompat.getDrawable(requireContext(), R.drawable.baseline_cloud_done_24)
|
||||
|
||||
setOnPreferenceClickListener {
|
||||
// (activity as? DashboardActivity)?.sendData("hello test data")
|
||||
// Toast.makeText(context, "data sent", Toast.LENGTH_SHORT).show() this was used to send the basic data as test data
|
||||
true
|
||||
}
|
||||
if (firebaseManager.getDevMode()) {
|
||||
developerToggle.isChecked = true // Ensure it's checked
|
||||
preferenceScreen.addPreference(developerToggle)
|
||||
preferenceScreen.addPreference(serverSelectorPreference)
|
||||
}
|
||||
preferenceScreen.addPreference(currentServerPreference)
|
||||
|
||||
setPreferenceScreen(preferenceScreen)
|
||||
|
||||
if (isLanguageChanged) {
|
||||
Toast.makeText(requireContext(), R.string.language_update, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private fun showServerSelection() {
|
||||
val currentServer = firebaseManager.getLastSelectedServer().serverName
|
||||
serverPreference = Preference(requireContext()).apply {
|
||||
title = "Select Server"
|
||||
summary = "Choose your server"
|
||||
icon = ContextCompat.getDrawable(requireContext(), R.drawable.baseline_cloud_sync_24)
|
||||
setOnPreferenceClickListener {
|
||||
showServerSelectionDialog()
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
preferenceScreen.addPreference(serverPreference)
|
||||
currentServerPreference.isVisible = true
|
||||
currentServerPreference.summary = "Current Server: $currentServer"
|
||||
|
||||
Toast.makeText(requireContext(), "Server selection now available", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
private fun showServerSelectionDialog() {
|
||||
val servers = firebaseManager.getAvailableServers()
|
||||
|
||||
val serverNames = servers.map { it.serverName }.toTypedArray()
|
||||
val builder = AlertDialog.Builder(requireContext())
|
||||
builder.setTitle("Select Server")
|
||||
.setItems(serverNames) { _, which ->
|
||||
val selectedServer = servers[which]
|
||||
|
||||
switchFirebaseServer(selectedServer)
|
||||
}
|
||||
.setNegativeButton("Cancel", null)
|
||||
.show()
|
||||
}
|
||||
|
||||
|
||||
private fun switchFirebaseServer(firebaseConfig: FirebaseConfig) {
|
||||
firebaseManager.switchServer(firebaseConfig)
|
||||
Toast.makeText(requireContext(), "Switched to ${firebaseConfig.serverName}, Please wait for few seconds", Toast.LENGTH_SHORT).show()
|
||||
Toast.makeText(requireContext(), "Restart needed restarting the app", Toast.LENGTH_SHORT).show()
|
||||
firebaseManager.restartApp()
|
||||
currentServerPreference.summary = "Current Server: ${firebaseConfig.serverName}"
|
||||
|
||||
}
|
||||
|
||||
|
||||
private fun switchCurrentServer(serverCode: String) {
|
||||
Toast.makeText(requireContext(), "Switched to server: $serverCode", Toast.LENGTH_SHORT)
|
||||
Toast.makeText(
|
||||
requireContext(),
|
||||
"Switched to ${firebaseConfig.serverName}, Please wait for few seconds",
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
Toast.makeText(requireContext(), "Restart needed restarting the app", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
currentServerPreference.summary = "Current Server: $serverCode"
|
||||
firebaseManager.restartApp()
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user