[android] Backup bookmarks and tracks to a local folder

This commit adds backup of user data to a local folder on the device.

Features:
* Turn on/off regular backup
* Choose new or existing folder for saving backup
* Set how often backup runs
* Set how many backups to keep
* Create backup manually

Signed-off-by: Mihail Mitrofanov <mk.mitrofanov@outlook.com>
This commit is contained in:
Mihail Mitrofanov
2025-05-25 22:57:51 +02:00
committed by Konstantin Pastbin
parent 70c3f725f9
commit df3850b86c
13 changed files with 988 additions and 1 deletions

View File

@@ -911,4 +911,29 @@
<string name="pedestrian">Пешеход</string>
<string name="clear">Очистить</string>
<string name="route_type">Вид маршрута</string>
<!-- Settings "Backup" category: "Backup" title -->
<string name="pref_backup_title">Резервное копирование меток и треков</string>
<string name="pref_backup_summary">Автоматически сохранять в папку на устройстве</string>
<string name="pref_backup_now_title">Создать резервную копию</string>
<string name="pref_backup_now_summary">Запустить резервное копирование вручную</string>
<string name="pref_backup_now_summary_progress">Идёт резервное копирование…</string>
<string name="pref_backup_now_summary_ok">Копирование успешно завершено</string>
<string name="pref_backup_now_summary_empty_lists">Нет данных для копирования</string>
<string name="pref_backup_now_summary_failed">Ошибка при копировании</string>
<string name="pref_backup_now_summary_folder_unavailable">Папка для копий недоступна</string>
<string name="pref_backup_status_summary_success">Последнее успешное копирование</string>
<string name="pref_backup_location_title">Папка для резервных копий</string>
<string name="pref_backup_location_summary_initial">Сначала выберите папку и дайте доступ</string>
<string name="pref_backup_history_title">Хранить количество копий</string>
<string name="pref_backup_interval_title">Автозапуск</string>
<string name="backup_interval_every_day">Каждый день</string>
<string name="backup_interval_every_week">Каждую неделю</string>
<string name="backup_interval_manual_only">Выключено (только вручную)</string>
<string name="dialog_report_error_missing_folder">Выбранная папка для резервного копирования недоступна или нет права записи в неё. Пожалуйста, выберите другую папку</string>
<string name="dialog_report_error_with_logs">Пожалуйста, отправьте нам отчет об ошибке:\n
- Включите \"Запись логов\" в настройках\n
- воспроизведите проблему\n
- на экране \"Справка\" нажмите кнопку \"Сообщить о проблеме\" и отправьте нам отчет по почте или в чат\n
- отключите логирование
</string>
</resources>

View File

@@ -40,6 +40,7 @@
<string name="pref_keep_screen_on" translatable="false">KeepScreenOn</string>
<string name="pref_show_on_lock_screen" translatable="false">ShowOnLockScreen</string>
<string name="pref_map_locale" translatable="false">MapLanguage</string>
<string name="pref_backup" translatable="false">Backup</string>
<string name="pref_left_button" translatable="false">LeftButton</string>
<string name="notification_ticker_ltr" translatable="false">%1$s: %2$s</string>

View File

@@ -23,7 +23,29 @@
<item>0</item>
<item>1</item>
</string-array>
<string-array name="backup_interval_entries">
<item>@string/backup_interval_every_day</item>
<item>@string/backup_interval_every_week</item>
<item>@string/backup_interval_manual_only</item>
</string-array>
<string-array name="backup_interval_values">
<item>86400000</item> <!-- Every day -->
<item>604800000</item> <!-- Every week -->
<item>0</item> <!-- Manual only -->
</string-array>
<string-array name="backup_history_entries">
<item>3</item>
<item>10</item>
</string-array>
<string-array name="backup_history_values">
<item>3</item>
<item>10</item>
</string-array>
<string-array name="map_style">
<item>@string/off</item>
<item>@string/on</item>

View File

@@ -936,6 +936,32 @@
<string name="codeberg">Codeberg</string>
<string name="pref_left_button_title">Left button setup</string>
<string name="pref_left_button_disable">Disable</string>
<!-- Settings "Backup" category: "Backup" title -->
<string name="pref_backup_title">Bookmarks and tracks backup</string>
<string name="pref_backup_summary">Automatically backup to a folder on your device</string>
<string name="pref_backup_now_title">Backup now</string>
<string name="pref_backup_now_summary">Create a backup immediately</string>
<string name="pref_backup_now_summary_progress">Backup in progress…</string>
<string name="pref_backup_now_summary_ok">Backup completed successfully</string>
<string name="pref_backup_now_summary_empty_lists">Nothing to back up</string>
<string name="pref_backup_now_summary_failed">Backup failed</string>
<string name="pref_backup_now_summary_folder_unavailable">The backup folder is not available</string>
<string name="pref_backup_status_summary_success">Last successful backup</string>
<string name="pref_backup_location_title">Backup location</string>
<string name="pref_backup_location_summary_initial">Please select a folder first and grant permission</string>
<string name="pref_backup_history_title">Number of backups to keep</string>
<string name="pref_backup_interval_title">Automatic backup</string>
<string name="backup_interval_every_day">Daily</string>
<string name="backup_interval_every_week">Weekly</string>
<string name="backup_interval_manual_only">Off (manual only)</string>
<string name="dialog_report_error_missing_folder">The selected backup location is not available or writable. Select a different location, please.</string>
<string name="dialog_report_error_with_logs">Please send us an error report:\n
- \"Enable logging\" in the settings\n
- reproduce the problem\n
- in the \"Help/About\" screen press a \"Report a bug\" button and send it to us via email or chat\n
- disable logging
</string>
<string name="clear">Clear</string>
<string name="route_type">Route type</string>
<string name="vehicle">Vehicle</string>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:key="backup_location"
android:summary="@string/pref_backup_location_summary_initial"
android:title="@string/pref_backup_location_title" />
<Preference
android:key="backup_now"
android:summary="@string/pref_backup_now_summary"
android:title="@string/pref_backup_now_title" />
<ListPreference
android:defaultValue="86400000"
android:entries="@array/backup_interval_entries"
android:entryValues="@array/backup_interval_values"
android:key="backup_history_interval"
android:title="@string/pref_backup_interval_title" />
<ListPreference
android:defaultValue="10"
android:entries="@array/backup_history_entries"
android:entryValues="@array/backup_history_values"
android:key="backup_history_count"
android:title="@string/pref_backup_history_title" />
</PreferenceScreen>

View File

@@ -112,6 +112,13 @@
app:singleLineTitle="false"
android:persistent="false"
android:order="18"/>
<Preference
android:key="@string/pref_backup"
android:title="@string/pref_backup_title"
android:summary="@string/pref_backup_summary"
app:singleLineTitle="false"
android:persistent="false"
android:order="19"/>
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory