diff --git a/src/main/java/de/dennisguse/opentracks/settings/DefaultsSettingsFragment.java b/src/main/java/de/dennisguse/opentracks/settings/DefaultsSettingsFragment.java
index e2f192cc4..a9066609d 100644
--- a/src/main/java/de/dennisguse/opentracks/settings/DefaultsSettingsFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/settings/DefaultsSettingsFragment.java
@@ -1,12 +1,19 @@
package de.dennisguse.opentracks.settings;
-
+import android.app.AlertDialog;
import android.content.SharedPreferences;
import android.os.Bundle;
+import android.view.View;
+import android.widget.NumberPicker;
import androidx.fragment.app.DialogFragment;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+
+import java.text.DateFormatSymbols;
+import java.util.Calendar;
+import java.util.Locale;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.models.ActivityType;
@@ -22,6 +29,14 @@ public class DefaultsSettingsFragment extends PreferenceFragmentCompat implement
getActivity().runOnUiThread(this::updateUnits);
}
};
+ @Override
+ public boolean onPreferenceTreeClick(Preference preference) {
+ if (preference.getKey().equals(getString(R.string.ski_season_start_key))) {
+ showCustomDatePickerDialog(); // Call method to show the dialog
+ return true;
+ }
+ return super.onPreferenceTreeClick(preference);
+ }
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
@@ -37,8 +52,8 @@ public void onStart() {
@Override
public void onResume() {
super.onResume();
- PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
updateUnits();
+ updateSkiSeasonStartPreferenceSummary(); // This will update the summary on resume
}
@Override
@@ -63,7 +78,101 @@ public void onDisplayPreferenceDialog(Preference preference) {
super.onDisplayPreferenceDialog(preference);
}
+
+ private void showCustomDatePickerDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
+ View dialogView = getLayoutInflater().inflate(R.layout.custom_date_picker_dialog, null);
+ builder.setView(dialogView);
+
+ NumberPicker monthPicker = dialogView.findViewById(R.id.monthPicker);
+ NumberPicker dayPicker = dialogView.findViewById(R.id.dayPicker);
+
+ String defaultStartDate = PreferencesUtils.getSkiSeasonStartDate();
+
+ // Initialize month picker
+ String[] months = new DateFormatSymbols().getMonths(); // Full months array
+ monthPicker.setMinValue(0);
+ monthPicker.setMaxValue(months.length - 1);
+ monthPicker.setDisplayedValues(months);
+
+ // Initialize day picker with maximum value based on the month
+ int month = Integer.parseInt(defaultStartDate.split("-")[0]) - 1;
+ int day = Integer.parseInt(defaultStartDate.split("-")[1]);
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.MONTH, month);
+ dayPicker.setMaxValue(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+ dayPicker.setMinValue(1);
+
+ // Set current values
+ monthPicker.setValue(month);
+ dayPicker.setValue(Math.min(day, dayPicker.getMaxValue())); // Ensure day is within the valid range
+
+ monthPicker.setOnValueChangedListener((picker, oldVal, newVal) -> {
+ // Adjust the maximum number of days according to the selected month
+ calendar.set(Calendar.MONTH, newVal);
+ int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ dayPicker.setMaxValue(maxDay);
+
+ // Adjust day value if it exceeds the max day for the new month
+ if (dayPicker.getValue() > maxDay) {
+ dayPicker.setValue(maxDay);
+ }
+ });
+
+ builder.setTitle("Select Date");
+ builder.setPositiveButton("OK", (dialog, which) -> {
+ // Save selected date and update summary
+ int selectedMonth = monthPicker.getValue();
+ int selectedDay = dayPicker.getValue();
+ String selectedDate = String.format(Locale.getDefault(), "%02d-%02d", selectedMonth + 1, selectedDay);
+
+ PreferencesUtils.setSkiSeasonStartDate(selectedDate);
+
+ // Update the preference summary
+ updateSkiSeasonStartPreferenceSummary();
+ });
+
+ builder.setNegativeButton("Cancel", null);
+ AlertDialog dialog = builder.create();
+ dialog.show();
+ }
+
+
+ private void ensureDefaultSkiSeasonStartDate() {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+ if (!prefs.contains(getString(R.string.ski_season_start_key))) {
+ // Set the default date only if it hasn't been set before
+ PreferencesUtils.setSkiSeasonStartDate("09-01");
+ }
+ }
+
+ private void updateSkiSeasonStartPreferenceSummary() {
+ Preference preference = findPreference(getString(R.string.ski_season_start_key));
+ // The ensureDefaultSkiSeasonStartDate() method makes sure that a default is always set
+ ensureDefaultSkiSeasonStartDate();
+
+ String date = PreferencesUtils.getSkiSeasonStartDate();
+ String[] dateParts = date.split("-");
+ int monthIndex = Integer.parseInt(dateParts[0]) - 1;
+ // Ensure the format is correctly applied to display as "Sep 1"
+ String readableDate = new DateFormatSymbols().getMonths()[monthIndex].substring(0, 3) + " " + Integer.parseInt(dateParts[1]);
+
+ if (preference != null) {
+ preference.setSummary(readableDate);
+ }
+ }
+
+
+
+
+ private int getMaxDayOfMonth(int month) {
+ // Get the maximum day for the given month
+ Calendar calendar = Calendar.getInstance();
+ calendar.clear();
+ calendar.set(Calendar.MONTH, month);
+ return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ }
private void updateUnits() {
UnitSystem unitSystem = PreferencesUtils.getUnitSystem();
@@ -74,7 +183,7 @@ private void updateUnits() {
case IMPERIAL_FEET, IMPERIAL_METER ->
R.array.stats_rate_imperial_options;
case NAUTICAL_IMPERIAL ->
- R.array.stats_rate_nautical_options;
+ R.array.stats_rate_nautical_options;
};
String[] entries = getResources().getStringArray(entriesId);
@@ -89,4 +198,4 @@ public void onChooseActivityTypeDone(ActivityType activityType) {
activityPreferenceDialog.updateUI(activityType);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/de/dennisguse/opentracks/settings/MainSettingsFragment.java b/src/main/java/de/dennisguse/opentracks/settings/MainSettingsFragment.java
index f2fd0bfbf..b9b295ffb 100644
--- a/src/main/java/de/dennisguse/opentracks/settings/MainSettingsFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/settings/MainSettingsFragment.java
@@ -15,6 +15,11 @@ public class MainSettingsFragment extends PreferenceFragmentCompat {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.settings);
+ findPreference(getString(R.string.settings_profile_key)).setOnPreferenceClickListener(preference -> {
+ ((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_profile_key));
+ return true;
+ });
+
findPreference(getString(R.string.settings_defaults_key)).setOnPreferenceClickListener(preference -> {
((SettingsActivity) getActivity()).openScreen(getString(R.string.settings_defaults_key));
return true;
@@ -67,4 +72,4 @@ public void onDisplayPreferenceDialog(@NonNull Preference preference) {
super.onDisplayPreferenceDialog(preference);
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java
index 531aa4fbf..23073d952 100644
--- a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java
@@ -82,12 +82,14 @@ public static void initPreferences(final Context context, final Resources resour
PreferencesOpenHelper.newInstance(PREFERENCES_VERSION).check();
}
- public static void registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener changeListener) {
+ public static void registerOnSharedPreferenceChangeListener(
+ SharedPreferences.OnSharedPreferenceChangeListener changeListener) {
sharedPreferences.registerOnSharedPreferenceChangeListener(changeListener);
changeListener.onSharedPreferenceChanged(sharedPreferences, null);
}
- public static void unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener changeListener) {
+ public static void unregisterOnSharedPreferenceChangeListener(
+ SharedPreferences.OnSharedPreferenceChangeListener changeListener) {
sharedPreferences.unregisterOnSharedPreferenceChangeListener(changeListener);
}
@@ -99,6 +101,14 @@ public static void setDefaultActivityLocalized(String newDefaultActivity) {
setString(R.string.default_activity_key, newDefaultActivity);
}
+ public static String getSkiSeasonStartDate() {
+ return getString(R.string.ski_season_start_key, "09-01");
+ }
+
+ public static void setSkiSeasonStartDate(String newStartDate) {
+ setString(R.string.ski_season_start_key, newStartDate);
+ }
+
/**
* Gets a preference key
*
@@ -260,6 +270,10 @@ public static SensorType getSensorType(String address) {
.orElse(SensorType.REMOTE);
}
+ public static String getNickName(){
+ return getString(R.string.settings_profile_nickname_key, null);
+ }
+
public static String getBarometerSensorAddress() {
return getString(R.string.settings_sensor_bluetooth_pressure_key, getBluetoothSensorAddressNone());
}
@@ -301,7 +315,8 @@ public static HeartRateZones getHeartRateZones() {
}
public static boolean shouldShowStatsOnLockscreen() {
- final boolean STATS_SHOW_ON_LOCKSCREEN_DEFAULT = resources.getBoolean(R.bool.stats_show_on_lockscreen_while_recording_default);
+ final boolean STATS_SHOW_ON_LOCKSCREEN_DEFAULT = resources
+ .getBoolean(R.bool.stats_show_on_lockscreen_while_recording_default);
return getBoolean(R.string.stats_show_on_lockscreen_while_recording_key, STATS_SHOW_ON_LOCKSCREEN_DEFAULT);
}
@@ -855,4 +870,12 @@ public static void resetTotalRowsDeleted() {
setInt(R.string.total_rows_deleted_key, 0);
}
-}
+ public static String getSelectedCountry() {
+ return getString(R.string.settings_profile_country_key, "");
+ }
+
+ public static void setSelectedCountry(final String selectedCountry) {
+ setString(R.string.settings_profile_country_key, selectedCountry);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/de/dennisguse/opentracks/settings/ProfileSettingsFragment.java b/src/main/java/de/dennisguse/opentracks/settings/ProfileSettingsFragment.java
new file mode 100644
index 000000000..805e6f476
--- /dev/null
+++ b/src/main/java/de/dennisguse/opentracks/settings/ProfileSettingsFragment.java
@@ -0,0 +1,75 @@
+package de.dennisguse.opentracks.settings;
+
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.text.InputFilter;
+
+
+import androidx.preference.EditTextPreference;
+import androidx.preference.ListPreference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import de.dennisguse.opentracks.R;
+
+public class ProfileSettingsFragment extends PreferenceFragmentCompat {
+
+ private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (sharedPreferences, key) -> {
+ if (PreferencesUtils.isKey(R.string.night_mode_key, key)) {
+ getActivity().runOnUiThread(PreferencesUtils::applyNightMode);
+ }
+ };
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ addPreferencesFromResource(R.xml.settings_profile);
+ ListPreference countryPreference = findPreference(getString(R.string.settings_profile_country_key));
+
+
+ String selectedCountryValue = PreferencesUtils.getSelectedCountry();
+ countryPreference.setSummary(selectedCountryValue);
+
+ countryPreference.setOnPreferenceChangeListener((preference, newValue) -> {
+ // Save the selected country to SharedPreferences
+ PreferencesUtils.setSelectedCountry((String) newValue);
+
+ // Update summary with selected country
+ preference.setSummary((String) newValue);
+ return true;
+ });
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ ((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_profile_title);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ EditTextPreference nickNameInput = findPreference(getString(R.string.settings_profile_nickname_key));
+ nickNameInput.setDialogTitle(getString(R.string.settings_profile_nickname_dialog_title));
+ nickNameInput.setOnBindEditTextListener(editText -> {
+ editText.setSingleLine(true);
+ editText.selectAll(); // select all text
+ int maxNicknameLength = 20;
+ editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxNicknameLength)});
+ });
+
+ ListPreference countryPreference = findPreference(getString(R.string.settings_profile_country_key));
+ String selectedCountryValue = PreferencesUtils.getSelectedCountry();
+ if (selectedCountryValue != null && !selectedCountryValue.isEmpty()) {
+ // Update summary with saved selected country
+ countryPreference.setSummary(selectedCountryValue);
+ }
+
+ PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ PreferencesUtils.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
+ }
+}
diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java
index 2f22e0d45..b17879c2c 100644
--- a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java
@@ -82,6 +82,8 @@ private PreferenceFragmentCompat getPreferenceScreen(String key) {
if (key.equals(getString(R.string.settings_defaults_key))) {
fragment = new DefaultsSettingsFragment();
+ } else if (key.equals(getString(R.string.settings_profile_key))) {
+ fragment = new ProfileSettingsFragment();
} else if (key.equals(getString(R.string.settings_ui_key))) {
fragment = new UserInterfaceSettingsFragment();
} else if (key.equals(getString(R.string.settings_gps_key))) {
diff --git a/src/main/res/drawable/ic_profile.xml b/src/main/res/drawable/ic_profile.xml
new file mode 100644
index 000000000..76aa4eefe
--- /dev/null
+++ b/src/main/res/drawable/ic_profile.xml
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/src/main/res/layout/custom_date_picker_dialog.xml b/src/main/res/layout/custom_date_picker_dialog.xml
new file mode 100644
index 000000000..4645f67ab
--- /dev/null
+++ b/src/main/res/layout/custom_date_picker_dialog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
new file mode 100644
index 000000000..be24ca8e8
--- /dev/null
+++ b/src/main/res/values/arrays.xml
@@ -0,0 +1,496 @@
+
+
+
+
+
+
+
+ - Canada
+
+
+ - Afghanistan
+ - Albania
+ - Algeria
+ - American Samoa
+ - Andorra
+ - Angola
+ - Anguilla
+ - Antarctica
+ - Antigua and Barbuda
+ - Argentina
+ - Armenia
+ - Aruba
+ - Australia
+ - Austria
+ - Azerbaijan
+ - Bahamas
+ - Bahrain
+ - Bangladesh
+ - Barbados
+ - Belarus
+ - Belgium
+ - Belize
+ - Benin
+ - Bermuda
+ - Bhutan
+ - Bolivia
+ - Bosnia and Herzegovina
+ - Botswana
+ - Bouvet Island
+ - Brazil
+ - British Indian Ocean Territory
+ - Brunei Darussalam
+ - Bulgaria
+ - Burkina Faso
+ - Burundi
+ - Cambodia
+ - Cameroon
+ - Cape Verde
+ - Cayman Islands
+ - Central African Republic
+ - Chad
+ - Chile
+ - China
+ - Christmas Island
+ - Cocos (Keeling) Islands
+ - Colombia
+ - Comoros
+ - Congo
+ - Congo, The Democratic Republic of The
+ - Cook Islands
+ - Costa Rica
+ - Cote Divoire
+ - Croatia
+ - Cuba
+ - Cyprus
+ - Czech Republic
+ - Denmark
+ - Djibouti
+ - Dominica
+ - Dominican Republic
+ - Ecuador
+ - Egypt
+ - El Salvador
+ - Equatorial Guinea
+ - Eritrea
+ - Estonia
+ - Ethiopia
+ - Falkland Islands (Malvinas)
+ - Faroe Islands
+ - Fiji
+ - Finland
+ - France
+ - French Guiana
+ - French Polynesia
+ - French Southern Territories
+ - Gabon
+ - Gambia
+ - Georgia
+ - Germany
+ - Ghana
+ - Gibraltar
+ - Greece
+ - Greenland
+ - Grenada
+ - Guadeloupe
+ - Guam
+ - Guatemala
+ - Guinea
+ - Guinea-bissau
+ - Guyana
+ - Haiti
+ - Heard Island and Mcdonald Islands
+ - Holy See (Vatican City State)
+ - Honduras
+ - Hong Kong
+ - Hungary
+ - Iceland
+ - India
+ - Indonesia
+ - Iran, Islamic Republic of
+ - Iraq
+ - Ireland
+ - Israel
+ - Italy
+ - Jamaica
+ - Japan
+ - Jordan
+ - Kazakhstan
+ - Kenya
+ - Kiribati
+ - Korea, Democratic People Republic of
+ - Korea, Republic of
+ - Kuwait
+ - Kyrgyzstan
+ - Lao People Democratic Republic
+ - Latvia
+ - Lebanon
+ - Lesotho
+ - Liberia
+ - Libyan Arab Jamahiriya
+ - Liechtenstein
+ - Lithuania
+ - Luxembourg
+ - Macao
+ - Macedonia, The Former Yugoslav Republic of
+ - Madagascar
+ - Malawi
+ - Malaysia
+ - Maldives
+ - Mali
+ - Malta
+ - Marshall Islands
+ - Martinique
+ - Mauritania
+ - Mauritius
+ - Mayotte
+ - Mexico
+ - Micronesia, Federated States of
+ - Moldova, Republic of
+ - Monaco
+ - Mongolia
+ - Montserrat
+ - Morocco
+ - Mozambique
+ - Myanmar
+ - Namibia
+ - Nauru
+ - Nepal
+ - Netherlands
+ - Netherlands Antilles
+ - New Caledonia
+ - New Zealand
+ - Nicaragua
+ - Niger
+ - Nigeria
+ - Niue
+ - Norfolk Island
+ - Northern Mariana Islands
+ - Norway
+ - Oman
+ - Pakistan
+ - Palau
+ - Palestinian Territory, Occupied
+ - Panama
+ - Papua New Guinea
+ - Paraguay
+ - Peru
+ - Philippines
+ - Pitcairn
+ - Poland
+ - Portugal
+ - Puerto Rico
+ - Qatar
+ - Reunion
+ - Romania
+ - Russian Federation
+ - Rwanda
+ - Saint Helena
+ - Saint Kitts and Nevis
+ - Saint Lucia
+ - Saint Pierre and Miquelon
+ - Saint Vincent and The Grenadines
+ - Samoa
+ - San Marino
+ - Sao Tome and Principe
+ - Saudi Arabia
+ - Senegal
+ - Serbia and Montenegro
+ - Seychelles
+ - Sierra Leone
+ - Singapore
+ - Slovakia
+ - Slovenia
+ - Solomon Islands
+ - Somalia
+ - South Africa
+ - South Georgia and The South Sandwich Islands
+ - Spain
+ - Sri Lanka
+ - Sudan
+ - Suriname
+ - Svalbard and Jan Mayen
+ - Swaziland
+ - Sweden
+ - Switzerland
+ - Syrian Arab Republic
+ - Taiwan, Province of China
+ - Tajikistan
+ - Tanzania, United Republic of
+ - Thailand
+ - Timor-leste
+ - Togo
+ - Tokelau
+ - Tonga
+ - Trinidad and Tobago
+ - Tunisia
+ - Turkey
+ - Turkmenistan
+ - Turks and Caicos Islands
+ - Tuvalu
+ - Uganda
+ - Ukraine
+ - United Arab Emirates
+ - United Kingdom
+ - United States
+ - United States Minor Outlying Islands
+ - Uruguay
+ - Uzbekistan
+ - Vanuatu
+ - Venezuela
+ - Viet Nam
+ - Virgin Islands, British
+ - Virgin Islands, U.S.
+ - Wallis and Futuna
+ - Western Sahara
+ - Yemen
+ - Zambia
+ - Zimbabwe
+
+
+ - Canada
+
+
+ - Afghanistan
+ - Albania
+ - Algeria
+ - American Samoa
+ - Andorra
+ - Angola
+ - Anguilla
+ - Antarctica
+ - Antigua and Barbuda
+ - Argentina
+ - Armenia
+ - Aruba
+ - Australia
+ - Austria
+ - Azerbaijan
+ - Bahamas
+ - Bahrain
+ - Bangladesh
+ - Barbados
+ - Belarus
+ - Belgium
+ - Belize
+ - Benin
+ - Bermuda
+ - Bhutan
+ - Bolivia
+ - Bosnia and Herzegovina
+ - Botswana
+ - Bouvet Island
+ - Brazil
+ - British Indian Ocean Territory
+ - Brunei Darussalam
+ - Bulgaria
+ - Burkina Faso
+ - Burundi
+ - Cambodia
+ - Cameroon
+ - Cape Verde
+ - Cayman Islands
+ - Central African Republic
+ - Chad
+ - Chile
+ - China
+ - Christmas Island
+ - Cocos (Keeling) Islands
+ - Colombia
+ - Comoros
+ - Congo
+ - Congo, The Democratic Republic of The
+ - Cook Islands
+ - Costa Rica
+ - Cote Divoire
+ - Croatia
+ - Cuba
+ - Cyprus
+ - Czech Republic
+ - Denmark
+ - Djibouti
+ - Dominica
+ - Dominican Republic
+ - Ecuador
+ - Egypt
+ - El Salvador
+ - Equatorial Guinea
+ - Eritrea
+ - Estonia
+ - Ethiopia
+ - Falkland Islands (Malvinas)
+ - Faroe Islands
+ - Fiji
+ - Finland
+ - France
+ - French Guiana
+ - French Polynesia
+ - French Southern Territories
+ - Gabon
+ - Gambia
+ - Georgia
+ - Germany
+ - Ghana
+ - Gibraltar
+ - Greece
+ - Greenland
+ - Grenada
+ - Guadeloupe
+ - Guam
+ - Guatemala
+ - Guinea
+ - Guinea-bissau
+ - Guyana
+ - Haiti
+ - Heard Island and Mcdonald Islands
+ - Holy See (Vatican City State)
+ - Honduras
+ - Hong Kong
+ - Hungary
+ - Iceland
+ - India
+ - Indonesia
+ - Iran, Islamic Republic of
+ - Iraq
+ - Ireland
+ - Israel
+ - Italy
+ - Jamaica
+ - Japan
+ - Jordan
+ - Kazakhstan
+ - Kenya
+ - Kiribati
+ - Korea, Democratic People Republic of
+ - Korea, Republic of
+ - Kuwait
+ - Kyrgyzstan
+ - Lao People Democratic Republic
+ - Latvia
+ - Lebanon
+ - Lesotho
+ - Liberia
+ - Libyan Arab Jamahiriya
+ - Liechtenstein
+ - Lithuania
+ - Luxembourg
+ - Macao
+ - Macedonia, The Former Yugoslav Republic of
+ - Madagascar
+ - Malawi
+ - Malaysia
+ - Maldives
+ - Mali
+ - Malta
+ - Marshall Islands
+ - Martinique
+ - Mauritania
+ - Mauritius
+ - Mayotte
+ - Mexico
+ - Micronesia, Federated States of
+ - Moldova, Republic of
+ - Monaco
+ - Mongolia
+ - Montserrat
+ - Morocco
+ - Mozambique
+ - Myanmar
+ - Namibia
+ - Nauru
+ - Nepal
+ - Netherlands
+ - Netherlands Antilles
+ - New Caledonia
+ - New Zealand
+ - Nicaragua
+ - Niger
+ - Nigeria
+ - Niue
+ - Norfolk Island
+ - Northern Mariana Islands
+ - Norway
+ - Oman
+ - Pakistan
+ - Palau
+ - Palestinian Territory, Occupied
+ - Panama
+ - Papua New Guinea
+ - Paraguay
+ - Peru
+ - Philippines
+ - Pitcairn
+ - Poland
+ - Portugal
+ - Puerto Rico
+ - Qatar
+ - Reunion
+ - Romania
+ - Russian Federation
+ - Rwanda
+ - Saint Helena
+ - Saint Kitts and Nevis
+ - Saint Lucia
+ - Saint Pierre and Miquelon
+ - Saint Vincent and The Grenadines
+ - Samoa
+ - San Marino
+ - Sao Tome and Principe
+ - Saudi Arabia
+ - Senegal
+ - Serbia and Montenegro
+ - Seychelles
+ - Sierra Leone
+ - Singapore
+ - Slovakia
+ - Slovenia
+ - Solomon Islands
+ - Somalia
+ - South Africa
+ - South Georgia and The South Sandwich Islands
+ - Spain
+ - Sri Lanka
+ - Sudan
+ - Suriname
+ - Svalbard and Jan Mayen
+ - Swaziland
+ - Sweden
+ - Switzerland
+ - Syrian Arab Republic
+ - Taiwan, Province of China
+ - Tajikistan
+ - Tanzania, United Republic of
+ - Thailand
+ - Timor-leste
+ - Togo
+ - Tokelau
+ - Tonga
+ - Trinidad and Tobago
+ - Tunisia
+ - Turkey
+ - Turkmenistan
+ - Turks and Caicos Islands
+ - Tuvalu
+ - Uganda
+ - Ukraine
+ - United Arab Emirates
+ - United Kingdom
+ - United States
+ - United States Minor Outlying Islands
+ - Uruguay
+ - Uzbekistan
+ - Vanuatu
+ - Venezuela
+ - Viet Nam
+ - Virgin Islands, British
+ - Virgin Islands, U.S.
+ - Wallis and Futuna
+ - Western Sahara
+ - Yemen
+ - Zambia
+ - Zimbabwe
+
+
+
+
+
diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml
index 97e18a979..ff849f2ff 100644
--- a/src/main/res/values/settings.xml
+++ b/src/main/res/values/settings.xml
@@ -67,6 +67,10 @@
defaultActivity
@string/activity_type_unknown
+ skiSeasonStartDate
+
+
+
recordingDistanceInterval
10
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index b0f88277f..9c02608aa 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -366,6 +366,9 @@ limitations under the License.
Units
Activity\'s Defaults
+ Ski Season Start Date
+ Specify the start date of the ski season.
+
Reset Settings to Default Values
@@ -411,6 +414,17 @@ limitations under the License.
Lap heart rate
Average speed/pace
Lap speed/pace
+ Canada
+
+
+ Profile
+ Profile management
+ settingsProfile
+ Nickname
+ Nickname (max 20 char)
+ nickname
+ Country
+ country
@@ -709,4 +723,5 @@ limitations under the License.
Always
OpenTracks itself does not provide a map. Please install OSMDashboard to view your recordings on a map.
+ 1 Sep
diff --git a/src/main/res/xml/settings.xml b/src/main/res/xml/settings.xml
index 8cbe9b1e0..3d67cecd2 100644
--- a/src/main/res/xml/settings.xml
+++ b/src/main/res/xml/settings.xml
@@ -2,6 +2,11 @@
+
+
-
\ No newline at end of file
diff --git a/src/main/res/xml/settings_profile.xml b/src/main/res/xml/settings_profile.xml
new file mode 100644
index 000000000..aba206e6c
--- /dev/null
+++ b/src/main/res/xml/settings_profile.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ />
+