Update purchase dialog

Display percentage off and above average
pull/1260/head
Alex Baker 4 years ago
parent 7eed9b10ee
commit bef5989c92

@ -62,9 +62,10 @@ class Inventory @Inject constructor(
private set
suspend fun updateTasksSubscription() {
hasTasksSubscription = caldavDao.getAccounts(TYPE_TASKS).any {
it.isTasksSubscription(context)
}
hasTasksSubscription =
subscription?.isTasksSubscription == true || caldavDao.getAccounts(TYPE_TASKS).any {
it.isTasksSubscription(context)
}
}
fun purchased(sku: String) = purchases.containsKey(sku)

@ -9,6 +9,7 @@ import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.text.method.LinkMovementMethod
import android.text.style.TextAppearanceSpan
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
@ -18,8 +19,11 @@ import butterknife.ButterKnife
import butterknife.OnClick
import com.google.android.material.slider.Slider
import dagger.hilt.android.AndroidEntryPoint
import io.noties.markwon.AbstractMarkwonPlugin
import io.noties.markwon.Markwon
import io.noties.markwon.MarkwonSpansFactory
import io.noties.markwon.ext.strikethrough.StrikethroughPlugin
import org.commonmark.ext.gfm.strikethrough.Strikethrough
import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager
import org.tasks.R
@ -30,6 +34,7 @@ import org.tasks.locale.Locale
import timber.log.Timber
import javax.inject.Inject
@AndroidEntryPoint
class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
@ -73,6 +78,13 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
markwon = Markwon.builder(requireContext())
.usePlugin(StrikethroughPlugin.create())
.usePlugin(object : AbstractMarkwonPlugin() {
override fun configureSpansFactory(builder: MarkwonSpansFactory.Builder) {
builder.appendFactory(Strikethrough::class.java) { _, _ ->
TextAppearanceSpan(requireContext(), R.style.RedText)
}
}
})
.build()
setWaitScreen(BuildConfig.FLAVOR != "generic")
@ -106,7 +118,12 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
.show()
private fun updateText() {
var benefits = "### ${getString(R.string.upgrade_header)}"
var benefits = "### ${getString(when {
nameYourPrice -> R.string.name_your_price
!inventory.hasPro -> R.string.upgrade_to_pro
!inventory.hasTasksSubscription -> R.string.button_upgrade
else -> R.string.modify_subscription
})}"
benefits += if (nameYourPrice) {
"""
---
@ -115,10 +132,10 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
} else {
"""
---
#### [${getString(R.string.upgrade_sync_with_tasks)} (BETA)](${getString(R.string.help_url_sync)})
* **${getString(R.string.upgrade_no_platform_lock_in)}** ${getString(R.string.upgrade_open_internet_standards)}
* **${getString(R.string.upgrade_customer)}** ${getString(R.string.upgrade_privacy)}
* ${getString(R.string.upgrade_coming_soon)}
#### ${getString(R.string.upgrade_sync_with_tasks)}
* ${getString(R.string.upgrade_open_internet_standards)}
* ${getString(R.string.upgrade_privacy)}
* [${getString(R.string.upgrade_coming_soon)}](${getString(R.string.help_url_sync)})
"""
}
benefits += if (BuildConfig.FLAVOR == "generic") {
@ -129,20 +146,17 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
} else {
"""
---
#### ${getString(R.string.upgrade_synchronization)}
#### ${getString(R.string.upgrade_additional_features)}
* ${getString(R.string.upgrade_themes)}
* [${getString(R.string.davx5)}](${getString(R.string.url_davx5)})
* [${getString(R.string.caldav)}](${getString(R.string.url_caldav)})
* [${getString(R.string.upgrade_etesync)}](${getString(R.string.url_etesync)})
* ${getString(R.string.upgrade_google_tasks)}
---
#### ${getString(R.string.upgrade_additional_features)}
* ${getString(R.string.upgrade_themes)}
* ${getString(R.string.upgrade_google_places)}
* [${getString(R.string.upgrade_tasker)}](${getString(R.string.url_tasker)})
---
* ${getString(R.string.upgrade_free_trial)}
* **${getString(R.string.upgrade_downgrade)}** ${getString(R.string.upgrade_balance)}
* **${getString(R.string.upgrade_cancel)}** ${getString(R.string.upgrade_benefits_retained)}
* ${getString(R.string.upgrade_downgrade)}
"""
}
binding.text.text = markwon.toMarkdown(benefits)
@ -237,13 +251,26 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
val annualPrice = if (nameYourPrice) sliderValue else 30
val monthlyPrice = if (nameYourPrice) sliderValue else 3
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))
val aboveAverage = "${getString(R.string.above_average)} $POPPER"
binding.avgAnnual.text = when {
!nameYourPrice -> "${getString(
R.string.save_percent,
((1 - (annualPrice / (12.0 * monthlyPrice))) * 100).toInt()
)} $POPPER"
sliderValue < firebase.averageSubscription() -> "" //getString(R.string.below_average)
else -> aboveAverage
}
binding.avgAnnual.setTextColor(
if (nameYourPrice && sliderValue < firebase.averageSubscription()) {
ContextCompat.getColor(requireContext(), R.color.text_secondary)
} else {
ContextCompat.getColor(requireContext(), R.color.purchase_highlight)
}
)
binding.avgMonthly.setTextColor(
ContextCompat.getColor(requireContext(), R.color.purchase_highlight)
)
binding.avgMonthly.text = aboveAverage
binding.payAnnually.let {
it.isEnabled = true
it.text = getString(
@ -265,7 +292,6 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
}
it.isVisible = !nameYourPrice || sliderValue < 3
}
binding.avgAnnual.isVisible = nameYourPrice && binding.payAnnually.isVisible
binding.avgMonthly.isVisible = nameYourPrice && binding.payMonthly.isVisible
currentSubscription?.let {
binding.payMonthly.isEnabled =
@ -304,6 +330,7 @@ class PurchaseDialog : DialogFragment(), OnPurchasesUpdated {
get() = arguments?.getBoolean(EXTRA_GITHUB, false) ?: false
companion object {
private const val POPPER = "\uD83C\uDF89"
private const val EXTRA_PRICE = "extra_price"
private const val EXTRA_PRICE_CHANGED = "extra_price_changed"
private const val EXTRA_NAME_YOUR_PRICE = "extra_name_your_price"

@ -53,15 +53,6 @@
tools:visibility="visible"
android:layout_marginStart="@dimen/keyline_first"
android:layout_marginEnd="@dimen/keyline_first">
<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"
@ -88,7 +79,7 @@
android:valueTo="25"
android:value="10"
android:stepSize="1"
android:layout_below="@id/name_your_price"
android:layout_alignParentTop="true"
app:trackColorActive="?attr/colorSecondary"
app:thumbColor="?attr/colorSecondary"
app:tickColorActive="?attr/colorOnSecondary"
@ -134,10 +125,8 @@
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"/>
android:textAllCaps="true"
tools:text="@string/above_average"/>
<TextView
android:id="@+id/avg_monthly"
@ -147,11 +136,12 @@
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:textAllCaps="true"
android:visibility="gone"
tools:visibility="visible"
android:textColor="@color/green_a400"
android:textAlignment="center"/>
android:textColor="?attr/colorAccent"
android:textAlignment="center"
tools:text="@string/above_average"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/pay_other"

@ -450,9 +450,6 @@
<string name="about">O aplikaci</string>
<string name="license_summary">Aplikace Tasks je svobodný software s otevřeným zdrojovým kódem licencovaný pod GNU General Public License v3.0</string>
<string name="icon">Ikona</string>
<string name="button_current_subscription">Aktuální předplatné</string>
<string name="button_restore_subscription">Obnovit předplatné</string>
<string name="button_downgrade">Snížit předplatné</string>
<string name="button_upgrade">Zvýšit předplatné</string>
<string name="button_unsubscribe">Zrušit předplatné</string>
<string name="encryption_password_required">Zadejte heslo pro šifrování</string>

@ -238,8 +238,6 @@
<string name="about">Om</string>
<string name="button_more_info">Mere info</string>
<string name="button_unsubscribe">Opsig abonnement</string>
<string name="button_restore_subscription">Gendan abonnement</string>
<string name="button_current_subscription">Nuværende abonnement</string>
<string name="button_subscribe">Abonnér</string>
<string name="network_error">Kunne ikke oprette forbindelse</string>
<string name="caldav_home_set_not_found">Kunne ikke finde Home Set</string>
@ -406,7 +404,6 @@
<string name="wearable_notifications_summary">Vis notifikationer på din wearable-enhed</string>
<string name="license_summary">Tasks er gratis, open-source software udgivet under GNU General Public License v3.0</string>
<string name="button_upgrade">Opgrader abonnement</string>
<string name="button_downgrade">Nedgrader abonnement</string>
<string name="upgrade_to_pro">Opgrader til pro</string>
<string name="refresh_purchases">Opdater køb</string>
<string name="manage_subscription">Administrer abonnement</string>

@ -471,9 +471,6 @@
<string name="version_string">Version %s</string>
<string name="error_adding_account">Fehler: %s</string>
<string name="icon">Symbol</string>
<string name="button_current_subscription">Aktuelles Abonnement</string>
<string name="button_restore_subscription">Abonnement wiederherstellen</string>
<string name="button_downgrade">Abonnement herabstufen</string>
<string name="button_upgrade">Abonnement hochstufen</string>
<string name="button_unsubscribe">Abonnement kündigen</string>
<string name="name_your_price">Nennen Sie Ihren Preis</string>

@ -471,9 +471,6 @@
<string name="error_adding_account">Error : %s</string>
<string name="list_separator_with_space">", "</string>
<string name="icon">Icono</string>
<string name="button_current_subscription">Suscripción actual</string>
<string name="button_restore_subscription">Restaurar la suscripció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_unsubscribe">Cancelar la suscripción</string>
<string name="name_your_price">Escoger tu precio</string>
@ -684,6 +681,5 @@
<string name="not_signed_in">No registrado</string>
<string name="no_google_play_subscription">No se encontró ninguna suscripción de Google Play elegible</string>
<string name="insufficient_sponsorship">No se encontró ningún patrocinio de GitHub elegible</string>
<string name="below_average">Por debajo del promedio</string>
<string name="above_average">Por encima del promedio</string>
</resources>

@ -470,9 +470,6 @@
<string name="invalid_backup_file">Baliogabeko babes-kopia fitxategia</string>
<string name="google_tasks_add_to_top">Zeregin berriak goialdean</string>
<string name="icon">Ikonoa</string>
<string name="button_current_subscription">Uneko harpidetza</string>
<string name="button_restore_subscription">Berrezarri harpidetza</string>
<string name="button_downgrade">Txikiagotu harpidetza</string>
<string name="button_upgrade">Handiagotu harpidetza</string>
<string name="button_unsubscribe">Ezeztatu harpidetza</string>
<string name="name_your_price">Jarri zuk prezioa</string>

@ -472,8 +472,6 @@
<string name="about">Tietoja sovelluksesta</string>
<string name="button_more_info">Lisätietoja</string>
<string name="button_unsubscribe">Peruuta tilaus</string>
<string name="button_restore_subscription">Palauta tilaus</string>
<string name="button_current_subscription">Nykytilaus</string>
<string name="button_subscribe">Tilaa</string>
<string name="manage_subscription">Hallinnoi tilausta</string>
<string name="network_error">Yhteyttä ei saatu</string>
@ -587,7 +585,6 @@
<string name="location_departed">Lähdit paikasta %s</string>
<string name="location_arrived">Saavuit paikkaan %s</string>
<string name="logout_warning">Kirjaudu ulos %s\? Kaikki tälle tilille tallennetut tiedot poistetaan laitteeltasi</string>
<string name="button_downgrade">Alenna tilaustasi</string>
<string name="refresh_purchases">Päivitä ostoksesi</string>
<string name="background_sync_unmetered_only">Vain rajoittamattomalla yhteydellä</string>
<string name="widget_due_date_hidden">Piilotettu</string>

@ -465,9 +465,6 @@
<string name="list_separator_with_space">", "</string>
<string name="version_string">Version %s</string>
<string name="icon">Icône</string>
<string name="button_current_subscription">Abonnement actuel</string>
<string name="button_restore_subscription">Restaurer l\'abonnement</string>
<string name="button_downgrade">Diminuer l\'abonnement</string>
<string name="button_upgrade">Augmenter l\'abonnement</string>
<string name="button_unsubscribe">Annuler l\'abonnement</string>
<string name="name_your_price">Donnez votre prix</string>
@ -679,6 +676,5 @@
<string name="not_signed_in">Non connecté</string>
<string name="no_google_play_subscription">Aucun abonnement Google Play éligible trouvé</string>
<string name="insufficient_sponsorship">Aucun parrainage GitHub éligible trouvé</string>
<string name="below_average">En dessous de la moyenne</string>
<string name="above_average">Au-dessus de la moyenne</string>
</resources>

@ -468,9 +468,6 @@
<string name="location_radius_meters">%s m</string>
<string name="list_separator_with_space">", "</string>
<string name="icon">Ikon</string>
<string name="button_current_subscription">Jelenlegi előfizetés</string>
<string name="button_restore_subscription">Előfizetés visszaállítása</string>
<string name="button_downgrade">Előfizetés downgrade-je</string>
<string name="button_upgrade">Előfizetés upgrade-je</string>
<string name="button_unsubscribe">Előfizetés lemondása</string>
<string name="name_your_price">Nevezd meg az árat</string>

@ -360,9 +360,6 @@
<string name="manage_subscription">Kelola langganan</string>
<string name="refresh_purchases">Segarkan pembelian</string>
<string name="button_subscribe">Langganan</string>
<string name="button_current_subscription">Langganan saat ini</string>
<string name="button_restore_subscription">Pulihkan langganan</string>
<string name="button_downgrade">Turunkan langganan</string>
<string name="button_upgrade">Tingkatkan langganan</string>
<string name="button_unsubscribe">Batalkan langganan</string>
<string name="button_more_info">Info lainnya</string>

@ -468,7 +468,6 @@
<string name="desaturate_colors">Riduci saturazione colori</string>
<string name="etesync_encryption_description">Ricorda la password di cifratura che hai scelto, non può essere recuperata!</string>
<string name="button_upgrade">Passa alla versione premium</string>
<string name="button_downgrade">Torna alla versione base dell\'abbonamento</string>
<string name="reenter_encryption_password">Conferma password di cifratura</string>
<string name="encryption_password">Password di cifratura</string>
<string name="encryption_password_wrong">Password di cifratura sbagliata</string>
@ -523,8 +522,6 @@
<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="button_unsubscribe">Annulla abbonamento</string>
<string name="button_restore_subscription">Ripristina abbonamento</string>
<string name="button_current_subscription">Abbonamento attuale</string>
<string name="help_and_feedback">Aiuto e feedback</string>
<string name="url">URL</string>
<string name="password">Password</string>

@ -500,9 +500,6 @@
<string name="google_tasks_add_to_top">משימות חדשות בראש הרשימה</string>
<string name="list_separator_with_space">", "</string>
<string name="icon">סמל</string>
<string name="button_current_subscription">מינוי נוכחי</string>
<string name="button_restore_subscription">שחזור מינוי</string>
<string name="button_downgrade">שנמוך מינוי</string>
<string name="button_upgrade">שדרוג מינוי</string>
<string name="button_unsubscribe">ביטול מינוי</string>
<string name="name_your_price">מה המחיר שלך</string>

@ -465,9 +465,6 @@
<string name="url">URL</string>
<string name="list_separator_with_space">", "</string>
<string name="icon">アイコン</string>
<string name="button_current_subscription">現在のサブスクリプション</string>
<string name="button_restore_subscription">サブスクリプションの復元</string>
<string name="button_downgrade">サブスクリプションのダウングレード</string>
<string name="button_upgrade">サブスクリプションのアップグレード</string>
<string name="button_unsubscribe">サブスクリプションのキャンセル</string>
<string name="name_your_price">価格の名前</string>

@ -467,9 +467,6 @@
<string name="invalid_backup_file">부적합한 백업 파일</string>
<string name="google_tasks_add_to_top">새 할일을 가장 위로</string>
<string name="icon">아이콘</string>
<string name="button_current_subscription">현재 구독</string>
<string name="button_restore_subscription">구독 복원</string>
<string name="button_downgrade">구독 다운그레이드</string>
<string name="button_upgrade">구독 업그레이드</string>
<string name="button_unsubscribe">구독 취소</string>
<string name="name_your_price">구독 금액 정하기</string>

@ -470,9 +470,6 @@
<string name="invalid_backup_file">Ugyldig sikkerhetskopifil</string>
<string name="google_tasks_add_to_top">Nye gjøremål øverst</string>
<string name="icon">Ikon</string>
<string name="button_current_subscription">Nåværende abonnement</string>
<string name="button_restore_subscription">Gjenopprett abonnement</string>
<string name="button_downgrade">Nedgrader abonnement</string>
<string name="button_upgrade">Oppgrader abonnement</string>
<string name="button_unsubscribe">Avbryt abonnement</string>
<string name="name_your_price">Betal det du vil</string>

@ -460,9 +460,6 @@
<string name="filters">Filters</string>
<string name="filter">Filter</string>
<string name="accent">Accent</string>
<string name="button_current_subscription">Huidige abonnement</string>
<string name="button_restore_subscription">Abonnement herstellen</string>
<string name="button_downgrade">Terugdraaien abonnement</string>
<string name="button_upgrade">Abonnement upgraden</string>
<string name="button_unsubscribe">Abonnement annuleren</string>
<string name="name_your_price">Bepaal je prijs</string>

@ -481,9 +481,6 @@
<string name="invalid_backup_file">Nieprawidłowy plik kopii zapasowej</string>
<string name="google_tasks_add_to_top">Nowe zadania na górze</string>
<string name="icon">Ikona</string>
<string name="button_current_subscription">Aktualna subskrypcja</string>
<string name="button_restore_subscription">Przywróć subskrypcję</string>
<string name="button_downgrade">Obniżyć poziom subskrypcji</string>
<string name="button_upgrade">Podwyższyć poziom subskrypcji</string>
<string name="button_unsubscribe">Anuluj subskrypcję</string>
<string name="name_your_price">Nazwij swoją cenę</string>

@ -533,9 +533,6 @@
<string name="this_feature_requires_a_subscription">Precisa estar atrelado a um plano</string>
<string name="button_unsubscribe">Cancelar plano</string>
<string name="button_upgrade">Atualizar plano</string>
<string name="button_downgrade">Rebaixar plano</string>
<string name="button_restore_subscription">Recuperar plano</string>
<string name="button_current_subscription">Plano atual</string>
<string name="help_and_feedback">Ajuda e Comentários</string>
<string name="list_separator_with_space">", "</string>
<string name="error_adding_account">Erro: %s</string>

@ -404,8 +404,6 @@
<string name="annually">Anual</string>
<string name="monthly">Mensal</string>
<string name="button_unsubscribe">Cancelar assinatura</string>
<string name="button_restore_subscription">Restaurar assinatura</string>
<string name="button_current_subscription">Assinatura atual</string>
<string name="icon">Ícone</string>
<string name="google_tasks_add_to_top">Novas tarefas no topo</string>
<string name="invalid_backup_file">O ficheiro de backup é inválido</string>
@ -601,7 +599,6 @@
<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_downgrade">Rebaixar assinatura</string>
<string name="network_error">Não foi possível conectar</string>
<string name="location_radius_meters">%s m</string>
<string name="davx5_selection_description">Sincronize a suas tarefas com a app DAVx⁵</string>

@ -479,15 +479,12 @@
<string name="choose_new_location">Выберите новое местоположение</string>
<string name="invalid_backup_file">Неверный файл резервной копии</string>
<string name="icon">Иконка</string>
<string name="button_current_subscription">Текущая подписка</string>
<string name="button_restore_subscription">Восстановить подписку</string>
<string name="button_unsubscribe">Отменить подписку</string>
<string name="name_your_price">Назовите свою цену</string>
<string name="url">URL</string>
<string name="error_adding_account">Ошибка: %s</string>
<string name="list_separator_with_space">", "</string>
<string name="building_notifications">Генерация уведомлений</string>
<string name="button_downgrade">Понизить уровень подписки</string>
<string name="button_upgrade">Повысить уровень подписки</string>
<string name="SSD_sort_my_order">Ручная сортировка</string>
<string name="EPr_temp_show_completed_tasks">Временно показывать задачи после завершения</string>
@ -702,6 +699,5 @@
<item quantity="other">%d списков</item>
</plurals>
<string name="repeat_monthly_fifth_week">Пятая</string>
<string name="below_average">Ниже среднего</string>
<string name="above_average">Выше среднего</string>
</resources>

@ -465,9 +465,6 @@
<string name="invalid_backup_file">Ogiltig säkerhetskopia</string>
<string name="google_tasks_add_to_top">Nya uppgifter överst</string>
<string name="icon">Ikon</string>
<string name="button_current_subscription">Hantera prenumerationer</string>
<string name="button_restore_subscription">Återställ prenumeration</string>
<string name="button_downgrade">Nedgradera prenumeration</string>
<string name="button_upgrade">Uppgradera prenumerationen</string>
<string name="button_unsubscribe">Avbryt prenumeration</string>
<string name="name_your_price">Namnge ditt pris</string>

@ -312,9 +312,6 @@
<string name="button_more_info">மேலும் தகவல்</string>
<string name="button_unsubscribe">சந்தாவை ரத்துசெய்</string>
<string name="button_upgrade">சந்தாவை மேம்படுத்தவும்</string>
<string name="button_downgrade">தரமிறக்குதல் சந்தா</string>
<string name="button_restore_subscription">சந்தாவை மீட்டமை</string>
<string name="button_current_subscription">தற்போதைய சந்தா</string>
<string name="button_subscribe">பதிவு</string>
<string name="refresh_purchases">வாங்குதல்களைப் புதுப்பிக்கவும்</string>
<string name="manage_subscription">சந்தாவை நிர்வகிக்கவும்</string>

@ -471,9 +471,6 @@
<string name="error_adding_account">Hata: %s</string>
<string name="list_separator_with_space">", "</string>
<string name="icon">Simge</string>
<string name="button_current_subscription">Geçerli abonelik</string>
<string name="button_restore_subscription">Aboneliği geri getir</string>
<string name="button_downgrade">Aboneliği alçalt</string>
<string name="button_upgrade">Aboneliği yükselt</string>
<string name="button_unsubscribe">Aboneliği iptal et</string>
<string name="name_your_price">Fiyat belirleyin</string>

@ -506,8 +506,6 @@
<item quantity="many">%d підзадач</item>
</plurals>
<string name="gtasks_GPr_header">Google Tasks</string>
<string name="button_restore_subscription">Відновити підписку</string>
<string name="button_current_subscription">Поточна підписка</string>
<string name="reenter_encryption_password">Підтвердіть пароль шифрування</string>
<string name="encryption_password">Пароль шифрування</string>
<string name="encryption_password_required">Потрібний пароль шифрування</string>
@ -536,7 +534,6 @@
<string name="monthly">Щомісячно</string>
<string name="this_feature_requires_a_subscription">Ця функція потребує підписки</string>
<string name="button_unsubscribe">Скасувати підписку</string>
<string name="button_downgrade">Спростити підписку</string>
<string name="share">Поділитися</string>
<string name="select_all">Обрати всі</string>
<string name="calendar_event_created">В календарі створено подію для %s</string>

@ -460,9 +460,6 @@
<string name="invalid_backup_file">无效的备份文件</string>
<string name="google_tasks_add_to_top">新任务显示在顶部</string>
<string name="icon">图标</string>
<string name="button_current_subscription">当前订阅</string>
<string name="button_restore_subscription">恢复订阅</string>
<string name="button_downgrade">降级订阅</string>
<string name="button_upgrade">升级订阅</string>
<string name="button_unsubscribe">取消订阅</string>
<string name="name_your_price">您愿意支付多少费用</string>
@ -674,6 +671,5 @@
<string name="not_signed_in">未登录</string>
<string name="no_google_play_subscription">未找到符合要求的 Google Play 订阅</string>
<string name="insufficient_sponsorship">没有找到符合要求的GitHub赞助</string>
<string name="below_average">低于平均</string>
<string name="above_average">高于平均</string>
</resources>

@ -150,6 +150,7 @@
<color name="divider">@color/black_12</color>
<color name="default_chip_background">@color/grey_300</color>
<color name="default_chip_text_color">@color/black_87</color>
<color name="purchase_highlight">@color/basil</color>
<color name="github_sponsor">#eb52ae</color>

@ -28,25 +28,19 @@
<string name="url_sponsor">https://github.com/sponsors/abaker</string>
<!-- Eventually these should be moved to strings.xml for translation -->
<string name="upgrade_header">Unlock additional features and support open source software!</string>
<string name="upgrade_sync_with_tasks">Sync with Tasks.org</string>
<string name="upgrade_no_platform_lock_in">No platform lock-in</string>
<string name="modify_subscription">Modify your subscription</string>
<string name="upgrade_sync_with_tasks">Sync your data with Tasks.org</string>
<string name="upgrade_open_internet_standards">Tasks.org is based on open internet standards</string>
<string name="upgrade_customer">You are the customer</string>
<string name="upgrade_privacy">Tasks.org does not monetize you or your data</string>
<string name="upgrade_privacy">Tasks.org does not show ads or sell personal information</string>
<string name="upgrade_coming_soon">Many new features coming soon!</string>
<string name="upgrade_synchronization">Sync with third-party or self-hosted servers</string>
<string name="upgrade_etesync">End-to-end encryption with EteSync</string>
<string name="upgrade_google_tasks">Multiple Google Task accounts</string>
<string name="upgrade_additional_features">Additional features</string>
<string name="upgrade_additional_features">Unlock additional features</string>
<string name="upgrade_themes">Unlock all themes, colors, and icons</string>
<string name="upgrade_google_places">Improved location search with Google Places</string>
<string name="upgrade_tasker">Tasker plugins</string>
<string name="upgrade_free_trial">New subscribers receive a 7-day free trial</string>
<string name="upgrade_downgrade">Upgrade or downgrade at any time</string>
<string name="upgrade_balance">Your remaining balance will apply to your new subscription</string>
<string name="upgrade_cancel">Cancel at any time</string>
<string name="upgrade_benefits_retained">benefits are retained until the end of your billing period</string>
<string name="upgrade_free_trial">7-day free trial for new subscribers</string>
<string name="upgrade_downgrade">Upgrade, downgrade, or cancel your subscription at any time</string>
<string name="upgrade_previous_donors">Previous donors</string>
<string name="upgrade_previous_donors_contact">to receive one month credit for every $3 in past donations</string>

@ -498,9 +498,6 @@ File %1$s contained %2$s.\n\n
<string name="manage_subscription">Modify subscription</string>
<string name="refresh_purchases">Refresh purchases</string>
<string name="button_subscribe">Subscribe</string>
<string name="button_current_subscription">Current subscription</string>
<string name="button_restore_subscription">Restore subscription</string>
<string name="button_downgrade">Downgrade subscription</string>
<string name="button_upgrade">Upgrade subscription</string>
<string name="button_unsubscribe">Cancel subscription</string>
<string name="button_more_info">More info</string>
@ -685,5 +682,5 @@ File %1$s contained %2$s.\n\n
<string name="offline_lists">Offline lists</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>
<string name="save_percent">Save %d%%</string>
</resources>

@ -200,6 +200,10 @@
<item name="rippleColor">@color/button_accent_ripple</item>
</style>
<style name="RedText" parent="TextAppearance.MaterialComponents.Body1">
<item name="android:textColor">@color/overdue</item>
</style>
<style name="mdtp_ActionButton.Text" parent="Widget.MaterialComponents.Button.TextButton.Dialog.Flush"/>
<style name="AlertButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Dialog.Flush">

Loading…
Cancel
Save