package com.tripmeter.app.ui import android.os.Bundle import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import com.tripmeter.app.databinding.ActivitySettingsBinding import com.tripmeter.app.network.TripSyncRepository import com.tripmeter.app.util.Prefs import kotlinx.coroutines.launch class SettingsActivity : AppCompatActivity() { private lateinit var binding: ActivitySettingsBinding private lateinit var prefs: Prefs override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivitySettingsBinding.inflate(layoutInflater) setContentView(binding.root) prefs = Prefs(applicationContext) loadValues() binding.btnSaveSettings.setOnClickListener { saveValues() finish() // return to the dashboard after saving } binding.btnSyncNow.setOnClickListener { saveValuesSilently() lifecycleScope.launch { val sent = TripSyncRepository(applicationContext).syncPendingTrips() Toast.makeText(this@SettingsActivity, "Synced $sent trip(s)", Toast.LENGTH_SHORT).show() } } } private fun loadValues() { binding.inputName.setText(prefs.employeeName) binding.inputEmpId.setText(prefs.employeeId) binding.inputDept.setText(prefs.department) binding.inputRateBike.setText(prefs.getRate("Bike").toString()) binding.inputRateScooter.setText(prefs.getRate("Scooter").toString()) binding.inputRateCar.setText(prefs.getRate("Car").toString()) binding.inputSyncUrl.setText(prefs.syncBaseUrl) binding.inputSyncKey.setText(prefs.syncApiKey) binding.switchSyncEnabled.isChecked = prefs.syncEnabled } private fun saveValues() { saveValuesSilently() Toast.makeText(this, "Settings saved", Toast.LENGTH_SHORT).show() } private fun saveValuesSilently() { prefs.employeeName = binding.inputName.text.toString().trim() prefs.employeeId = binding.inputEmpId.text.toString().trim() prefs.department = binding.inputDept.text.toString().trim() prefs.setRate("Bike", binding.inputRateBike.text.toString().toDoubleOrNull() ?: 3.50) prefs.setRate("Scooter", binding.inputRateScooter.text.toString().toDoubleOrNull() ?: 3.50) prefs.setRate("Car", binding.inputRateCar.text.toString().toDoubleOrNull() ?: 10.00) prefs.syncBaseUrl = binding.inputSyncUrl.text.toString().trim() prefs.syncApiKey = binding.inputSyncKey.text.toString().trim() prefs.syncEnabled = binding.switchSyncEnabled.isChecked } }