@@ -61,6 +61,8 @@ import org.nitri.opentopo.ui.color.APP_COLOR_PALETTE
6161import org.nitri.opentopo.ui.color.ColorPickerGrid
6262import org.nitri.opentopo.ui.color.ColorPreference
6363import org.nitri.opentopo.ui.color.DEFAULT_MARKER_COLOR
64+ import org.nitri.opentopo.ui.color.DEFAULT_GPX_TRACK_COLOR
65+ import org.nitri.opentopo.ui.color.OPAQUE_APP_COLOR_PALETTE
6466import org.nitri.opentopo.ui.theme.OpenTopoTheme
6567import org.nitri.opentopo.util.Utils
6668import org.nitri.opentopo.util.importOpenTopoMapZipToSqliteCache
@@ -139,12 +141,32 @@ class SettingsActivity : AppCompatActivity() {
139141 val tapCompassToRotatePref = findPreference<Preference >(PREF_TAP_COMPASS_TO_ROTATE )
140142 val importTilesPref = findPreference<Preference >(" import_tiles" )
141143 val defaultMarkerColorPref = findPreference<ColorPreference >(PREF_DEFAULT_MARKER_COLOR )
144+ val gpxTrackColorPref = findPreference<ColorPreference >(PREF_GPX_TRACK_COLOR )
142145
143146 defaultMarkerColorPref?.let { pref ->
144147 val currentColor = prefs.getInt(PREF_DEFAULT_MARKER_COLOR , DEFAULT_MARKER_COLOR )
145148 pref.setColor(currentColor)
146149 pref.setOnPreferenceClickListener {
147- showColorPickerDialog(PREF_DEFAULT_MARKER_COLOR , R .string.pref_default_marker_color_title)
150+ showColorPickerDialog(
151+ prefKey = PREF_DEFAULT_MARKER_COLOR ,
152+ titleResId = R .string.pref_default_marker_color_title,
153+ defaultColor = DEFAULT_MARKER_COLOR ,
154+ colors = APP_COLOR_PALETTE
155+ )
156+ true
157+ }
158+ }
159+
160+ gpxTrackColorPref?.let { pref ->
161+ val currentColor = prefs.getInt(PREF_GPX_TRACK_COLOR , DEFAULT_GPX_TRACK_COLOR )
162+ pref.setColor(currentColor)
163+ pref.setOnPreferenceClickListener {
164+ showColorPickerDialog(
165+ prefKey = PREF_GPX_TRACK_COLOR ,
166+ titleResId = R .string.pref_gpx_track_color_title,
167+ defaultColor = DEFAULT_GPX_TRACK_COLOR ,
168+ colors = OPAQUE_APP_COLOR_PALETTE
169+ )
148170 true
149171 }
150172 }
@@ -318,10 +340,15 @@ class SettingsActivity : AppCompatActivity() {
318340 dialog.show()
319341 }
320342
321- private fun showColorPickerDialog (prefKey : String , titleResId : Int ) {
343+ private fun showColorPickerDialog (
344+ prefKey : String ,
345+ titleResId : Int ,
346+ defaultColor : Int ,
347+ colors : List <Int >
348+ ) {
322349 val context = requireContext()
323350 val prefs = PreferenceManager .getDefaultSharedPreferences(context)
324- val currentColor = prefs.getInt(prefKey, DEFAULT_MARKER_COLOR )
351+ val currentColor = prefs.getInt(prefKey, defaultColor )
325352
326353 val dialog = AlertDialog .Builder (context, R .style.AlertDialogTheme )
327354 .setTitle(titleResId)
@@ -337,7 +364,7 @@ class SettingsActivity : AppCompatActivity() {
337364 setContent {
338365 OpenTopoTheme (dynamicColor = false ) {
339366 ColorPickerGrid (
340- colors = APP_COLOR_PALETTE ,
367+ colors = colors ,
341368 selectedColor = currentColor,
342369 onColorSelected = { selectedColor ->
343370 prefs.edit { putInt(prefKey, selectedColor) }
@@ -377,6 +404,7 @@ class SettingsActivity : AppCompatActivity() {
377404 const val PREF_ORS_API_KEY = " ors_api_key"
378405 const val PREF_ORS_PROFILE = " ors_profile"
379406 const val PREF_DEFAULT_MARKER_COLOR = " default_marker_color"
407+ const val PREF_GPX_TRACK_COLOR = " gpx_track_color"
380408 const val ACTION_API_KEY_CHANGED = " org.nitri.opentopo.API_KEY_CHANGED"
381409 }
382410}
@@ -386,6 +414,11 @@ fun Context.defaultMarkerColor(): Int {
386414 return prefs.getInt(SettingsActivity .PREF_DEFAULT_MARKER_COLOR , DEFAULT_MARKER_COLOR )
387415}
388416
417+ fun Context.defaultGpxTrackColor (): Int {
418+ val prefs = PreferenceManager .getDefaultSharedPreferences(this )
419+ return prefs.getInt(SettingsActivity .PREF_GPX_TRACK_COLOR , org.nitri.opentopo.ui.color.DEFAULT_GPX_TRACK_COLOR )
420+ }
421+
389422@OptIn(ExperimentalMaterial3Api ::class )
390423@Composable
391424private fun SettingsScreen (onBack : () -> Unit ) {
0 commit comments