From 8e80cfe525998bd3e9f4c9c49b4adbbca2d0ef2e Mon Sep 17 00:00:00 2001 From: sathwikcs <85106054+sathwikcs@users.noreply.github.com> Date: Tue, 18 Feb 2025 14:52:02 +0530 Subject: [PATCH] SettingsFragment.kt --- .../main_base/SettingsFragment.kt | 152 +++++++++--------- 1 file changed, 80 insertions(+), 72 deletions(-) diff --git a/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt index 2d1c09f..e243a33 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/main_base/SettingsFragment.kt @@ -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("developer_options") == null) { + preferenceScreen.addPreference(developerToggle) } - } else { - + if (preferenceScreen.findPreference("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() + }