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 @@ + + + + + + /> +