Update name your price dialog

pull/1255/head
Alex Baker 5 years ago
parent 15a36704d7
commit 48f2c7a650

@ -11,5 +11,7 @@ class Firebase @Inject constructor() {
fun noChurn() = true fun noChurn() = true
fun averageSubscription() = 0
fun logEvent(event: Int, vararg params: Pair<Int, Any>) {} fun logEvent(event: Int, vararg params: Pair<Int, Any>) {}
} }

@ -61,6 +61,8 @@ class Firebase @Inject constructor(
fun noChurn(): Boolean = remoteConfig?.getBoolean("no_churn") ?: false fun noChurn(): Boolean = remoteConfig?.getBoolean("no_churn") ?: false
fun averageSubscription(): Double = remoteConfig?.getDouble("avg_sub") ?: 3.57
init { init {
if (preferences.isTrackingEnabled) { if (preferences.isTrackingEnabled) {
analytics = FirebaseAnalytics.getInstance(context).apply { analytics = FirebaseAnalytics.getInstance(context).apply {

@ -5,4 +5,8 @@
<key>no_churn</key> <key>no_churn</key>
<value>false</value> <value>false</value>
</entry> </entry>
<entry>
<key>avg_sub</key>
<value>3.57</value>
</entry>
</defaultsMap> </defaultsMap>

@ -10,6 +10,7 @@ import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.text.method.LinkMovementMethod import android.text.method.LinkMovementMethod
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
@ -22,10 +23,10 @@ import io.noties.markwon.ext.strikethrough.StrikethroughPlugin
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.analytics.Firebase
import org.tasks.databinding.ActivityPurchaseBinding import org.tasks.databinding.ActivityPurchaseBinding
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.locale.Locale import org.tasks.locale.Locale
import org.tasks.themes.Theme
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -42,12 +43,12 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
} }
} }
@Inject lateinit var tasksTheme: Theme
@Inject lateinit var inventory: Inventory @Inject lateinit var inventory: Inventory
@Inject lateinit var dialogBuilder: DialogBuilder @Inject lateinit var dialogBuilder: DialogBuilder
@Inject lateinit var billingClient: BillingClient @Inject lateinit var billingClient: BillingClient
@Inject lateinit var localBroadcastManager: LocalBroadcastManager @Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var locale: Locale @Inject lateinit var locale: Locale
@Inject lateinit var firebase: Firebase
private lateinit var binding: ActivityPurchaseBinding private lateinit var binding: ActivityPurchaseBinding
private lateinit var markwon: Markwon private lateinit var markwon: Markwon
@ -67,9 +68,7 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
} }
binding.slider.addOnChangeListener(this::onPriceChanged) binding.slider.addOnChangeListener(this::onPriceChanged)
binding.slider.setLabelFormatter { binding.slider.setLabelFormatter { "$${it - .01}" }
"$${it - .01}"
}
binding.text.movementMethod = LinkMovementMethod.getInstance() binding.text.movementMethod = LinkMovementMethod.getInstance()
markwon = Markwon.builder(requireContext()) markwon = Markwon.builder(requireContext())
@ -196,7 +195,7 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
private fun setWaitScreen(isWaitScreen: Boolean) { private fun setWaitScreen(isWaitScreen: Boolean) {
Timber.d("setWaitScreen(%s)", isWaitScreen) Timber.d("setWaitScreen(%s)", isWaitScreen)
val generic = BuildConfig.FLAVOR == "generic" val generic = BuildConfig.FLAVOR == "generic"
binding.slider.isVisible = !isWaitScreen && nameYourPrice binding.sliderContainer.isVisible = !isWaitScreen && nameYourPrice
binding.payOther.isVisible = !isWaitScreen binding.payOther.isVisible = !isWaitScreen
binding.payOther.setText(when { binding.payOther.setText(when {
nameYourPrice -> R.string.back nameYourPrice -> R.string.back
@ -238,6 +237,13 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
val annualPrice = if (nameYourPrice) sliderValue else 30 val annualPrice = if (nameYourPrice) sliderValue else 30
val monthlyPrice = if (nameYourPrice) sliderValue else 3 val monthlyPrice = if (nameYourPrice) sliderValue else 3
val constrained = resources.getBoolean(R.bool.width_constrained) val constrained = resources.getBoolean(R.bool.width_constrained)
if (sliderValue < firebase.averageSubscription()) {
binding.avgAnnual.setText(R.string.below_average)
binding.avgAnnual.setTextColor(ContextCompat.getColor(requireContext(), R.color.red_a400))
} else {
binding.avgAnnual.setText(R.string.above_average)
binding.avgAnnual.setTextColor(ContextCompat.getColor(requireContext(), R.color.green_a400))
}
binding.payAnnually.let { binding.payAnnually.let {
it.isEnabled = true it.isEnabled = true
it.text = getString( it.text = getString(
@ -259,6 +265,8 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
} }
it.isVisible = !nameYourPrice || sliderValue < 3 it.isVisible = !nameYourPrice || sliderValue < 3
} }
binding.avgAnnual.isVisible = nameYourPrice && binding.payAnnually.isVisible
binding.avgMonthly.isVisible = nameYourPrice && binding.payMonthly.isVisible
currentSubscription?.let { currentSubscription?.let {
binding.payMonthly.isEnabled = binding.payMonthly.isEnabled =
it.isCanceled || !it.isMonthly || monthlyPrice != it.subscriptionPrice it.isCanceled || !it.isMonthly || monthlyPrice != it.subscriptionPrice

@ -45,24 +45,58 @@
android:indeterminate="true" android:indeterminate="true"
android:visibility="gone" /> android:visibility="gone" />
<com.google.android.material.slider.Slider <RelativeLayout
android:id="@+id/slider" android:id="@+id/slider_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:valueFrom="1"
android:valueTo="25"
android:value="10"
android:stepSize="1"
app:trackColorActive="?attr/colorSecondary"
app:thumbColor="?attr/colorSecondary"
app:tickColorActive="?attr/colorOnSecondary"
app:tickColorInactive="?attr/colorSecondary"
app:tickColor="@android:color/transparent"
app:trackColorInactive="@color/text_tertiary"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible"
android:layout_marginStart="@dimen/keyline_first" android:layout_marginStart="@dimen/keyline_first"
android:layout_marginEnd="@dimen/keyline_first" android:layout_marginEnd="@dimen/keyline_first">
tools:visibility="visible"/> <TextView
android:layout_alignParentTop="true"
android:id="@+id/name_your_price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/name_your_price"
style="@style/TextAppearance"
android:textAlignment="center" />
<TextView
android:id="@+id/price_low"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@id/slider"
style="@style/TextAppearance.MaterialComponents.Caption"
android:text="$0.99"/>
<TextView
android:id="@+id/price_high"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_below="@id/slider"
style="@style/TextAppearance.MaterialComponents.Caption"
android:text="$24.99"/>
<com.google.android.material.slider.Slider
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:valueFrom="1"
android:valueTo="25"
android:value="10"
android:stepSize="1"
android:layout_below="@id/name_your_price"
app:trackColorActive="?attr/colorSecondary"
app:thumbColor="?attr/colorSecondary"
app:tickColorActive="?attr/colorOnSecondary"
app:tickColorInactive="?attr/colorSecondary"
app:tickColor="@android:color/transparent"
app:trackColorInactive="@color/text_tertiary"/>
</RelativeLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tasks_org_button_panel" android:id="@+id/tasks_org_button_panel"
@ -91,6 +125,34 @@
app:layout_constraintStart_toEndOf="@id/pay_annually" app:layout_constraintStart_toEndOf="@id/pay_annually"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/avg_annual"
style="@style/TextAppearance.MaterialComponents.Caption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/pay_annually"
app:layout_constraintEnd_toEndOf="@id/pay_annually"
app:layout_constraintStart_toStartOf="@id/pay_annually"
android:textAlignment="center"
android:visibility="gone"
tools:text="@string/below_average"
tools:textColor="@color/red_a400"
tools:visibility="visible"/>
<TextView
android:id="@+id/avg_monthly"
style="@style/TextAppearance.MaterialComponents.Caption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/pay_monthly"
app:layout_constraintEnd_toEndOf="@id/pay_monthly"
app:layout_constraintStart_toStartOf="@id/pay_monthly"
android:text="@string/above_average"
android:visibility="gone"
tools:visibility="visible"
android:textColor="@color/green_a400"
android:textAlignment="center"/>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/pay_other" android:id="@+id/pay_other"
style="@style/TextButton" style="@style/TextButton"
@ -100,7 +162,7 @@
android:textColor="@color/text_secondary" android:textColor="@color/text_secondary"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pay_annually" app:layout_constraintTop_toBottomOf="@+id/avg_annual"
tools:text="@string/back"/> tools:text="@string/back"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -492,6 +492,7 @@
<string name="version_string">Verze %s</string> <string name="version_string">Verze %s</string>
<string name="invalid_backup_file">Neplatný soubor zálohy</string> <string name="invalid_backup_file">Neplatný soubor zálohy</string>
<string name="google_tasks_add_to_top">Nové úkoly na vrchu</string> <string name="google_tasks_add_to_top">Nové úkoly na vrchu</string>
<string name="name_your_price">Zaplať kolik chceš</string>
<string name="monthly">Měsíčně</string> <string name="monthly">Měsíčně</string>
<string name="annually">Ročně</string> <string name="annually">Ročně</string>
<string name="caldav_account_repeating_tasks">Dovolit serveru plánovat opakující se úkoly</string> <string name="caldav_account_repeating_tasks">Dovolit serveru plánovat opakující se úkoly</string>

@ -201,6 +201,7 @@
<string name="caldav_account_repeating_tasks">Lad serveren planlægge gentagne opgaver</string> <string name="caldav_account_repeating_tasks">Lad serveren planlægge gentagne opgaver</string>
<string name="annually">Årligt</string> <string name="annually">Årligt</string>
<string name="monthly">Månedligt</string> <string name="monthly">Månedligt</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>
<string name="version_string">Version %s</string> <string name="version_string">Version %s</string>

@ -476,6 +476,7 @@
<string name="button_downgrade">Abonnement herabstufen</string> <string name="button_downgrade">Abonnement herabstufen</string>
<string name="button_upgrade">Abonnement hochstufen</string> <string name="button_upgrade">Abonnement hochstufen</string>
<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="monthly">monatlich</string> <string name="monthly">monatlich</string>
<string name="annually">jährlich</string> <string name="annually">jährlich</string>
<string name="SSD_sort_my_order">Manuelle Sortierung</string> <string name="SSD_sort_my_order">Manuelle Sortierung</string>

@ -476,6 +476,7 @@
<string name="button_downgrade">Suscripción de degradación</string> <string name="button_downgrade">Suscripción de degradación</string>
<string name="button_upgrade">Suscripción de actualización</string> <string name="button_upgrade">Suscripción de actualización</string>
<string name="button_unsubscribe">Cancelar la suscripción</string> <string name="button_unsubscribe">Cancelar la suscripción</string>
<string name="name_your_price">Escoger tu precio</string>
<string name="monthly">Mensualmente</string> <string name="monthly">Mensualmente</string>
<string name="annually">Anualmente</string> <string name="annually">Anualmente</string>
<string name="SSD_sort_my_order">Mi orden</string> <string name="SSD_sort_my_order">Mi orden</string>

@ -475,6 +475,7 @@
<string name="button_downgrade">Txikiagotu harpidetza</string> <string name="button_downgrade">Txikiagotu harpidetza</string>
<string name="button_upgrade">Handiagotu harpidetza</string> <string name="button_upgrade">Handiagotu harpidetza</string>
<string name="button_unsubscribe">Ezeztatu harpidetza</string> <string name="button_unsubscribe">Ezeztatu harpidetza</string>
<string name="name_your_price">Jarri zuk prezioa</string>
<string name="monthly">Hilero</string> <string name="monthly">Hilero</string>
<string name="annually">Urtero</string> <string name="annually">Urtero</string>
<string name="error_adding_account">Errorea: %s</string> <string name="error_adding_account">Errorea: %s</string>

@ -442,6 +442,7 @@
<string name="caldav_account_repeating_tasks">Anna palvelimen ajoittaa toistuvia tehtäviä</string> <string name="caldav_account_repeating_tasks">Anna palvelimen ajoittaa toistuvia tehtäviä</string>
<string name="annually">Vuosittain</string> <string name="annually">Vuosittain</string>
<string name="monthly">Kuukausittain</string> <string name="monthly">Kuukausittain</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>
<string name="version_string">Versio %s</string> <string name="version_string">Versio %s</string>

@ -470,6 +470,7 @@
<string name="button_downgrade">Diminuer l\'abonnement</string> <string name="button_downgrade">Diminuer l\'abonnement</string>
<string name="button_upgrade">Augmenter l\'abonnement</string> <string name="button_upgrade">Augmenter l\'abonnement</string>
<string name="button_unsubscribe">Annuler l\'abonnement</string> <string name="button_unsubscribe">Annuler l\'abonnement</string>
<string name="name_your_price">Donnez votre prix</string>
<string name="monthly">Chaque mois</string> <string name="monthly">Chaque mois</string>
<string name="annually">Chaque année</string> <string name="annually">Chaque année</string>
<string name="error_adding_account">Erreur : %s</string> <string name="error_adding_account">Erreur : %s</string>

@ -473,6 +473,7 @@
<string name="button_downgrade">Előfizetés downgrade-je</string> <string name="button_downgrade">Előfizetés downgrade-je</string>
<string name="button_upgrade">Előfizetés upgrade-je</string> <string name="button_upgrade">Előfizetés upgrade-je</string>
<string name="button_unsubscribe">Előfizetés lemondása</string> <string name="button_unsubscribe">Előfizetés lemondása</string>
<string name="name_your_price">Nevezd meg az árat</string>
<string name="monthly">Havi</string> <string name="monthly">Havi</string>
<string name="annually">Éves</string> <string name="annually">Éves</string>
<string name="SSD_sort_my_order">Egyéni sorrend</string> <string name="SSD_sort_my_order">Egyéni sorrend</string>

@ -519,6 +519,7 @@
<string name="enter_tag_name">Inserisci il nome dell\'etichetta</string> <string name="enter_tag_name">Inserisci il nome dell\'etichetta</string>
<string name="enter_title_hint">Inserisci titolo</string> <string name="enter_title_hint">Inserisci titolo</string>
<string name="collapse_subtasks">Comprimi attività secondarie</string> <string name="collapse_subtasks">Comprimi attività secondarie</string>
<string name="name_your_price">Fai tu il prezzo</string>
<string name="third_party_licenses">Licenze di terze parti</string> <string name="third_party_licenses">Licenze di terze parti</string>
<string name="this_feature_requires_a_subscription">Questa funzione richiede un abbonamento</string> <string name="this_feature_requires_a_subscription">Questa funzione richiede un abbonamento</string>
<string name="button_unsubscribe">Annulla abbonamento</string> <string name="button_unsubscribe">Annulla abbonamento</string>

@ -505,6 +505,7 @@
<string name="button_downgrade">שנמוך מינוי</string> <string name="button_downgrade">שנמוך מינוי</string>
<string name="button_upgrade">שדרוג מינוי</string> <string name="button_upgrade">שדרוג מינוי</string>
<string name="button_unsubscribe">ביטול מינוי</string> <string name="button_unsubscribe">ביטול מינוי</string>
<string name="name_your_price">מה המחיר שלך</string>
<string name="monthly">חודשי</string> <string name="monthly">חודשי</string>
<string name="annually">שנתי</string> <string name="annually">שנתי</string>
<string name="places">מיקומים</string> <string name="places">מיקומים</string>

@ -470,6 +470,7 @@
<string name="button_downgrade">サブスクリプションのダウングレード</string> <string name="button_downgrade">サブスクリプションのダウングレード</string>
<string name="button_upgrade">サブスクリプションのアップグレード</string> <string name="button_upgrade">サブスクリプションのアップグレード</string>
<string name="button_unsubscribe">サブスクリプションのキャンセル</string> <string name="button_unsubscribe">サブスクリプションのキャンセル</string>
<string name="name_your_price">価格の名前</string>
<string name="monthly">毎月</string> <string name="monthly">毎月</string>
<string name="annually">毎年</string> <string name="annually">毎年</string>
</resources> </resources>

@ -472,6 +472,7 @@
<string name="button_downgrade">구독 다운그레이드</string> <string name="button_downgrade">구독 다운그레이드</string>
<string name="button_upgrade">구독 업그레이드</string> <string name="button_upgrade">구독 업그레이드</string>
<string name="button_unsubscribe">구독 취소</string> <string name="button_unsubscribe">구독 취소</string>
<string name="name_your_price">구독 금액 정하기</string>
<string name="monthly">매월</string> <string name="monthly">매월</string>
<string name="annually">매년</string> <string name="annually">매년</string>
<string name="SSD_sort_my_order">순서 직접 정렬</string> <string name="SSD_sort_my_order">순서 직접 정렬</string>

@ -475,6 +475,7 @@
<string name="button_downgrade">Nedgrader abonnement</string> <string name="button_downgrade">Nedgrader abonnement</string>
<string name="button_upgrade">Oppgrader abonnement</string> <string name="button_upgrade">Oppgrader abonnement</string>
<string name="button_unsubscribe">Avbryt abonnement</string> <string name="button_unsubscribe">Avbryt abonnement</string>
<string name="name_your_price">Betal det du vil</string>
<string name="monthly">Månedlig</string> <string name="monthly">Månedlig</string>
<string name="annually">Årlig</string> <string name="annually">Årlig</string>
<string name="error_adding_account">Feil: %s</string> <string name="error_adding_account">Feil: %s</string>

@ -465,6 +465,7 @@
<string name="button_downgrade">Terugdraaien abonnement</string> <string name="button_downgrade">Terugdraaien abonnement</string>
<string name="button_upgrade">Abonnement upgraden</string> <string name="button_upgrade">Abonnement upgraden</string>
<string name="button_unsubscribe">Abonnement annuleren</string> <string name="button_unsubscribe">Abonnement annuleren</string>
<string name="name_your_price">Bepaal je prijs</string>
<string name="monthly">Maandelijks</string> <string name="monthly">Maandelijks</string>
<string name="annually">Jaarlijks</string> <string name="annually">Jaarlijks</string>
<string name="restart_later">Later</string> <string name="restart_later">Later</string>

@ -486,6 +486,7 @@
<string name="button_downgrade">Obniżyć poziom subskrypcji</string> <string name="button_downgrade">Obniżyć poziom subskrypcji</string>
<string name="button_upgrade">Podwyższyć poziom subskrypcji</string> <string name="button_upgrade">Podwyższyć poziom subskrypcji</string>
<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="monthly">Miesięczne</string> <string name="monthly">Miesięczne</string>
<string name="annually">Rocznie</string> <string name="annually">Rocznie</string>
<string name="SSD_sort_my_order">Ręczne</string> <string name="SSD_sort_my_order">Ręczne</string>

@ -523,6 +523,7 @@
<string name="caldav_account_repeating_tasks">Permita que o servidor agende tarefas recorrentes</string> <string name="caldav_account_repeating_tasks">Permita que o servidor agende tarefas recorrentes</string>
<string name="annually">Anualmente</string> <string name="annually">Anualmente</string>
<string name="monthly">Mensalmente</string> <string name="monthly">Mensalmente</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 restauro inválido</string> <string name="invalid_backup_file">Arquivo de restauro inválido</string>
<string name="version_string">Versão %s</string> <string name="version_string">Versão %s</string>

@ -599,6 +599,7 @@
<string name="EPr_temp_show_completed_tasks">Temporareamente mostrar tarefas quando completas</string> <string name="EPr_temp_show_completed_tasks">Temporareamente mostrar tarefas quando completas</string>
<string name="caldav_account_repeating_tasks">Permita que o servidor agende tarefas recorrentes</string> <string name="caldav_account_repeating_tasks">Permita que o servidor agende 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="button_upgrade">Atualizar assinatura</string> <string name="button_upgrade">Atualizar assinatura</string>
<string name="button_downgrade">Rebaixar assinatura</string> <string name="button_downgrade">Rebaixar assinatura</string>
<string name="network_error">Não foi possível conectar</string> <string name="network_error">Não foi possível conectar</string>

@ -482,6 +482,7 @@
<string name="button_current_subscription">Текущая подписка</string> <string name="button_current_subscription">Текущая подписка</string>
<string name="button_restore_subscription">Восстановить подписку</string> <string name="button_restore_subscription">Восстановить подписку</string>
<string name="button_unsubscribe">Отменить подписку</string> <string name="button_unsubscribe">Отменить подписку</string>
<string name="name_your_price">Назовите свою цену</string>
<string name="url">URL</string> <string name="url">URL</string>
<string name="error_adding_account">Ошибка: %s</string> <string name="error_adding_account">Ошибка: %s</string>
<string name="list_separator_with_space">", "</string> <string name="list_separator_with_space">", "</string>

@ -470,6 +470,7 @@
<string name="button_downgrade">Nedgradera prenumeration</string> <string name="button_downgrade">Nedgradera prenumeration</string>
<string name="button_upgrade">Uppgradera prenumerationen</string> <string name="button_upgrade">Uppgradera prenumerationen</string>
<string name="button_unsubscribe">Avbryt prenumeration</string> <string name="button_unsubscribe">Avbryt prenumeration</string>
<string name="name_your_price">Namnge ditt pris</string>
<string name="monthly">Månadsvis</string> <string name="monthly">Månadsvis</string>
<string name="annually">Årligen</string> <string name="annually">Årligen</string>
<string name="SSD_sort_my_order">Min ordning</string> <string name="SSD_sort_my_order">Min ordning</string>

@ -274,6 +274,7 @@
<string name="caldav_account_repeating_tasks">தொடர்ச்சியான பணிகளை சேவையாக அட்டவணைப்படுத்தட்டும்</string> <string name="caldav_account_repeating_tasks">தொடர்ச்சியான பணிகளை சேவையாக அட்டவணைப்படுத்தட்டும்</string>
<string name="annually">ஆண்டு</string> <string name="annually">ஆண்டு</string>
<string name="monthly">மாதாந்திர</string> <string name="monthly">மாதாந்திர</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>
<string name="version_string">பதிப்பு %s</string> <string name="version_string">பதிப்பு %s</string>

@ -476,6 +476,7 @@
<string name="button_downgrade">Aboneliği alçalt</string> <string name="button_downgrade">Aboneliği alçalt</string>
<string name="button_upgrade">Aboneliği yükselt</string> <string name="button_upgrade">Aboneliği yükselt</string>
<string name="button_unsubscribe">Aboneliği iptal et</string> <string name="button_unsubscribe">Aboneliği iptal et</string>
<string name="name_your_price">Fiyat belirleyin</string>
<string name="monthly">Aylık</string> <string name="monthly">Aylık</string>
<string name="annually">Yıllık</string> <string name="annually">Yıllık</string>
<string name="SSD_sort_my_order">Düzenim</string> <string name="SSD_sort_my_order">Düzenim</string>

@ -531,6 +531,7 @@
<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="caldav_account_repeating_tasks">Дозволити серверу встановлювати регулярні завдання</string>
<string name="name_your_price">Назвіть свою ціну</string>
<string name="annually">Щорічно</string> <string name="annually">Щорічно</string>
<string name="monthly">Щомісячно</string> <string name="monthly">Щомісячно</string>
<string name="this_feature_requires_a_subscription">Ця функція потребує підписки</string> <string name="this_feature_requires_a_subscription">Ця функція потребує підписки</string>

@ -465,6 +465,7 @@
<string name="button_downgrade">降级订阅</string> <string name="button_downgrade">降级订阅</string>
<string name="button_upgrade">升级订阅</string> <string name="button_upgrade">升级订阅</string>
<string name="button_unsubscribe">取消订阅</string> <string name="button_unsubscribe">取消订阅</string>
<string name="name_your_price">您愿意支付多少费用</string>
<string name="monthly">每月</string> <string name="monthly">每月</string>
<string name="annually">每年</string> <string name="annually">每年</string>
<string name="list_separator_with_space">" "</string> <string name="list_separator_with_space">" "</string>

@ -539,6 +539,7 @@ File %1$s contained %2$s.\n\n
<string name="version_string">Version %s</string> <string name="version_string">Version %s</string>
<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="more_options">More options</string> <string name="more_options">More options</string>
<string name="monthly">Monthly</string> <string name="monthly">Monthly</string>
<string name="annually">Yearly</string> <string name="annually">Yearly</string>
@ -683,4 +684,6 @@ File %1$s contained %2$s.\n\n
<string name="migrating_tasks">Migrating tasks</string> <string name="migrating_tasks">Migrating tasks</string>
<string name="offline_lists">Offline lists</string> <string name="offline_lists">Offline lists</string>
<string name="migrate_count">Move %s to Tasks.org</string> <string name="migrate_count">Move %s to Tasks.org</string>
<string name="above_average">Above average</string>
<string name="below_average">Below average</string>
</resources> </resources>

@ -95,7 +95,7 @@
<!--================================================== General == --> <!--================================================== General == -->
<style name="TextAppearance" parent="android:TextAppearance"> <style name="TextAppearance" parent="TextAppearance.MaterialComponents.Body1">
<item name="android:textColor">@color/text_primary</item> <item name="android:textColor">@color/text_primary</item>
</style> </style>

Loading…
Cancel
Save