Remove encryptionKey and suppress repeat columns

pull/1811/head
Alex Baker 4 years ago
parent f4398d82c6
commit 0cfb27df22

File diff suppressed because it is too large Load Diff

@ -65,8 +65,9 @@ import org.tasks.notifications.NotificationDao
], ],
autoMigrations = [ autoMigrations = [
AutoMigration(from = 82, to = 83, spec = Migrations.AutoMigrate82to83::class), AutoMigration(from = 82, to = 83, spec = Migrations.AutoMigrate82to83::class),
AutoMigration(from = 83, to = 84, spec = Migrations.AutoMigrate83to84::class),
], ],
version = 83 version = 84
) )
abstract class Database : RoomDatabase() { abstract class Database : RoomDatabase() {
abstract fun notificationDao(): NotificationDao abstract fun notificationDao(): NotificationDao

@ -10,6 +10,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.content.res.AppCompatResources
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
@ -79,12 +80,11 @@ abstract class BaseCaldavAccountSettingsActivity : ThemedInjectingAppCompatActiv
if (!isNullOrEmpty(it.password)) { if (!isNullOrEmpty(it.password)) {
binding.password.setText(PASSWORD_MASK) binding.password.setText(PASSWORD_MASK)
} }
binding.repeat.isChecked = it.isSuppressRepeatingTasks
} }
} }
val toolbar = binding.toolbar.toolbar val toolbar = binding.toolbar.toolbar
toolbar.title = if (caldavAccount == null) getString(R.string.add_account) else caldavAccount!!.name toolbar.title = if (caldavAccount == null) getString(R.string.add_account) else caldavAccount!!.name
toolbar.navigationIcon = getDrawable(R.drawable.ic_outline_save_24px) toolbar.navigationIcon = AppCompatResources.getDrawable(this, R.drawable.ic_outline_save_24px)
toolbar.setNavigationOnClickListener { save() } toolbar.setNavigationOnClickListener { save() }
toolbar.inflateMenu(menuRes) toolbar.inflateMenu(menuRes)
toolbar.setOnMenuItemClickListener(this) toolbar.setOnMenuItemClickListener(this)
@ -283,11 +283,8 @@ abstract class BaseCaldavAccountSettingsActivity : ThemedInjectingAppCompatActiv
(!isNullOrEmpty(binding.name.text.toString().trim { it <= ' ' }) (!isNullOrEmpty(binding.name.text.toString().trim { it <= ' ' })
|| !isNullOrEmpty(newPassword) || !isNullOrEmpty(newPassword)
|| !isNullOrEmpty(binding.url.text.toString().trim { it <= ' ' }) || !isNullOrEmpty(binding.url.text.toString().trim { it <= ' ' })
|| !isNullOrEmpty(newUsername) || !isNullOrEmpty(newUsername))
|| binding.repeat.isChecked) } else needsValidation() || newName != caldavAccount!!.name
} else needsValidation()
|| newName != caldavAccount!!.name
|| binding.repeat.isChecked != caldavAccount!!.isSuppressRepeatingTasks
} }
protected open fun needsValidation(): Boolean = protected open fun needsValidation(): Boolean =

@ -63,7 +63,6 @@ class CaldavAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Toolb
if (passwordChanged()) { if (passwordChanged()) {
caldavAccount!!.password = encryption.encrypt(newPassword!!) caldavAccount!!.password = encryption.encrypt(newPassword!!)
} }
caldavAccount!!.isSuppressRepeatingTasks = binding.repeat.isChecked
caldavDao.update(caldavAccount!!) caldavDao.update(caldavAccount!!)
setResult(Activity.RESULT_OK) setResult(Activity.RESULT_OK)
finish() finish()

