Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:localeConfig="@xml/locales_config"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ private fun Preferences(
)
)
Spacer(modifier = Modifier.height(8.dp))
if (uiState.settings.url.startsWith("http://", true)) {
Text(text = stringResource(R.string.dav_settings_url_insecure), color = MaterialTheme.colorScheme.error)
Spacer(modifier = Modifier.height(8.dp))
}
TextField(value = uiState.settings.username,
onValueChange = { stateChangeHandler(uiState.settings.copy(username = it)) },
modifier = Modifier.fillMaxWidth(),
Expand Down
31 changes: 14 additions & 17 deletions app/src/main/java/com/phpbg/easysync/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -172,31 +172,31 @@ private fun Main(
val davSettingsTitle = stringResource(R.string.dav_settings_title)
if (!showDavStatus.value) {
StatusTitleClickable(
title = "DAV not configured.",
title = stringResource(R.string.home_dav_status_not_configured),
actionTitle = davSettingsTitle,
statusColor = Color.Gray,
statusIcon = Icons.Default.Settings,
clickHandler = davSettingsHandler,
)
} else if (isDavLoading.value) {
StatusTitleClickable(
title = "DAV loading.",
title = stringResource(R.string.home_dav_status_loading),
actionTitle = davSettingsTitle,
statusColor = Color.Gray,
statusIcon = Icons.Default.Schedule,
clickHandler = davSettingsHandler,
)
} else if (isDavConnected.value) {
StatusTitleClickable(
title = "DAV Connected.",
title = stringResource(R.string.home_dav_status_connected),
actionTitle = davSettingsTitle,
statusColor = Color.Green,
statusIcon = Icons.Default.CheckCircle,
clickHandler = davSettingsHandler,
)
} else {
StatusTitleClickable(
title = "DAV not connected.",
title = stringResource(R.string.home_dav_status_not_connected),
actionTitle = davSettingsTitle,
statusColor = Color.Red,
statusIcon = Icons.Default.Cancel,
Expand All @@ -207,14 +207,14 @@ private fun Main(

if (hasOptionalPermissions.value) {
StatusTitle(
title = "Permissions granted",
title = stringResource(R.string.home_permissions_granted),
statusColor = Color.Green,
statusIcon = Icons.Default.CheckCircle
)
} else {
StatusTitleClickable(
title = "Optional permissions missing. ",
actionTitle = "Fix...",
title = stringResource(R.string.home_permissions_missing),
actionTitle = stringResource(R.string.home_permissions_action_fix),
statusColor = Color.Yellow,
statusIcon = Icons.Default.Warning,
clickHandler = {
Expand Down Expand Up @@ -263,12 +263,12 @@ private fun Main(
.fillMaxWidth()
.background(color = MaterialTheme.colorScheme.surfaceVariant),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center
) {
val modifier = Modifier.height(32.dp)
Column(
modifier = Modifier
.padding(1.dp)
.fillMaxWidth(0.5f)
.fillMaxHeight(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.End
Expand All @@ -281,7 +281,7 @@ private fun Main(
}
Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
if (jobCount == 0) {
PrimaryTextLarge(text = "Not")
PrimaryTextLarge(text = stringResource(R.string.home_files_not_running_prefix))
} else {
PrimaryTextLarge(text = formatCounter(jobCountPercent) + "%")
}
Expand All @@ -290,22 +290,21 @@ private fun Main(
Column(
modifier = Modifier
.padding(1.dp)
.fillMaxWidth(0.5f)
.fillMaxHeight(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.Start
) {
Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
StdText(text = "local files")
StdText(text = stringResource(R.string.home_files_local))
}
Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
StdText(text = "synced")
StdText(text = stringResource(R.string.home_files_synced))
}
Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
if (jobCount == 0) {
StdText(text = "running")
StdText(text = stringResource(R.string.home_sync_running))
} else {
StdText(text = "syncing")
StdText(text = stringResource(R.string.home_sync_syncing))
}
}
}
Expand All @@ -325,11 +324,9 @@ private fun Main(
}
fullSyncNowHandler()
}, enabled = syncEnabled) {
Text(text = "Sync now", style = MaterialTheme.typography.labelLarge)
Text(text = stringResource(R.string.home_action_sync_now), style = MaterialTheme.typography.labelLarge)
}
}

// TODO translations
}

// Floating bottom
Expand Down
18 changes: 9 additions & 9 deletions app/src/main/java/com/phpbg/easysync/ui/SyncSettingsActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -101,24 +101,24 @@ private fun Main(
Title(text = stringResource(R.string.sync_settings_title))
Spacer(modifier = Modifier.height(16.dp))
SwitchSetting(
title = "Sync on cellular",
description = "Allow scheduled synchronization on cellular network",
title = stringResource(R.string.sync_settings_on_cellular_title),
description = stringResource(R.string.sync_settings_on_cellular_desc),
checked = syncOnCellular,
onCheckedChange = syncOnCellularHandler
)
SwitchSetting(
title = "Sync on battery",
description = "Allow scheduled synchronization on battery",
title = stringResource(R.string.sync_settings_on_battery_title),
description = stringResource(R.string.sync_settings_on_battery_desc),
checked = syncOnBattery,
onCheckedChange = syncOnBatteryHandler
)
Spacer(modifier = Modifier.height(16.dp))
StdText("Conflicts handling")
Description("If a file is modified on both side:")
StdText(stringResource(R.string.sync_settings_conflicts_title))
Description(stringResource(R.string.sync_settings_conflicts_desc))
val options = mapOf(
ConflictStrategy.KEEP_LOCAL.name to "Keep local copy (overwrite remote copy)",
ConflictStrategy.IGNORE.name to "Ignore file",
ConflictStrategy.KEEP_REMOTE.name to "Keep remote copy (overwrite local copy)"
ConflictStrategy.KEEP_LOCAL.name to stringResource(R.string.sync_settings_conflicts_strategy_keep_local),
ConflictStrategy.IGNORE.name to stringResource(R.string.sync_settings_conflicts_strategy_ignore),
ConflictStrategy.KEEP_REMOTE.name to stringResource(R.string.sync_settings_conflicts_strategy_keep_remote)
)
RadioGroup(options, selected = conflictStrategy.name, onClick = conflictStrategyHandler)
}
Expand Down
23 changes: 23 additions & 0 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,25 @@
<string name="dav_settings_hide_password">Passwort ausblenden</string>
<string name="dav_settings_password">Passwort</string>
<string name="dav_settings_title">DAV-Einstellungen</string>
<string name="dav_settings_url_insecure">Diese URL ist unsicher. Alle Ihre Daten werden von jedem lesbar sein. Erwägen Sie einen Wechsel zu HTTPS.</string>
<string name="dav_settings_username">Benutzername</string>
<string name="dav_settings_remote_not_empty">Der Remote-Ordner ist nicht leer. Alle Dateien werden heruntergeladen und mit Ihrem Gerät synchronisiert. Trotzdem speichern?</string>
<string name="dav_settings_save">Speichern</string>
<string name="dav_settings_save_anyway">Trotzdem speichern</string>
<string name="dav_settings_show_password">Passwort anzeigen</string>
<string name="home_action_sync_now">Jetzt synchronisieren</string>
<string name="home_dav_status_connected">DAV verbunden.</string>
<string name="home_dav_status_loading">DAV wird geladen.</string>
<string name="home_dav_status_not_configured">DAV nicht konfiguriert.</string>
<string name="home_dav_status_not_connected">DAV nicht verbunden.</string>
<string name="home_files_local">lokale Dateien</string>
<string name="home_files_not_running_prefix">Nicht</string>
<string name="home_files_synced">synchronisiert</string>
<string name="home_permissions_granted">Berechtigungen erteilt</string>
<string name="home_permissions_missing">Optionale Berechtigungen fehlen.</string>
<string name="home_permissions_action_fix">Beheben…</string>
<string name="home_sync_running">läuft</string>
<string name="home_sync_syncing">synchronisiert</string>
<string name="permissions_activity_title">Berechtigungen</string>
<string name="permissions_files_text">Um Ihre Dateien zu synchronisieren, benötigen wir vollen Zugriff auf Ihre Dateien. Gehen Sie zu den Einstellungen, um die Berechtigung zu aktivieren</string>
<string name="permissions_files_button">Dateieinstellungen</string>
Expand All @@ -28,5 +42,14 @@
<string name="permissions_next">Weiter</string>
<string name="sync_settings_title">Synchronisationseinstellungen</string>
<string name="sync_settings_activity_title">Synchronisationseinstellungen</string>
<string name="sync_settings_conflicts_title">Konfliktbehandlung</string>
<string name="sync_settings_conflicts_desc">Wenn eine Datei auf beiden Seiten geändert wurde:</string>
<string name="sync_settings_conflicts_strategy_keep_local">Lokale Kopie behalten (Überschreibe die entfernte Kopie)</string>
<string name="sync_settings_conflicts_strategy_ignore">Datei ignorieren</string>
<string name="sync_settings_conflicts_strategy_keep_remote">Entfernte Kopie behalten (Überschreibe die lokale Kopie)</string>
<string name="sync_settings_on_battery_title">Synchronisieren bei Batteriebetrieb</string>
<string name="sync_settings_on_battery_desc">Geplante Synchronisierung bei Batteriebetrieb erlauben</string>
<string name="sync_settings_on_cellular_title">Synchronisieren über Mobilfunknetz</string>
<string name="sync_settings_on_cellular_desc">Geplante Synchronisierung über das Mobilfunknetz erlauben</string>
<string name="about">Über, Hilfe</string>
</resources>
23 changes: 23 additions & 0 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,21 @@
<string name="dav_settings_hide_password">Masquer le mot de passe</string>
<string name="dav_settings_save_anyway">Sauvegarder quand même ?</string>
<string name="dav_settings_show_password">Afficher le mot de passe</string>
<string name="home_action_sync_now">Synchroniser</string>
<string name="home_dav_status_connected">DAV Connecté.</string>
<string name="home_dav_status_loading">Connexion DAV en cours.</string>
<string name="home_dav_status_not_configured">DAV non configuré.</string>
<string name="home_dav_status_not_connected">DAV non connecté.</string>
<string name="home_files_local">fichiers locaux</string>
<string name="home_files_not_running_prefix">En</string>
<string name="home_files_synced">synchronisé</string>
<string name="home_permissions_granted">Permissions accordées</string>
<string name="home_permissions_missing">Permissions optionnelles manquantes.</string>
<string name="home_permissions_action_fix">Corriger…</string>
<string name="home_sync_running">attente</string>
<string name="home_sync_syncing">en cours</string>
<string name="dav_settings_title">Paramètres DAV</string>
<string name="dav_settings_url_insecure">Cette URL n\'est pas sécurisée. Vos données pourront être interceptées. Vous devriez utiliser HTTPS.</string>
<string name="permissions_activity_title">Permissions</string>
<string name="permissions_files_text">Pour fonctionner l\'application doit accéder à tous vos fichiers. Cliquez sur \"Suivant\" pour autoriser l\'accès.</string>
<string name="permissions_files_button">Suivant</string>
Expand All @@ -28,5 +42,14 @@
<string name="permissions_next">Suivant</string>
<string name="sync_settings_title">Paramètres de synchronisation</string>
<string name="sync_settings_activity_title">Paramètres de synchronisation</string>
<string name="sync_settings_conflicts_title">Conflits</string>
<string name="sync_settings_conflicts_desc">Si un fichier est modifié des deux côtés:</string>
<string name="sync_settings_conflicts_strategy_keep_local">Garder la copie locale (écraser la distante)</string>
<string name="sync_settings_conflicts_strategy_ignore">Ignorer</string>
<string name="sync_settings_conflicts_strategy_keep_remote">Garder la copie distante (écraser la locale)</string>
<string name="sync_settings_on_battery_title">Sur batterie</string>
<string name="sync_settings_on_battery_desc">Autoriser la synchronisation quand le téléphone est sur batterie</string>
<string name="sync_settings_on_cellular_title">Sur réseau mobile</string>
<string name="sync_settings_on_cellular_desc">Autoriser la synchronisation quand le téléphone est sur le réseau mobile</string>
<string name="about">A propos, aide</string>
</resources>
23 changes: 23 additions & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,25 @@
<string name="dav_settings_hide_password">Скрыть пароль</string>
<string name="dav_settings_password">Пароль</string>
<string name="dav_settings_title">Настройки DAV</string>
<string name="dav_settings_url_insecure">Этот URL-адрес небезопасен. Все ваши данные будут доступны для чтения кем либо. Подумайте о переходе на HTTPS.</string>
<string name="dav_settings_username">Имя пользователя</string>
<string name="dav_settings_remote_not_empty">Удалённая папка не пуста. Все файлы будут загружены и синхронизированы с вашим устройством. Все равно сохранить?</string>
<string name="dav_settings_save">Сохранить</string>
<string name="dav_settings_save_anyway">Сохранить всё равно</string>
<string name="dav_settings_show_password">Отобразить пароль</string>
<string name="home_action_sync_now">Синхронизировать сейчас</string>
<string name="home_dav_status_connected">DAV подключён.</string>
<string name="home_dav_status_loading">DAV загружается.</string>
<string name="home_dav_status_not_configured">DAV не настроен.</string>
<string name="home_dav_status_not_connected">DAV не подключен.</string>
<string name="home_files_local">локальные файлы</string>
<string name="home_files_not_running_prefix">Не</string>
<string name="home_files_synced">синхронизированы</string>
<string name="home_permissions_granted">Разрешения предоставлены</string>
<string name="home_permissions_missing">Отсутствуют необязательные разрешения.</string>
<string name="home_permissions_action_fix">Исправить…</string>
<string name="home_sync_running">выполняется</string>
<string name="home_sync_syncing">синхронизация</string>
<string name="permissions_activity_title">Разрешения</string>
<string name="permissions_files_text">Для синхронизации ваших файлов нам необходим полный доступ к вашим файлам. Зайдите в настройки, чтобы включить разрешение</string>
<string name="permissions_files_button">Настройки файлов</string>
Expand All @@ -27,5 +41,14 @@
<string name="permissions_next">Далее</string>
<string name="sync_settings_title">Настройки синхронизации</string>
<string name="sync_settings_activity_title">Настройки синхронизации</string>
<string name="sync_settings_conflicts_title">Разрешение конфликтов</string>
<string name="sync_settings_conflicts_desc">Если файл изменен на обеих сторонах:</string>
<string name="sync_settings_conflicts_strategy_keep_local">Сохранить локальную копию (перезаписать удаленную копию)</string>
<string name="sync_settings_conflicts_strategy_ignore">Игнорировать файл</string>
<string name="sync_settings_conflicts_strategy_keep_remote">Сохранить удаленную копию (перезаписать локальную копию)</string>
<string name="sync_settings_on_battery_title">Синхронизация при работе от батареи</string>
<string name="sync_settings_on_battery_desc">Разрешить запланированную синхронизацию при работе от батареи</string>
<string name="sync_settings_on_cellular_title">Синхронизация по мобильному интернету</string>
<string name="sync_settings_on_cellular_desc">Разрешить запланированную синхронизацию по мобильному интернету</string>
<string name="about">О приложении, помощь</string>
</resources>
Loading