@ -54,14 +54,6 @@ class CaldavAccount : Parcelable {
@Transient @Transient
var error: String? = "" var error: String? = ""
@ColumnInfo(name = "cda_repeat")
var isSuppressRepeatingTasks = false
@Deprecated("use etebase")
@ColumnInfo(name = "cda_encryption_key")
@Transient
var encryptionKey: String? = null
@ColumnInfo(name = "cda_account_type") @ColumnInfo(name = "cda_account_type")
var accountType = TYPE_CALDAV var accountType = TYPE_CALDAV
@ -82,9 +74,7 @@ class CaldavAccount : Parcelable {
username = source.readString() username = source.readString()
password = source.readString() password = source.readString()
error = source.readString() error = source.readString()
isSuppressRepeatingTasks = ParcelCompat.readBoolean(source)
accountType = source.readInt() accountType = source.readInt()
encryptionKey = source.readString()
isCollapsed = ParcelCompat.readBoolean(source) isCollapsed = ParcelCompat.readBoolean(source)
serverType = source.readInt() serverType = source.readInt()
} }
@ -93,11 +83,6 @@ class CaldavAccount : Parcelable {
return encryption.decrypt(password) ?: "" return encryption.decrypt(password) ?: ""
} }
@Deprecated("use etebase")
fun getEncryptionPassword(encryption: KeyStoreEncryption): String {
return encryption.decrypt(encryptionKey) ?: ""
}
val isCaldavAccount: Boolean val isCaldavAccount: Boolean
get() = accountType == TYPE_CALDAV get() = accountType == TYPE_CALDAV
@ -105,10 +90,10 @@ class CaldavAccount : Parcelable {
val isEteSyncAccount: Boolean val isEteSyncAccount: Boolean
get() = accountType == TYPE_ETESYNC get() = accountType == TYPE_ETESYNC
val isEtebaseAccount: Boolean private val isEtebaseAccount: Boolean
get() = accountType == TYPE_ETEBASE get() = accountType == TYPE_ETEBASE
val isOpenTasks: Boolean private val isOpenTasks: Boolean
get() = accountType == TYPE_OPENTASKS get() = accountType == TYPE_OPENTASKS
val isTasksOrg: Boolean val isTasksOrg: Boolean
@ -130,6 +115,9 @@ class CaldavAccount : Parcelable {
else -> throw IllegalArgumentException("Unexpected account type: $this") else -> throw IllegalArgumentException("Unexpected account type: $this")
} }
val isSuppressRepeatingTasks: Boolean
get() = serverType == SERVER_OPEN_XCHANGE
override fun describeContents() = 0 override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) { override fun writeToParcel(dest: Parcel, flags: Int) {
@ -141,9 +129,7 @@ class CaldavAccount : Parcelable {
writeString(username) writeString(username)
writeString(password) writeString(password)
writeString(error) writeString(error)
ParcelCompat.writeBoolean(this, isSuppressRepeatingTasks)
writeInt(accountType) writeInt(accountType)
writeString(encryptionKey)
ParcelCompat.writeBoolean(this, isCollapsed) ParcelCompat.writeBoolean(this, isCollapsed)
writeInt(serverType) writeInt(serverType)
} }
@ -162,8 +148,6 @@ class CaldavAccount : Parcelable {
if (username != other.username) return false if (username != other.username) return false
if (password != other.password) return false if (password != other.password) return false
if (error != other.error) return false if (error != other.error) return false
if (isSuppressRepeatingTasks != other.isSuppressRepeatingTasks) return false
if (encryptionKey != other.encryptionKey) return false
if (accountType != other.accountType) return false if (accountType != other.accountType) return false
if (isCollapsed != other.isCollapsed) return false if (isCollapsed != other.isCollapsed) return false
if (serverType != other.serverType) return false if (serverType != other.serverType) return false
@ -179,8 +163,6 @@ class CaldavAccount : Parcelable {
result = 31 * result + (username?.hashCode() ?: 0) result = 31 * result + (username?.hashCode() ?: 0)
result = 31 * result + (password?.hashCode() ?: 0) result = 31 * result + (password?.hashCode() ?: 0)
result = 31 * result + (error?.hashCode() ?: 0) result = 31 * result + (error?.hashCode() ?: 0)
result = 31 * result + isSuppressRepeatingTasks.hashCode()
result = 31 * result + (encryptionKey?.hashCode() ?: 0)
result = 31 * result + accountType result = 31 * result + accountType
result = 31 * result + isCollapsed.hashCode() result = 31 * result + isCollapsed.hashCode()
result = 31 * result + serverType result = 31 * result + serverType
@ -188,7 +170,7 @@ class CaldavAccount : Parcelable {
} }
override fun toString(): String { override fun toString(): String {
return "CaldavAccount(id=$id, uuid=$uuid, name=$name, url=$url, username=$username, password=$password, error=$error, isSuppressRepeatingTasks=$isSuppressRepeatingTasks, encryptionKey=$encryptionKey, accountType=$accountType, isCollapsed=$isCollapsed, serverType=$serverType)" return "CaldavAccount(id=$id, uuid=$uuid, name=$name, url=$url, username=$username, password=$password, error=$error, accountType=$accountType, isCollapsed=$isCollapsed, serverType=$serverType)"
} }
fun isTasksSubscription(context: Context): Boolean { fun isTasksSubscription(context: Context): Boolean {

@ -9,8 +9,6 @@ import com.todoroo.astrid.api.FilterListItem.NO_ORDER
import com.todoroo.astrid.data.Task.Companion.NOTIFY_AFTER_DEADLINE import com.todoroo.astrid.data.Task.Companion.NOTIFY_AFTER_DEADLINE
import com.todoroo.astrid.data.Task.Companion.NOTIFY_AT_DEADLINE import com.todoroo.astrid.data.Task.Companion.NOTIFY_AT_DEADLINE
import com.todoroo.astrid.data.Task.Companion.NOTIFY_AT_START import com.todoroo.astrid.data.Task.Companion.NOTIFY_AT_START
import com.todoroo.astrid.data.Task.Companion.NOTIFY_MODE_FIVE
import com.todoroo.astrid.data.Task.Companion.NOTIFY_MODE_NONSTOP
import org.tasks.caldav.FileStorage import org.tasks.caldav.FileStorage
import org.tasks.data.Alarm.Companion.TYPE_RANDOM import org.tasks.data.Alarm.Companion.TYPE_RANDOM
import org.tasks.data.Alarm.Companion.TYPE_REL_END import org.tasks.data.Alarm.Companion.TYPE_REL_END
@ -33,6 +31,12 @@ object Migrations {
) )
class AutoMigrate82to83: AutoMigrationSpec class AutoMigrate82to83: AutoMigrationSpec
@DeleteColumn.Entries(
DeleteColumn(tableName = "caldav_accounts", columnName = "cda_encryption_key"),
DeleteColumn(tableName = "caldav_accounts", columnName = "cda_repeat"),
)
class AutoMigrate83to84: AutoMigrationSpec
private val MIGRATION_35_36: Migration = object : Migration(35, 36) { private val MIGRATION_35_36: Migration = object : Migration(35, 36) {
override fun migrate(database: SupportSQLiteDatabase) { override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE `tagdata` ADD COLUMN `color` INTEGER DEFAULT -1") database.execSQL("ALTER TABLE `tagdata` ADD COLUMN `color` INTEGER DEFAULT -1")

@ -9,7 +9,6 @@ import com.todoroo.astrid.data.Task
import com.todoroo.astrid.helper.UUIDHelper import com.todoroo.astrid.helper.UUIDHelper
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.Strings.isNullOrEmpty
import org.tasks.analytics.Constants import org.tasks.analytics.Constants
import org.tasks.caldav.BaseCaldavAccountSettingsActivity import org.tasks.caldav.BaseCaldavAccountSettingsActivity
import org.tasks.data.CaldavAccount import org.tasks.data.CaldavAccount
@ -25,7 +24,6 @@ class EtebaseAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Tool
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding.repeat.visibility = View.GONE
binding.showAdvanced.visibility = View.VISIBLE binding.showAdvanced.visibility = View.VISIBLE
binding.showAdvanced.setOnCheckedChangeListener { _, _ -> binding.showAdvanced.setOnCheckedChangeListener { _, _ ->
updateUrlVisibility() updateUrlVisibility()
@ -77,9 +75,6 @@ class EtebaseAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Tool
binding.urlLayout.visibility = if (binding.showAdvanced.isChecked) View.VISIBLE else View.GONE binding.urlLayout.visibility = if (binding.showAdvanced.isChecked) View.VISIBLE else View.GONE
} }
override fun needsValidation(): Boolean =
super.needsValidation() || isNullOrEmpty(caldavAccount!!.encryptionKey)
override suspend fun addAccount(url: String, username: String, password: String) = override suspend fun addAccount(url: String, username: String, password: String) =
addAccountViewModel.addAccount(url, username, password) addAccountViewModel.addAccount(url, username, password)

@ -14,7 +14,6 @@ import org.tasks.caldav.BaseCaldavAccountSettingsActivity
class EteSyncAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Toolbar.OnMenuItemClickListener { class EteSyncAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Toolbar.OnMenuItemClickListener {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding.repeat.visibility = View.GONE
binding.showAdvanced.visibility = View.GONE binding.showAdvanced.visibility = View.GONE
binding.description.visibility = View.VISIBLE binding.description.visibility = View.VISIBLE
binding.description.setTextColor(ContextCompat.getColor(this, R.color.overdue)) binding.description.setTextColor(ContextCompat.getColor(this, R.color.overdue))

@ -9,7 +9,6 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.R import org.tasks.R
import org.tasks.caldav.BaseCaldavAccountSettingsActivity import org.tasks.caldav.BaseCaldavAccountSettingsActivity
import org.tasks.data.OpenTaskDao.Companion.isDavx5
@AndroidEntryPoint @AndroidEntryPoint
class OpenTaskAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Toolbar.OnMenuItemClickListener { class OpenTaskAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Toolbar.OnMenuItemClickListener {
@ -20,10 +19,6 @@ class OpenTaskAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Too
binding.userLayout.visibility = View.GONE binding.userLayout.visibility = View.GONE
binding.passwordLayout.visibility = View.GONE binding.passwordLayout.visibility = View.GONE
binding.urlLayout.visibility = View.GONE binding.urlLayout.visibility = View.GONE
if (caldavAccount?.uuid?.isDavx5() != true) {
binding.repeat.visibility = View.GONE
}
} }
override val newPassword = "" override val newPassword = ""
@ -37,15 +32,12 @@ class OpenTaskAccountSettingsActivity : BaseCaldavAccountSettingsActivity(), Too
if (passwordChanged()) { if (passwordChanged()) {
caldavAccount!!.password = encryption.encrypt(newPassword) caldavAccount!!.password = encryption.encrypt(newPassword)
} }
caldavAccount!!.isSuppressRepeatingTasks = binding.repeat.isChecked
caldavDao.update(caldavAccount!!) caldavDao.update(caldavAccount!!)
setResult(Activity.RESULT_OK) setResult(Activity.RESULT_OK)
finish() finish()
} }
override fun hasChanges() = override fun hasChanges() = newName != caldavAccount!!.name
newName != caldavAccount!!.name
|| binding.repeat.isChecked != caldavAccount!!.isSuppressRepeatingTasks
override fun save() = lifecycleScope.launch { override fun save() = lifecycleScope.launch {
if (newName.isBlank()) { if (newName.isBlank()) {

@ -92,11 +92,6 @@
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/repeat"
style="@style/TagSettingsRow"
android:text="@string/caldav_account_repeating_tasks" />
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>

@ -516,7 +516,6 @@
<string name="widget_header_settings">إعدادات شريط العنوان</string> <string name="widget_header_settings">إعدادات شريط العنوان</string>
<string name="badges_description">عرض عداد المهمة على مشغل ايقونة التطبيق. ليس جميع المشغلات تدعم الشارات(العداد).</string> <string name="badges_description">عرض عداد المهمة على مشغل ايقونة التطبيق. ليس جميع المشغلات تدعم الشارات(العداد).</string>
<string name="gcal_TEA_error">خطأ في إضافة المهمة للتقويم!</string> <string name="gcal_TEA_error">خطأ في إضافة المهمة للتقويم!</string>
<string name="caldav_account_repeating_tasks">يعالج الخادم المهام المتكررة</string>
<string name="name_your_price">سمي سعرك</string> <string name="name_your_price">سمي سعرك</string>
<string name="pro_dashclock_extension">الاضافة داشكلوك</string> <string name="pro_dashclock_extension">الاضافة داشكلوك</string>
<string name="caldav_home_set_not_found">لم يتم العثور على المجموعة الرئيسية</string> <string name="caldav_home_set_not_found">لم يتم العثور على المجموعة الرئيسية</string>

@ -550,7 +550,6 @@
<string name="choose_synchronization_service">Избор на услуга</string> <string name="choose_synchronization_service">Избор на услуга</string>
<string name="enter_title_hint">Въведете заглавие</string> <string name="enter_title_hint">Въведете заглавие</string>
<string name="subtasks_multilevel_google_task">Вложени задачи не се поддържат от Google Tasks</string> <string name="subtasks_multilevel_google_task">Вложени задачи не се поддържат от Google Tasks</string>
<string name="caldav_account_repeating_tasks">Сървърът се грижи за повтарящите се задачи</string>
<string name="widget_on_click">При щракване</string> <string name="widget_on_click">При щракване</string>
<string name="whats_new">Какво е новото</string> <string name="whats_new">Какво е новото</string>
<string name="no_app_found">Няма приложение, което да обработи тази заявка</string> <string name="no_app_found">Няма приложение, което да обработи тази заявка</string>

@ -437,7 +437,6 @@
<string name="invalid_backup_file">Zvolený soubor neobsahuje zálohu</string> <string name="invalid_backup_file">Zvolený soubor neobsahuje zálohu</string>
<string name="google_tasks_add_to_top">Nové úkoly nahoře</string> <string name="google_tasks_add_to_top">Nové úkoly nahoře</string>
<string name="name_your_price">Zaplaťte libovolnou částku</string> <string name="name_your_price">Zaplaťte libovolnou částku</string>
<string name="caldav_account_repeating_tasks">Povolit serveru plánovat opakující se úkoly</string>
<string name="expand_subtasks">Rozbalit podúkoly</string> <string name="expand_subtasks">Rozbalit podúkoly</string>
<string name="collapse_subtasks">Sbalit podúkoly</string> <string name="collapse_subtasks">Sbalit podúkoly</string>
<string name="subtasks_multilevel_google_task">Úkoly Google nepodporují víceúrovňové podúkoly</string> <string name="subtasks_multilevel_google_task">Úkoly Google nepodporují víceúrovňové podúkoly</string>

@ -186,7 +186,6 @@
<string name="subtasks_multilevel_google_task">Flere niveauer af underopgaver understøttes ikke af Google Tasks</string> <string name="subtasks_multilevel_google_task">Flere niveauer af underopgaver understøttes ikke af Google Tasks</string>
<string name="collapse_subtasks">Skjul underopgaver</string> <string name="collapse_subtasks">Skjul underopgaver</string>
<string name="expand_subtasks">Udvid underopgaver</string> <string name="expand_subtasks">Udvid underopgaver</string>
<string name="caldav_account_repeating_tasks">Server håndterer tilbagevendende opgaver</string>
<string name="name_your_price">Betal, hvad du vil</string> <string name="name_your_price">Betal, hvad du vil</string>
<string name="google_tasks_add_to_top">Nye opgaver øverst</string> <string name="google_tasks_add_to_top">Nye opgaver øverst</string>
<string name="invalid_backup_file">Ugyldig sikkerhedskopi-fil</string> <string name="invalid_backup_file">Ugyldig sikkerhedskopi-fil</string>

@ -430,7 +430,6 @@
<string name="button_unsubscribe">Abonnement kündigen</string> <string name="button_unsubscribe">Abonnement kündigen</string>
<string name="name_your_price">Nennen Sie Ihren Preis</string> <string name="name_your_price">Nennen Sie Ihren Preis</string>
<string name="SSD_sort_my_order">Eigene Sortierung</string> <string name="SSD_sort_my_order">Eigene Sortierung</string>
<string name="caldav_account_repeating_tasks">Server behandelt wiederkehrende Aufgaben</string>
<string name="always_display_full_date">Datum ganz anzeigen</string> <string name="always_display_full_date">Datum ganz anzeigen</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d Teilaufgabe</item> <item quantity="one">%d Teilaufgabe</item>

@ -430,7 +430,6 @@
<string name="button_unsubscribe">Cancelar la suscripción</string> <string name="button_unsubscribe">Cancelar la suscripción</string>
<string name="name_your_price">Precio flexible</string> <string name="name_your_price">Precio flexible</string>
<string name="SSD_sort_my_order">Mi orden</string> <string name="SSD_sort_my_order">Mi orden</string>
<string name="caldav_account_repeating_tasks">El servidor se encarga de las tareas recurrentes</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d subtarea</item> <item quantity="one">%d subtarea</item>
<item quantity="other">%d subtareas</item> <item quantity="other">%d subtareas</item>

@ -430,7 +430,6 @@
<string name="name_your_price">Jarri zuk prezioa</string> <string name="name_your_price">Jarri zuk prezioa</string>
<string name="error_adding_account">Errorea: %s</string> <string name="error_adding_account">Errorea: %s</string>
<string name="SSD_sort_my_order">Nire eskaria</string> <string name="SSD_sort_my_order">Nire eskaria</string>
<string name="caldav_account_repeating_tasks">Zerbitzariari kudeatzen ditu zeregin errepikakorrak</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">Azpi-zeregin %d</item> <item quantity="one">Azpi-zeregin %d</item>
<item quantity="other">%d azpi-zeregin</item> <item quantity="other">%d azpi-zeregin</item>

@ -400,7 +400,6 @@
<string name="subtasks_multilevel_google_task">Google Tasks ei tue monitasoisia alitehtäviä</string> <string name="subtasks_multilevel_google_task">Google Tasks ei tue monitasoisia alitehtäviä</string>
<string name="collapse_subtasks">Pienennä alitehtävät</string> <string name="collapse_subtasks">Pienennä alitehtävät</string>
<string name="expand_subtasks">Laajenna alitehtävät</string> <string name="expand_subtasks">Laajenna alitehtävät</string>
<string name="caldav_account_repeating_tasks">Palvelin käsittelee toistuvia tehtäviä</string>
<string name="name_your_price">Nimeä hintasi</string> <string name="name_your_price">Nimeä hintasi</string>
<string name="google_tasks_add_to_top">Uudet tehtävät huipulla</string> <string name="google_tasks_add_to_top">Uudet tehtävät huipulla</string>
<string name="invalid_backup_file">Epäsopiva varmuuskopiotiedosto</string> <string name="invalid_backup_file">Epäsopiva varmuuskopiotiedosto</string>

@ -425,7 +425,6 @@
<string name="name_your_price">Donnez votre prix</string> <string name="name_your_price">Donnez votre prix</string>
<string name="error_adding_account">Erreur : %s</string> <string name="error_adding_account">Erreur : %s</string>
<string name="SSD_sort_my_order">Mon tri</string> <string name="SSD_sort_my_order">Mon tri</string>
<string name="caldav_account_repeating_tasks">Le serveur gère les tâches récurrentes</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d sous-tâche</item> <item quantity="one">%d sous-tâche</item>
<item quantity="other">%d sous-tâches</item> <item quantity="other">%d sous-tâches</item>

@ -287,7 +287,6 @@
<string name="subtasks_multilevel_google_task">Google Tasks ne podržava višerazinske podzadatke</string> <string name="subtasks_multilevel_google_task">Google Tasks ne podržava višerazinske podzadatke</string>
<string name="collapse_subtasks">Sklopi podzadatke</string> <string name="collapse_subtasks">Sklopi podzadatke</string>
<string name="expand_subtasks">Rasklopi podzadatke</string> <string name="expand_subtasks">Rasklopi podzadatke</string>
<string name="caldav_account_repeating_tasks">Poslužitelj obrađuje ponavljajuće zadatke</string>
<string name="name_your_price">Odredi tvoju cijenu</string> <string name="name_your_price">Odredi tvoju cijenu</string>
<string name="google_tasks_add_to_top">Novi zadaci na vrh popisa</string> <string name="google_tasks_add_to_top">Novi zadaci na vrh popisa</string>
<string name="invalid_backup_file">Neispravna datoteka sigurnosne kopije</string> <string name="invalid_backup_file">Neispravna datoteka sigurnosne kopije</string>

@ -428,7 +428,6 @@
<string name="name_your_price">Nevezd meg az árat</string> <string name="name_your_price">Nevezd meg az árat</string>
<string name="SSD_sort_my_order">Egyéni sorrend</string> <string name="SSD_sort_my_order">Egyéni sorrend</string>
<string name="error_adding_account">Hiba: %s</string> <string name="error_adding_account">Hiba: %s</string>
<string name="caldav_account_repeating_tasks">A szerver kezeli az ismétlődő feladatokat</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d részfeladat</item> <item quantity="one">%d részfeladat</item>
<item quantity="other">%d részfeladat</item> <item quantity="other">%d részfeladat</item>

@ -400,7 +400,6 @@
<string name="disable_sort_groups">Nonaktifkan grup sortir</string> <string name="disable_sort_groups">Nonaktifkan grup sortir</string>
<string name="improve_performance_summary">Nonaktifkan grup sortir dan subtugas yang bisa diciutkan untuk meningkatkan kinerja aplikasi</string> <string name="improve_performance_summary">Nonaktifkan grup sortir dan subtugas yang bisa diciutkan untuk meningkatkan kinerja aplikasi</string>
<string name="improve_performance">Tingkatkan kinerja</string> <string name="improve_performance">Tingkatkan kinerja</string>
<string name="caldav_account_repeating_tasks">Server yang menjadwalkan tugas berulang</string>
<string name="whats_new">Apa yang Baru</string> <string name="whats_new">Apa yang Baru</string>
<string name="missing_permissions">Perizinan hilang</string> <string name="missing_permissions">Perizinan hilang</string>
<string name="building_notifications">Menghasilkan notifikasi</string> <string name="building_notifications">Menghasilkan notifikasi</string>

@ -482,7 +482,6 @@
<string name="create_new_tag">Crea «%s»</string> <string name="create_new_tag">Crea «%s»</string>
<string name="subtasks_multilevel_google_task">Google Tasks non supporta attività secondarie su più livelli</string> <string name="subtasks_multilevel_google_task">Google Tasks non supporta attività secondarie su più livelli</string>
<string name="expand_subtasks">Espandi attività secondarie</string> <string name="expand_subtasks">Espandi attività secondarie</string>
<string name="caldav_account_repeating_tasks">Il server gestisce le attività ricorrenti</string>
<string name="google_tasks_add_to_top">Nuove attività in cima alla lista</string> <string name="google_tasks_add_to_top">Nuove attività in cima alla lista</string>
<string name="invalid_backup_file">File di backup non valido</string> <string name="invalid_backup_file">File di backup non valido</string>
<string name="version_string">Versione %s</string> <string name="version_string">Versione %s</string>

@ -528,7 +528,6 @@
<string name="improve_performance_summary">השבתת מיון קבוצות ותת־משימות מצטמצמות כדי לשפר את ביצועי היישומון</string> <string name="improve_performance_summary">השבתת מיון קבוצות ותת־משימות מצטמצמות כדי לשפר את ביצועי היישומון</string>
<string name="improve_performance">שיפור הביצועים</string> <string name="improve_performance">שיפור הביצועים</string>
<string name="subtasks_multilevel_google_task">תת־משימות מקוננות אינן נתמכות על ידי Google Tasks</string> <string name="subtasks_multilevel_google_task">תת־משימות מקוננות אינן נתמכות על ידי Google Tasks</string>
<string name="caldav_account_repeating_tasks">השרת מטפל במשימות חוזרות</string>
<string name="widget_due_date_reschedule">לתזמן משימה מחדש</string> <string name="widget_due_date_reschedule">לתזמן משימה מחדש</string>
<string name="widget_open_list">לפתוח רשימה</string> <string name="widget_open_list">לפתוח רשימה</string>
<string name="widget_do_nothing">לא לעשות כלום</string> <string name="widget_do_nothing">לא לעשות כלום</string>

@ -426,7 +426,6 @@
<string name="button_unsubscribe">구독 취소</string> <string name="button_unsubscribe">구독 취소</string>
<string name="name_your_price">구독 금액 정하기</string> <string name="name_your_price">구독 금액 정하기</string>
<string name="SSD_sort_my_order">순서 직접 정렬</string> <string name="SSD_sort_my_order">순서 직접 정렬</string>
<string name="caldav_account_repeating_tasks">서버가 반복 할일 처리</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="other">%d 하위할일</item> <item quantity="other">%d 하위할일</item>
</plurals> </plurals>

@ -711,6 +711,5 @@
<string name="subtasks_multilevel_google_task">„Google Tasks“ nepalaiko kelių lygių antrinių užduočių</string> <string name="subtasks_multilevel_google_task">„Google Tasks“ nepalaiko kelių lygių antrinių užduočių</string>
<string name="collapse_subtasks">Sutraukti antrines užduotis</string> <string name="collapse_subtasks">Sutraukti antrines užduotis</string>
<string name="expand_subtasks">Išplėsti antrines užduotis</string> <string name="expand_subtasks">Išplėsti antrines užduotis</string>
<string name="caldav_account_repeating_tasks">Serveris tvarko pasikartojančias užduotis</string>
<string name="when_started">Kai pradedama</string> <string name="when_started">Kai pradedama</string>
</resources> </resources>

@ -430,7 +430,6 @@
<string name="name_your_price">Betal det du vil</string> <string name="name_your_price">Betal det du vil</string>
<string name="error_adding_account">Feil: %s</string> <string name="error_adding_account">Feil: %s</string>
<string name="SSD_sort_my_order">Min bestilling</string> <string name="SSD_sort_my_order">Min bestilling</string>
<string name="caldav_account_repeating_tasks">Tjeneren håndterer gjentagende gjøremål</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d gjøremålssteg</item> <item quantity="one">%d gjøremålssteg</item>
<item quantity="other">%d gjøremålssteg</item> <item quantity="other">%d gjøremålssteg</item>

@ -430,7 +430,6 @@
<string name="icon">Pictogram</string> <string name="icon">Pictogram</string>
<string name="SSD_sort_my_order">Mijn volgorde</string> <string name="SSD_sort_my_order">Mijn volgorde</string>
<string name="error_adding_account">Fout: %s</string> <string name="error_adding_account">Fout: %s</string>
<string name="caldav_account_repeating_tasks">Server handelt terugkerende taken af</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d subtaak</item> <item quantity="one">%d subtaak</item>
<item quantity="other">%d subtaken</item> <item quantity="other">%d subtaken</item>

@ -440,7 +440,6 @@
<string name="button_unsubscribe">Anuluj subskrypcję</string> <string name="button_unsubscribe">Anuluj subskrypcję</string>
<string name="name_your_price">Nazwij swoją cenę</string> <string name="name_your_price">Nazwij swoją cenę</string>
<string name="SSD_sort_my_order">Ręczne</string> <string name="SSD_sort_my_order">Ręczne</string>
<string name="caldav_account_repeating_tasks">Serwer obsługuje powtarzające się zadania</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d podzadanie</item> <item quantity="one">%d podzadanie</item>
<item quantity="few">%d podzadania</item> <item quantity="few">%d podzadania</item>

@ -474,7 +474,6 @@
<string name="subtasks_multilevel_google_task">Sub-tarefas em múltiplos níveis não suportado pelo Google Tasks</string> <string name="subtasks_multilevel_google_task">Sub-tarefas em múltiplos níveis não suportado pelo Google Tasks</string>
<string name="collapse_subtasks">Recolher sub-tarefas</string> <string name="collapse_subtasks">Recolher sub-tarefas</string>
<string name="expand_subtasks">Expandir sub-tarefas</string> <string name="expand_subtasks">Expandir sub-tarefas</string>
<string name="caldav_account_repeating_tasks">Servidor lida com tarefas recorrentes</string>
<string name="name_your_price">Dê seu valor</string> <string name="name_your_price">Dê seu valor</string>
<string name="google_tasks_add_to_top">Novas tarefas ao topo</string> <string name="google_tasks_add_to_top">Novas tarefas ao topo</string>
<string name="invalid_backup_file">Arquivo de backup inválido</string> <string name="invalid_backup_file">Arquivo de backup inválido</string>

@ -538,7 +538,6 @@
<item quantity="one">%d subtarefa</item> <item quantity="one">%d subtarefa</item>
<item quantity="other">%d subtarefas</item> <item quantity="other">%d subtarefas</item>
</plurals> </plurals>
<string name="caldav_account_repeating_tasks">O servidor lida com tarefas recorrentes</string>
<string name="SSD_sort_my_order">Minha ordem</string> <string name="SSD_sort_my_order">Minha ordem</string>
<string name="name_your_price">Dê o seu valor</string> <string name="name_your_price">Dê o seu valor</string>
<string name="network_error">Não foi possível conectar</string> <string name="network_error">Não foi possível conectar</string>

@ -635,7 +635,6 @@
<string name="subtasks_multilevel_google_task">Subactivitățile pe mai multe niveluri nu sunt acceptate de Google Tasks</string> <string name="subtasks_multilevel_google_task">Subactivitățile pe mai multe niveluri nu sunt acceptate de Google Tasks</string>
<string name="collapse_subtasks">Colapsarea subactivităților</string> <string name="collapse_subtasks">Colapsarea subactivităților</string>
<string name="expand_subtasks">Extindeți subactivitățile</string> <string name="expand_subtasks">Extindeți subactivitățile</string>
<string name="caldav_account_repeating_tasks">Serverul se ocupă de sarcinile recurente</string>
<string name="name_your_price">Spuneți-vă prețul</string> <string name="name_your_price">Spuneți-vă prețul</string>
<string name="google_tasks_add_to_top">Sarcini noi în partea de sus</string> <string name="google_tasks_add_to_top">Sarcini noi în partea de sus</string>
<string name="invalid_backup_file">Fișier de backup invalid</string> <string name="invalid_backup_file">Fișier de backup invalid</string>

@ -452,7 +452,6 @@
<string name="location_permission_required_location">Доступ к данным геолокации нужен, чтобы определить ваше текущее местоположение</string> <string name="location_permission_required_location">Доступ к данным геолокации нужен, чтобы определить ваше текущее местоположение</string>
<string name="third_party_licenses">Сторонние лицензии</string> <string name="third_party_licenses">Сторонние лицензии</string>
<string name="google_tasks_add_to_top">Новые задачи наверху</string> <string name="google_tasks_add_to_top">Новые задачи наверху</string>
<string name="caldav_account_repeating_tasks">Сервер обрабатывает повторяющиеся задачи</string>
<string name="expand_subtasks">Развернуть подзадачи</string> <string name="expand_subtasks">Развернуть подзадачи</string>
<string name="collapse_subtasks">Свернуть подзадачи</string> <string name="collapse_subtasks">Свернуть подзадачи</string>
<string name="subtasks_multilevel_google_task">Многоуровневые подзадачи не поддерживаются Google Tasks</string> <string name="subtasks_multilevel_google_task">Многоуровневые подзадачи не поддерживаются Google Tasks</string>

@ -415,7 +415,6 @@
<string name="etesync_selection_description">End-to-end encrypted සමමුහුර්තකරණය</string> <string name="etesync_selection_description">End-to-end encrypted සමමුහුර්තකරණය</string>
<string name="caldav_selection_description">විවෘත අන්තර්ජාල ප්‍රමිතීන් මත පදනම් වූ සමමුහුර්තකරණය</string> <string name="caldav_selection_description">විවෘත අන්තර්ජාල ප්‍රමිතීන් මත පදනම් වූ සමමුහුර්තකරණය</string>
<string name="google_tasks_selection_description">ඔබගේ Google ගිණුම සමඟ සමමුහුර්ත කරන මූලික සේවාව</string> <string name="google_tasks_selection_description">ඔබගේ Google ගිණුම සමඟ සමමුහුර්ත කරන මූලික සේවාව</string>
<string name="caldav_account_repeating_tasks">සේවාදායකය පුනරාවර්තන කාර්යයන් හසුරුවයි</string>
<string name="name_your_price">මිලක් නියම කරන්න</string> <string name="name_your_price">මිලක් නියම කරන්න</string>
<string name="missing_permissions">අවසරය ලැබී නොමැත</string> <string name="missing_permissions">අවසරය ලැබී නොමැත</string>
<string name="location_arrived">%s වෙත පැමිණියේය</string> <string name="location_arrived">%s වෙත පැමිණියේය</string>

@ -428,7 +428,6 @@
<string name="name_your_price">Namnge ditt pris</string> <string name="name_your_price">Namnge ditt pris</string>
<string name="SSD_sort_my_order">Min ordning</string> <string name="SSD_sort_my_order">Min ordning</string>
<string name="error_adding_account">Fel: %s</string> <string name="error_adding_account">Fel: %s</string>
<string name="caldav_account_repeating_tasks">Server hanterar återkommande uppgifter</string>
<string name="lists">Listor</string> <string name="lists">Listor</string>
<string name="sort_modified_group">Modifierad %s</string> <string name="sort_modified_group">Modifierad %s</string>
<string name="sort_created_group">Skapad %s</string> <string name="sort_created_group">Skapad %s</string>

@ -234,7 +234,6 @@
<string name="subtasks_multilevel_google_task">கூகிள் பணிகளால் பல நிலை துணை பணிகள் ஆதரிக்கப்படவில்லை</string> <string name="subtasks_multilevel_google_task">கூகிள் பணிகளால் பல நிலை துணை பணிகள் ஆதரிக்கப்படவில்லை</string>
<string name="collapse_subtasks">துணை பணிகளைச் சுருக்கவும்</string> <string name="collapse_subtasks">துணை பணிகளைச் சுருக்கவும்</string>
<string name="expand_subtasks">துணை பணிகளை விரிவாக்குங்கள்</string> <string name="expand_subtasks">துணை பணிகளை விரிவாக்குங்கள்</string>
<string name="caldav_account_repeating_tasks">தொடர்ச்சியான பணிகளை சேவையாக அட்டவணைப்படுத்தட்டும்</string>
<string name="name_your_price">உங்கள் விலைக்கு பெயரிடுங்கள்</string> <string name="name_your_price">உங்கள் விலைக்கு பெயரிடுங்கள்</string>
<string name="google_tasks_add_to_top">மேலே புதிய பணிகள்</string> <string name="google_tasks_add_to_top">மேலே புதிய பணிகள்</string>
<string name="invalid_backup_file">தவறான காப்பு கோப்பு</string> <string name="invalid_backup_file">தவறான காப்பு கோப்பு</string>

@ -191,7 +191,6 @@
<string name="subtasks_multilevel_google_task">งานย่อยหลายระดับไม่ได้รับการสนับสนุนโดย Google Tasks</string> <string name="subtasks_multilevel_google_task">งานย่อยหลายระดับไม่ได้รับการสนับสนุนโดย Google Tasks</string>
<string name="collapse_subtasks">ยุบงานย่อย</string> <string name="collapse_subtasks">ยุบงานย่อย</string>
<string name="expand_subtasks">ขยายงานย่อย</string> <string name="expand_subtasks">ขยายงานย่อย</string>
<string name="caldav_account_repeating_tasks">เซิร์ฟเวอร์จัดการงานที่เกิดประจํา</string>
<string name="name_your_price">ตั้งชื่อราคาของคุณ</string> <string name="name_your_price">ตั้งชื่อราคาของคุณ</string>
<string name="google_tasks_add_to_top">งานใหม่อยู่บนสุด</string> <string name="google_tasks_add_to_top">งานใหม่อยู่บนสุด</string>
<string name="invalid_backup_file">แฟ้มสํารองข้อมูลไม่ถูกต้อง</string> <string name="invalid_backup_file">แฟ้มสํารองข้อมูลไม่ถูกต้อง</string>

@ -430,7 +430,6 @@
<string name="button_unsubscribe">Aboneliği iptal et</string> <string name="button_unsubscribe">Aboneliği iptal et</string>
<string name="name_your_price">Fiyat belirle</string> <string name="name_your_price">Fiyat belirle</string>
<string name="SSD_sort_my_order">Düzenim</string> <string name="SSD_sort_my_order">Düzenim</string>
<string name="caldav_account_repeating_tasks">Sunucu, yineleyen görevleri halleder</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="one">%d alt görev</item> <item quantity="one">%d alt görev</item>
<item quantity="other">%d alt görev</item> <item quantity="other">%d alt görev</item>

@ -477,7 +477,6 @@
<string name="subtasks_multilevel_google_task">Багаторівневі підзавдання не підтримуються Google Tasks</string> <string name="subtasks_multilevel_google_task">Багаторівневі підзавдання не підтримуються Google Tasks</string>
<string name="collapse_subtasks">Згорнути підзавдання</string> <string name="collapse_subtasks">Згорнути підзавдання</string>
<string name="expand_subtasks">Розгорнути підзавдання</string> <string name="expand_subtasks">Розгорнути підзавдання</string>
<string name="caldav_account_repeating_tasks">Сервер обробляє повторювані завдання</string>
<string name="name_your_price">Назвіть свою ціну</string> <string name="name_your_price">Назвіть свою ціну</string>
<string name="this_feature_requires_a_subscription">Ця функція потребує підписки</string> <string name="this_feature_requires_a_subscription">Ця функція потребує підписки</string>
<string name="button_unsubscribe">Скасувати підписку</string> <string name="button_unsubscribe">Скасувати підписку</string>

@ -499,7 +499,6 @@
<string name="subtasks_multilevel_google_task">کثیر الدرجی ذیلی ٹاسکس کو گوگل ٹاسکس سپورٹ نہیں کرتا</string> <string name="subtasks_multilevel_google_task">کثیر الدرجی ذیلی ٹاسکس کو گوگل ٹاسکس سپورٹ نہیں کرتا</string>
<string name="collapse_subtasks">ذیلی ٹاسکس کو بند کریں</string> <string name="collapse_subtasks">ذیلی ٹاسکس کو بند کریں</string>
<string name="expand_subtasks">ذیلی ٹاسکس کو کھولیں</string> <string name="expand_subtasks">ذیلی ٹاسکس کو کھولیں</string>
<string name="caldav_account_repeating_tasks">بار بار واقع ہونے والے ٹاسکس کو سرور چلاتا ہے</string>
<string name="name_your_price">اپنی قیمت بتائیں</string> <string name="name_your_price">اپنی قیمت بتائیں</string>
<string name="google_tasks_add_to_top">نئے ٹاسکس اوپر رکھیں</string> <string name="google_tasks_add_to_top">نئے ٹاسکس اوپر رکھیں</string>
<string name="invalid_backup_file">غلط بیک اپ فائل</string> <string name="invalid_backup_file">غلط بیک اپ فائل</string>

@ -253,7 +253,6 @@
<string name="subtasks_multilevel_google_task">Các công việc con có nhiều cấp không được Google Tasks hỗ trợ</string> <string name="subtasks_multilevel_google_task">Các công việc con có nhiều cấp không được Google Tasks hỗ trợ</string>
<string name="collapse_subtasks">Thu gọn các công việc con</string> <string name="collapse_subtasks">Thu gọn các công việc con</string>
<string name="expand_subtasks">Mở rộng các công việc con</string> <string name="expand_subtasks">Mở rộng các công việc con</string>
<string name="caldav_account_repeating_tasks">Máy chủ xử lý các công việc lặp lại</string>
<string name="name_your_price">Đặt giá của bạn</string> <string name="name_your_price">Đặt giá của bạn</string>
<string name="google_tasks_add_to_top">Công việc mới ở trên đầu</string> <string name="google_tasks_add_to_top">Công việc mới ở trên đầu</string>
<string name="invalid_backup_file">Tệp sao lưu không hợp lệ</string> <string name="invalid_backup_file">Tệp sao lưu không hợp lệ</string>

@ -421,7 +421,6 @@
<string name="list_separator_with_space">" "</string> <string name="list_separator_with_space">" "</string>
<string name="error_adding_account">错误:%s</string> <string name="error_adding_account">错误:%s</string>
<string name="SSD_sort_my_order">我的顺序</string> <string name="SSD_sort_my_order">我的顺序</string>
<string name="caldav_account_repeating_tasks">服务器处理重复任务</string>
<plurals name="subtask_count"> <plurals name="subtask_count">
<item quantity="other">%d 个子任务</item> <item quantity="other">%d 个子任务</item>
</plurals> </plurals>

@ -522,7 +522,6 @@ File %1$s contained %2$s.\n\n
<string name="invalid_backup_file">Invalid backup file</string> <string name="invalid_backup_file">Invalid backup file</string>
<string name="google_tasks_add_to_top">New tasks on top</string> <string name="google_tasks_add_to_top">New tasks on top</string>
<string name="name_your_price">Name your price</string> <string name="name_your_price">Name your price</string>
<string name="caldav_account_repeating_tasks">Server handles recurring tasks</string>
<string name="expand_subtasks">Expand subtasks</string> <string name="expand_subtasks">Expand subtasks</string>
<string name="collapse_subtasks">Collapse subtasks</string> <string name="collapse_subtasks">Collapse subtasks</string>
<string name="subtasks_multilevel_google_task">Multi-level subtasks not supported by Google Tasks</string> <string name="subtasks_multilevel_google_task">Multi-level subtasks not supported by Google Tasks</string>

Loading…
Cancel
Save