From a78f08c7f86df8457f5d25c3da12ae2698647bc5 Mon Sep 17 00:00:00 2001 From: Tommy DI LUNA Date: Fri, 24 May 2024 11:11:24 +0200 Subject: [PATCH 1/7] Add more customisation to InformationBlockView and change NoValidMailboxesFragment layout It now has three optional elements: a title, a description, and a button. --- Core | 2 +- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 2 +- .../ui/newMessage/AiPropositionFragment.kt | 2 +- .../NoValidMailboxesFragment.kt | 14 ++++-- .../mail/views/InformationBlockView.kt | 49 ++++++++++++++++--- .../res/drawable/spacer_standard_medium.xml | 21 ++++++++ .../res/layout/fragment_ai_proposition.xml | 2 +- .../layout/fragment_no_valid_mailboxes.xml | 24 ++++++--- .../res/layout/layout_ai_engine_choice.xml | 2 +- .../res/layout/view_information_block.xml | 33 +++++++++++-- app/src/main/res/values-de/strings.xml | 6 ++- app/src/main/res/values-es/strings.xml | 6 ++- app/src/main/res/values-fr/strings.xml | 6 ++- app/src/main/res/values-it/strings.xml | 6 ++- app/src/main/res/values/attrs.xml | 7 ++- app/src/main/res/values/strings.xml | 6 ++- 17 files changed, 151 insertions(+), 38 deletions(-) create mode 100644 app/src/main/res/drawable/spacer_standard_medium.xml diff --git a/Core b/Core index 0dba4e538f..a685915245 160000 --- a/Core +++ b/Core @@ -1 +1 @@ -Subproject commit 0dba4e538f0cfc31d7d393c058548b26938059ca +Subproject commit a6859152459ff699e0386de17ab38e1f3d53f912 diff --git a/app/build.gradle b/app/build.gradle index acdba3aeae..04d70907af 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,6 +37,7 @@ android { // buildConfigField 'String', 'MAIL_API_PREPROD', '"https://mail.preprod.dev.infomaniak.ch"' buildConfigField 'String', 'SHOP_URL', '"https://ik.me"' buildConfigField 'String', 'CHATBOT_URL', '"https://www.infomaniak.com/chatbot"' + buildConfigField 'String', 'FAQ_URL', '"https://www.infomaniak.com/fr/support/faq/admin2/service-mail"' buildConfigField 'String', 'MANAGE_SIGNATURES_URL', '"https://mail.infomaniak.com/0/settings/signatures"' buildConfigField 'String', 'BUGTRACKER_MAIL_BUCKET_ID', '"app_mail"' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9eb4cd7342..c2e3cf0fc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,7 +58,7 @@ android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:theme="@style/AppTheme.Pink" - android:usesCleartextTraffic="true" + android:usesCleartextTraffic="false" tools:targetApi="UPSIDE_DOWN_CAKE"> Unit)? = null private var onCloseClicked: (() -> Unit)? = null - var text: CharSequence? - get() = binding.informationText.text + var title: CharSequence? + get() = binding.informationTitle.text set(value) { - binding.informationText.text = value + binding.informationTitle.text = value + } + + var description: CharSequence? + get() = binding.informationDescription.text + set(value) { + binding.informationDescription.text = value + } + + var button: CharSequence? + get() = binding.informationButton.text + set(value) { + binding.informationButton.text = value } var icon: Drawable? @@ -52,7 +65,19 @@ class InformationBlockView @JvmOverloads constructor( init { attrs?.getAttributes(context, R.styleable.InformationBlockView) { - text = getString(R.styleable.InformationBlockView_text) + binding.informationTitle.apply { + isVisible = getBoolean(R.styleable.InformationBlockView_showTitle, true) + text = getString(R.styleable.InformationBlockView_title) + } + binding.informationDescription.apply { + isVisible = getBoolean(R.styleable.InformationBlockView_showDescription, false) + text = getString(R.styleable.InformationBlockView_description) + } + binding.informationButton.apply { + isVisible = getBoolean(R.styleable.InformationBlockView_showButton, false) + text = getString(R.styleable.InformationBlockView_button) + setOnClickListener { onInformationClicked?.invoke() } + } icon = getDrawable(R.styleable.InformationBlockView_icon) binding.closeButton.apply { isVisible = getBoolean(R.styleable.InformationBlockView_showCloseIcon, false) @@ -61,11 +86,23 @@ class InformationBlockView @JvmOverloads constructor( } } + fun setOnInformationClicked(listener: () -> Unit) { + onInformationClicked = listener + } + fun setOnCloseListener(listener: () -> Unit) { onCloseClicked = listener } - fun setText(@StringRes textRes: Int) { - text = context.getText(textRes) + fun setTitle(@StringRes textRes: Int) { + title = context.getText(textRes) + } + + fun setDescription(@StringRes descriptionRes: Int) { + description = context.getText(descriptionRes) + } + + fun setButton(@StringRes buttonRes: Int) { + button = context.getText(buttonRes) } } diff --git a/app/src/main/res/drawable/spacer_standard_medium.xml b/app/src/main/res/drawable/spacer_standard_medium.xml new file mode 100644 index 0000000000..0a1bc2b6f9 --- /dev/null +++ b/app/src/main/res/drawable/spacer_standard_medium.xml @@ -0,0 +1,21 @@ + + + + diff --git a/app/src/main/res/layout/fragment_ai_proposition.xml b/app/src/main/res/layout/fragment_ai_proposition.xml index e234abd81a..945b3d37fe 100644 --- a/app/src/main/res/layout/fragment_ai_proposition.xml +++ b/app/src/main/res/layout/fragment_ai_proposition.xml @@ -59,7 +59,7 @@ android:visibility="gone" app:icon="@drawable/ic_warning" app:showCloseIcon="true" - tools:text="@string/aiErrorTooManyRequests" + tools:title="@string/aiErrorTooManyRequests" tools:visibility="visible" /> - + app:icon="@drawable/ic_warning" + app:showCloseIcon="false" + app:title="@string/lockedMailboxTitleIB" + app:showTitle="true" + tools:description="@string/lockedMailboxTitleIB" + app:showDescription="true" + app:button="@string/readFAQ" + app:showButton="true" /> + app:title="@string/aiEngineWarning" /> diff --git a/app/src/main/res/layout/view_information_block.xml b/app/src/main/res/layout/view_information_block.xml index a6d38e9a67..c1c9ca32a9 100644 --- a/app/src/main/res/layout/view_information_block.xml +++ b/app/src/main/res/layout/view_information_block.xml @@ -41,20 +41,45 @@ android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/alternativeMargin" tools:drawableStartCompat="@drawable/ic_warning" /> - + android:layout_gravity="center_vertical" + android:showDividers="middle" + android:divider="@drawable/spacer_standard_medium" + android:orientation="vertical"> + + + + + + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index caa0a2ac48..6188d7235d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -295,13 +295,14 @@ Posteingang Laden… - Der Zugriff auf Ihre E-Mail-Adresse ist derzeit gesperrt. Bitte wenden Sie sich an Ihren Administrator. - Der Zugriff auf Ihre Mailboxen ist derzeit gesperrt. Bitte wenden Sie sich an Ihren Administrator. + Der Zugriff auf Ihre E-Mail-Adresse ist derzeit gesperrt.\nFür weitere Informationen, FAQ lesen. + Für weitere Informationen: Blockierte E-Mail-Adresse Gesperrte Mailadressen + Einige Ihrer Mailboxen sind blockiert Meine Signaturen verwalten Erweiterte Aktionen %1$s / %2$s verwendet @@ -365,6 +366,7 @@ Keine Auswahl Sind Sie sicher, dass Sie die Adresse %s lösen möchten? Adresse abtrennen + FAQ lesen Mehr erfahren Letzte Suchen Sie wurden abgemeldet diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 3c4ab3e424..721b0b42b5 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -295,13 +295,14 @@ Bandeja de entrada Cargando… - El acceso a su dirección de correo electrónico está bloqueado. Póngase en contacto con su administrador. - El acceso a sus buzones de correo está bloqueado. Póngase en contacto con su administrador. + El acceso a su dirección de correo electrónico está bloqueado.\nPara más información, lea las preguntas frecuentes. + Para más información: Dirección de correo electrónico bloqueada Buzones de correo bloqueados + Algunos de sus buzones están bloqueados Gestionar mis firmas Acciones avanzadas %1$s / %2$s usado @@ -365,6 +366,7 @@ Sin selección ¿Estás seguro de que quieres separar la dirección %s? Separar dirección + Lea las preguntas frecuentes Seguir leyendo Búsquedas recientes Ha sido desconectado diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0b16982ba5..0aef0c157f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -299,8 +299,8 @@ Boîte de réception Chargement… - L’accès à votre adresse mail est actuellement bloqué. Nous vous invitons à contacter votre administrateur. - L’accès à vos adresses mail est actuellement bloqué. Nous vous invitons à contacter votre administrateur. + L’accès à votre adresse mail est actuellement bloqué.\nPour plus d’informations, consultez les FAQ. + Pour plus d’informations : L’accès à votre adresse mail est actuellement bloqué. Nous vous invitons à contacter votre administrateur. @@ -308,6 +308,7 @@ Adresses mail bloquées Adresses mail bloquées + Certaines de vos adresses mail sont bloquées Gérer mes signatures Actions avancées %1$s / %2$s utilisés @@ -373,6 +374,7 @@ Aucune sélection Êtes-vous sûr de vouloir détacher l’adresse %s ? Détacher l’adresse + Consulter les FAQ En savoir plus Recherches récentes Vous avez été déconnecté diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ce91bc45b1..45b0c36828 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -295,13 +295,14 @@ Posta in arrivo Caricamento… - L’accesso al tuo indirizzo e-mail è attualmente bloccato. Si prega di contattare l’amministratore. - L’accesso alle caselle di posta elettronica è attualmente bloccato. Contattare l’amministratore. + L’accesso al tuo indirizzo e-mail è attualmente bloccato.\nPer ulteriori informazioni, leggi le FAQ. + Per ulteriori informazioni: Indirizzo e-mail bloccato Indirizzi e-mail bloccati + Alcuni indirizzi e-mail bloccati Gestisci le mie firme Azioni avanzate %1$s / %2$s usato @@ -365,6 +366,7 @@ Nessuna selezione Sei sicuro di voler staccare l’indirizzo %s? Staccare l’indirizzo + Leggi le FAQ Per saperne di più Ricerche recenti Sei stato disconnesso diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 78937d9547..58c41a5def 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -168,7 +168,12 @@ - + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eecce9eaab..11d19e5f99 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -301,13 +301,14 @@ Inbox Loading… - Access to your mailbox is currently blocked. Please contact your administrator. - Access to your mailboxes is currently blocked. Please contact your administrator. + Access to your mailbox is currently blocked.\nFor further information, please read FAQ. + For further information: Blocked mailbox Blocked mailboxes + Some of your mailboxes are blocked Manage my signatures Advanced actions %1$s / %2$s used @@ -371,6 +372,7 @@ No selection Are you sure you want to detach the %s address? Detach mailbox + Read FAQ Read more Recent searches You have been disconnected From da23fffcbecb6da61d02ad1cc58d27f281174e8c Mon Sep 17 00:00:00 2001 From: Tommy DI LUNA Date: Fri, 7 Jun 2024 10:07:41 +0200 Subject: [PATCH 2/7] Apply suggestions --- .../LockedMailboxBottomSheetDialog.kt | 6 +-- .../ui/newMessage/AiEngineChoiceFragment.kt | 2 + .../ui/newMessage/AiPropositionFragment.kt | 2 +- .../NoValidMailboxesFragment.kt | 8 ++-- .../mail/views/InformationBlockView.kt | 39 +++++-------------- .../res/layout/fragment_ai_proposition.xml | 2 +- .../layout/fragment_no_valid_mailboxes.xml | 11 +++--- .../res/layout/layout_ai_engine_choice.xml | 3 +- .../res/layout/view_information_block.xml | 8 +++- app/src/main/res/values-de/strings.xml | 10 ++--- app/src/main/res/values-es/strings.xml | 10 ++--- app/src/main/res/values-fr/strings.xml | 11 ++---- app/src/main/res/values-it/strings.xml | 10 ++--- app/src/main/res/values/attrs.xml | 3 -- app/src/main/res/values/strings.xml | 10 ++--- 15 files changed, 56 insertions(+), 79 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt b/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt index 602d1987c3..ce156c63a3 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt @@ -29,9 +29,9 @@ class LockedMailboxBottomSheetDialog : InformationBottomSheetDialog() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) = with(binding) { super.onViewCreated(view, savedInstanceState) - - title.text = getString(R.string.blockedMailboxTitle, navigationArgs.lockedMailboxName) - description.text = resources.getQuantityText(R.plurals.lockedMailboxDescription, 1) + + title.text = getString(R.string.lockedMailboxBottomSheetTitle, navigationArgs.lockedMailboxName) + description.text = getString(R.string.lockedMailboxBottomSheetDescription) infoIllustration.setBackgroundResource(R.drawable.ic_invalid_mailbox) actionButton.apply { diff --git a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt index b677dd0460..81d393b1f0 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt @@ -51,6 +51,8 @@ class AiEngineChoiceFragment : Fragment() { super.onViewCreated(view, savedInstanceState) setSystemBarsColors(statusBarColor = R.color.backgroundColor) + choiceBinding.informationBlock.setDescription(R.string.aiEngineWarning) + binding.toolbar.setNavigationOnClickListener { findNavController().popBackStack() } sharedUtils.manageAiEngineSettings(this, choiceBinding.radioGroup, "promptAiEngine") { diff --git a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt index 03ddc9cdd8..e6cb4cbddd 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt @@ -296,7 +296,7 @@ class AiPropositionFragment : Fragment() { } private fun displayError(status: PropositionStatus) { - binding.errorBlock.setTitle(status.errorRes!!) + binding.errorBlock.setDescription(status.errorRes!!) setUiVisibilityState(UiState.ERROR) } diff --git a/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt index b3896c62c3..cb95eba552 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt @@ -60,7 +60,9 @@ class NoValidMailboxesFragment : Fragment(), MailboxListFragment { override fun onViewCreated(view: View, savedInstanceState: Bundle?) = with(binding) { super.onViewCreated(view, savedInstanceState) - noValidMailboxesBlock.description = resources.getQuantityString(R.plurals.lockedMailboxDescription, 2) + noValidMailboxesBlock.setTitle(R.string.lockedMailboxScreenTitle) + noValidMailboxesBlock.setDescription(R.string.lockedMailboxScreenDescription) + noValidMailboxesBlock.setButton(R.string.readFAQ) setupAdapters() setupListeners() @@ -81,9 +83,9 @@ class NoValidMailboxesFragment : Fragment(), MailboxListFragment { } private fun setupListeners() = with(binding) { - noValidMailboxesBlock.setOnInformationClicked { + noValidMailboxesBlock.setOnActionClicked { trackNoValidMailboxesEvent("readFAQ") - context?.let { WebViewActivity.startActivity(it, Uri.parse(BuildConfig.FAQ_URL).toString()) } + WebViewActivity.startActivity(requireContext(), Uri.parse(BuildConfig.FAQ_URL).toString()) } changeAccountButton.setOnClickListener { diff --git a/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt b/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt index 0be95fc686..19039f68b3 100644 --- a/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt +++ b/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt @@ -36,26 +36,14 @@ class InformationBlockView @JvmOverloads constructor( private val binding by lazy { ViewInformationBlockBinding.inflate(LayoutInflater.from(context), this, true) } - private var onInformationClicked: (() -> Unit)? = null + private var onActionClicked: (() -> Unit)? = null private var onCloseClicked: (() -> Unit)? = null - var title: CharSequence? - get() = binding.informationTitle.text - set(value) { - binding.informationTitle.text = value - } + var title: CharSequence? by binding.informationTitle::text - var description: CharSequence? - get() = binding.informationDescription.text - set(value) { - binding.informationDescription.text = value - } + var description: CharSequence? by binding.informationDescription::text - var button: CharSequence? - get() = binding.informationButton.text - set(value) { - binding.informationButton.text = value - } + var button: CharSequence? by binding.informationButton::text var icon: Drawable? get() = binding.icon.compoundDrawablesRelative[0] @@ -65,18 +53,8 @@ class InformationBlockView @JvmOverloads constructor( init { attrs?.getAttributes(context, R.styleable.InformationBlockView) { - binding.informationTitle.apply { - isVisible = getBoolean(R.styleable.InformationBlockView_showTitle, true) - text = getString(R.styleable.InformationBlockView_title) - } - binding.informationDescription.apply { - isVisible = getBoolean(R.styleable.InformationBlockView_showDescription, false) - text = getString(R.styleable.InformationBlockView_description) - } binding.informationButton.apply { - isVisible = getBoolean(R.styleable.InformationBlockView_showButton, false) - text = getString(R.styleable.InformationBlockView_button) - setOnClickListener { onInformationClicked?.invoke() } + setOnClickListener { onActionClicked?.invoke() } } icon = getDrawable(R.styleable.InformationBlockView_icon) binding.closeButton.apply { @@ -86,8 +64,8 @@ class InformationBlockView @JvmOverloads constructor( } } - fun setOnInformationClicked(listener: () -> Unit) { - onInformationClicked = listener + fun setOnActionClicked(listener: () -> Unit) { + onActionClicked = listener } fun setOnCloseListener(listener: () -> Unit) { @@ -96,13 +74,16 @@ class InformationBlockView @JvmOverloads constructor( fun setTitle(@StringRes textRes: Int) { title = context.getText(textRes) + binding.informationTitle.isVisible = true } fun setDescription(@StringRes descriptionRes: Int) { description = context.getText(descriptionRes) + binding.informationDescription.isVisible = true } fun setButton(@StringRes buttonRes: Int) { button = context.getText(buttonRes) + binding.informationButton.isVisible = true } } diff --git a/app/src/main/res/layout/fragment_ai_proposition.xml b/app/src/main/res/layout/fragment_ai_proposition.xml index 945b3d37fe..17add23251 100644 --- a/app/src/main/res/layout/fragment_ai_proposition.xml +++ b/app/src/main/res/layout/fragment_ai_proposition.xml @@ -59,7 +59,7 @@ android:visibility="gone" app:icon="@drawable/ic_warning" app:showCloseIcon="true" - tools:title="@string/aiErrorTooManyRequests" + tools:description="@string/aiErrorTooManyRequests" tools:visibility="visible" /> + tools:title="@string/lockedMailboxScreenTitle" + tools:description="@string/lockedMailboxScreenDescription" + tools:button="@string/readFAQ" /> + @@ -151,4 +149,5 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> + diff --git a/app/src/main/res/layout/layout_ai_engine_choice.xml b/app/src/main/res/layout/layout_ai_engine_choice.xml index 75f58a06e8..f4d36c1638 100644 --- a/app/src/main/res/layout/layout_ai_engine_choice.xml +++ b/app/src/main/res/layout/layout_ai_engine_choice.xml @@ -42,9 +42,10 @@ + tools:description="@string/aiEngineWarning" /> diff --git a/app/src/main/res/layout/view_information_block.xml b/app/src/main/res/layout/view_information_block.xml index c1c9ca32a9..ca27a8efab 100644 --- a/app/src/main/res/layout/view_information_block.xml +++ b/app/src/main/res/layout/view_information_block.xml @@ -56,21 +56,27 @@ android:id="@+id/informationTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:visibility="gone" style="@style/BodyMedium" + tools:visibility="visible" tools:text="@string/aiErrorTooManyRequests" /> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6188d7235d..ee3cfe22c3 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -104,7 +104,6 @@ Liste der Teilnehmer (%d) Bcc: - Mailbox %s ist blockiert Passwort blockiert Blockierte Passwörter @@ -294,15 +293,14 @@ Google Play Services sind erforderlich Posteingang Laden… - - Der Zugriff auf Ihre E-Mail-Adresse ist derzeit gesperrt.\nFür weitere Informationen, FAQ lesen. - Für weitere Informationen: - + Der Zugriff auf Ihre E-Mail-Adresse ist derzeit gesperrt.\nFür weitere Informationen, FAQ lesen. + Mailbox %s ist blockiert + Für weitere Informationen: + Einige Ihrer Mailboxen sind blockiert Blockierte E-Mail-Adresse Gesperrte Mailadressen - Einige Ihrer Mailboxen sind blockiert Meine Signaturen verwalten Erweiterte Aktionen %1$s / %2$s verwendet diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 721b0b42b5..af9c9b4665 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -104,7 +104,6 @@ Lista de asistentes (%d) CCO: - La dirección de correo electrónico %s está bloqueada Contraseña bloqueada Contraseñas bloqueadas @@ -294,15 +293,14 @@ Se requieren los servicios de Google Play Bandeja de entrada Cargando… - - El acceso a su dirección de correo electrónico está bloqueado.\nPara más información, lea las preguntas frecuentes. - Para más información: - + El acceso a su dirección de correo electrónico está bloqueado.\nPara más información, lea las preguntas frecuentes. + La dirección de correo electrónico %s está bloqueada + Para más información: + Algunos de sus buzones están bloqueados Dirección de correo electrónico bloqueada Buzones de correo bloqueados - Algunos de sus buzones están bloqueados Gestionar mis firmas Acciones avanzadas %1$s / %2$s usado diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0aef0c157f..83e42c231f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -105,7 +105,6 @@ Liste des participants (%d) Cci : - L’adresse %s est bloquée Mot de passe bloqué Mots de passe bloqués @@ -298,17 +297,15 @@ Les Google Play Services sont requis Boîte de réception Chargement… - - L’accès à votre adresse mail est actuellement bloqué.\nPour plus d’informations, consultez les FAQ. - Pour plus d’informations : - L’accès à votre adresse mail est actuellement bloqué. Nous vous invitons à contacter votre administrateur. - + L’accès à votre adresse mail est actuellement bloqué.\nPour plus d’informations, consultez les FAQ. + L’adresse %s est bloquée + Pour plus d’informations : + Certaines de vos adresses mail sont bloquées Adresse mail bloquée Adresses mail bloquées Adresses mail bloquées - Certaines de vos adresses mail sont bloquées Gérer mes signatures Actions avancées %1$s / %2$s utilisés diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 45b0c36828..3084ef824e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -104,7 +104,6 @@ Elenco dei partecipanti (%d) Bcc: - L’indirizzo e-mail %s è bloccato Password bloccata Password bloccate @@ -294,15 +293,14 @@ I servizi Google Play sono necessari Posta in arrivo Caricamento… - - L’accesso al tuo indirizzo e-mail è attualmente bloccato.\nPer ulteriori informazioni, leggi le FAQ. - Per ulteriori informazioni: - + L’accesso al tuo indirizzo e-mail è attualmente bloccato.\nPer ulteriori informazioni, leggi le FAQ. + L’indirizzo e-mail %s è bloccato + Per ulteriori informazioni: + Alcuni indirizzi e-mail bloccati Indirizzo e-mail bloccato Indirizzi e-mail bloccati - Alcuni indirizzi e-mail bloccati Gestisci le mie firme Azioni avanzate %1$s / %2$s usato diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 58c41a5def..bf45e663e0 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -169,11 +169,8 @@ - - - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 11d19e5f99..d632854c4f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -110,7 +110,6 @@ List of attendees (%d) Bcc: - Mailbox %s is blocked Blocked password Blocked passwords @@ -300,15 +299,14 @@ Google Play Services are required Inbox Loading… - - Access to your mailbox is currently blocked.\nFor further information, please read FAQ. - For further information: - + Access to your mailbox is currently blocked.\nFor further information, please read FAQ. + Mailbox %s is blocked + For further information: + Some of your mailboxes are blocked Blocked mailbox Blocked mailboxes - Some of your mailboxes are blocked Manage my signatures Advanced actions %1$s / %2$s used From 3c55cea9cafbdaddde72f31ac976b9a602e1ca3a Mon Sep 17 00:00:00 2001 From: Tommy DI LUNA Date: Fri, 7 Jun 2024 11:11:13 +0200 Subject: [PATCH 3/7] Add string for FAQ URL --- .../mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt | 4 +--- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt index cb95eba552..1777e29e38 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt @@ -17,7 +17,6 @@ */ package com.infomaniak.mail.ui.noValidMailboxes -import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -28,7 +27,6 @@ import androidx.fragment.app.activityViewModels import com.infomaniak.lib.core.ui.WebViewActivity import com.infomaniak.lib.core.utils.safeBinding import com.infomaniak.lib.core.utils.safeNavigate -import com.infomaniak.mail.BuildConfig import com.infomaniak.mail.MatomoMail.ADD_MAILBOX_NAME import com.infomaniak.mail.MatomoMail.trackNoValidMailboxesEvent import com.infomaniak.mail.R @@ -85,7 +83,7 @@ class NoValidMailboxesFragment : Fragment(), MailboxListFragment { private fun setupListeners() = with(binding) { noValidMailboxesBlock.setOnActionClicked { trackNoValidMailboxesEvent("readFAQ") - WebViewActivity.startActivity(requireContext(), Uri.parse(BuildConfig.FAQ_URL).toString()) + WebViewActivity.startActivity(requireContext(), getString(R.string.faqUrl)) } changeAccountButton.setOnClickListener { diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ee3cfe22c3..8655f7b69c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -288,6 +288,7 @@ Externer Empfänger Extern Öffnen des Entwurfs fehlgeschlagen + https://www.infomaniak.com/de/support/faq/admin2/mail-service Favoriten Von: Google Play Services sind erforderlich diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index af9c9b4665..8a5e1bcf58 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -288,6 +288,7 @@ Receptor externo Exterior No se ha podido abrir el borrador + https://www.infomaniak.com/es/asistencia/faq/admin2/servicio-de-correo Favoritos De: Se requieren los servicios de Google Play diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 83e42c231f..3bafff82e5 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -292,6 +292,7 @@ Destinataire externe Externe Échec de l’ouverture du brouillon + https://www.infomaniak.com/fr/support/faq/admin2/service-mail Favoris De : Les Google Play Services sont requis diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3084ef824e..1ff7e08991 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -288,6 +288,7 @@ Destinatario esterno Esterno Impossibile aprire la bozza + https://www.infomaniak.com/it/assistenza/faq/admin2/servizio-mail Preferiti Da: I servizi Google Play sono necessari diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d632854c4f..35a9a04520 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -294,6 +294,7 @@ External recipient External Failed to open draft + https://www.infomaniak.com/en/support/faq/admin2/email-service Favorites From: Google Play Services are required From c3137217448d804cc6545009f0a84574d7afa43b Mon Sep 17 00:00:00 2001 From: Tommy DI LUNA Date: Fri, 7 Jun 2024 12:46:28 +0200 Subject: [PATCH 4/7] Format correctly fragment_no_valid_mailboxes.xml --- app/src/main/res/layout/fragment_no_valid_mailboxes.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/fragment_no_valid_mailboxes.xml b/app/src/main/res/layout/fragment_no_valid_mailboxes.xml index c6bb2a0e20..6196b8b9ec 100644 --- a/app/src/main/res/layout/fragment_no_valid_mailboxes.xml +++ b/app/src/main/res/layout/fragment_no_valid_mailboxes.xml @@ -49,12 +49,12 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/marginStandard" android:layout_marginTop="@dimen/marginLarge" - app:layout_constraintTop_toBottomOf="@id/logo" app:icon="@drawable/ic_warning" + app:layout_constraintTop_toBottomOf="@id/logo" app:showCloseIcon="false" - tools:title="@string/lockedMailboxScreenTitle" + tools:button="@string/readFAQ" tools:description="@string/lockedMailboxScreenDescription" - tools:button="@string/readFAQ" /> + tools:title="@string/lockedMailboxScreenTitle" /> Date: Fri, 7 Jun 2024 13:39:24 +0200 Subject: [PATCH 5/7] Fix manifest merge conflict over usesCleartextTraffic property --- app/src/main/AndroidManifest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c2e3cf0fc2..9a46d894a0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,7 +58,8 @@ android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:theme="@style/AppTheme.Pink" - android:usesCleartextTraffic="false" + android:usesCleartextTraffic="true" + tools:replace="android:usesCleartextTraffic" tools:targetApi="UPSIDE_DOWN_CAKE"> Date: Fri, 7 Jun 2024 15:06:57 +0200 Subject: [PATCH 6/7] Apply suggestions --- .../LockedMailboxBottomSheetDialog.kt | 4 +- .../ui/newMessage/AiEngineChoiceFragment.kt | 4 +- .../ui/newMessage/AiPropositionFragment.kt | 2 +- .../NoValidMailboxesFragment.kt | 4 -- .../mail/views/InformationBlockView.kt | 48 +++++++++++-------- .../layout/fragment_no_valid_mailboxes.xml | 6 +-- .../res/layout/layout_ai_engine_choice.xml | 4 +- .../res/layout/view_information_block.xml | 23 +++++---- app/src/main/res/values-es/strings.xml | 2 +- 9 files changed, 50 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt b/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt index ce156c63a3..1c0f1a1e5c 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/LockedMailboxBottomSheetDialog.kt @@ -29,13 +29,13 @@ class LockedMailboxBottomSheetDialog : InformationBottomSheetDialog() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) = with(binding) { super.onViewCreated(view, savedInstanceState) - + title.text = getString(R.string.lockedMailboxBottomSheetTitle, navigationArgs.lockedMailboxName) description.text = getString(R.string.lockedMailboxBottomSheetDescription) infoIllustration.setBackgroundResource(R.drawable.ic_invalid_mailbox) actionButton.apply { - setText(R.string.buttonClose) + setText(R.string.externalDialogConfirmButton) setOnClickListener { dismiss() } } diff --git a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt index 81d393b1f0..0e6f0334f4 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt @@ -50,9 +50,7 @@ class AiEngineChoiceFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setSystemBarsColors(statusBarColor = R.color.backgroundColor) - - choiceBinding.informationBlock.setDescription(R.string.aiEngineWarning) - + binding.toolbar.setNavigationOnClickListener { findNavController().popBackStack() } sharedUtils.manageAiEngineSettings(this, choiceBinding.radioGroup, "promptAiEngine") { diff --git a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt index e6cb4cbddd..8e54a37b46 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiPropositionFragment.kt @@ -296,7 +296,7 @@ class AiPropositionFragment : Fragment() { } private fun displayError(status: PropositionStatus) { - binding.errorBlock.setDescription(status.errorRes!!) + binding.errorBlock.description = getString(status.errorRes!!) setUiVisibilityState(UiState.ERROR) } diff --git a/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt index 1777e29e38..3f9b2e80e3 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/noValidMailboxes/NoValidMailboxesFragment.kt @@ -58,10 +58,6 @@ class NoValidMailboxesFragment : Fragment(), MailboxListFragment { override fun onViewCreated(view: View, savedInstanceState: Bundle?) = with(binding) { super.onViewCreated(view, savedInstanceState) - noValidMailboxesBlock.setTitle(R.string.lockedMailboxScreenTitle) - noValidMailboxesBlock.setDescription(R.string.lockedMailboxScreenDescription) - noValidMailboxesBlock.setButton(R.string.readFAQ) - setupAdapters() setupListeners() diff --git a/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt b/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt index 19039f68b3..e0ebaaa0c2 100644 --- a/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt +++ b/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt @@ -22,7 +22,6 @@ import android.graphics.drawable.Drawable import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout -import androidx.annotation.StringRes import androidx.core.view.isVisible import com.infomaniak.lib.core.utils.getAttributes import com.infomaniak.mail.R @@ -39,11 +38,26 @@ class InformationBlockView @JvmOverloads constructor( private var onActionClicked: (() -> Unit)? = null private var onCloseClicked: (() -> Unit)? = null - var title: CharSequence? by binding.informationTitle::text + var title: CharSequence? + get() = binding.informationTitle.text + set(value) { + binding.informationTitle.text = value + binding.informationTitle.isVisible = true + } - var description: CharSequence? by binding.informationDescription::text + var description: CharSequence? + get() = binding.informationDescription.text + set(value) { + binding.informationDescription.text = value + binding.informationDescription.isVisible = true + } - var button: CharSequence? by binding.informationButton::text + var buttonLabel: CharSequence? + get() = binding.informationButton.text + set(value) { + binding.informationButton.text = value + binding.informationButton.isVisible = true + } var icon: Drawable? get() = binding.icon.compoundDrawablesRelative[0] @@ -53,7 +67,18 @@ class InformationBlockView @JvmOverloads constructor( init { attrs?.getAttributes(context, R.styleable.InformationBlockView) { + binding.informationTitle.apply { + val text = getString(R.styleable.InformationBlockView_title) + if (!text.isNullOrBlank()) title = text + } + binding.informationDescription.apply { + val text = getString(R.styleable.InformationBlockView_description) + if (!text.isNullOrBlank()) description = text + } binding.informationButton.apply { + val text = getString(R.styleable.InformationBlockView_button) + if (!text.isNullOrBlank()) buttonLabel = text + setOnClickListener { onActionClicked?.invoke() } } icon = getDrawable(R.styleable.InformationBlockView_icon) @@ -71,19 +96,4 @@ class InformationBlockView @JvmOverloads constructor( fun setOnCloseListener(listener: () -> Unit) { onCloseClicked = listener } - - fun setTitle(@StringRes textRes: Int) { - title = context.getText(textRes) - binding.informationTitle.isVisible = true - } - - fun setDescription(@StringRes descriptionRes: Int) { - description = context.getText(descriptionRes) - binding.informationDescription.isVisible = true - } - - fun setButton(@StringRes buttonRes: Int) { - button = context.getText(buttonRes) - binding.informationButton.isVisible = true - } } diff --git a/app/src/main/res/layout/fragment_no_valid_mailboxes.xml b/app/src/main/res/layout/fragment_no_valid_mailboxes.xml index 6196b8b9ec..cd6db9e056 100644 --- a/app/src/main/res/layout/fragment_no_valid_mailboxes.xml +++ b/app/src/main/res/layout/fragment_no_valid_mailboxes.xml @@ -49,12 +49,12 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/marginStandard" android:layout_marginTop="@dimen/marginLarge" + app:button="@string/readFAQ" + app:description="@string/lockedMailboxScreenDescription" app:icon="@drawable/ic_warning" app:layout_constraintTop_toBottomOf="@id/logo" app:showCloseIcon="false" - tools:button="@string/readFAQ" - tools:description="@string/lockedMailboxScreenDescription" - tools:title="@string/lockedMailboxScreenTitle" /> + app:title="@string/lockedMailboxScreenTitle" /> + app:description="@string/aiEngineWarning" + app:icon="@drawable/ic_external_information" /> diff --git a/app/src/main/res/layout/view_information_block.xml b/app/src/main/res/layout/view_information_block.xml index ca27a8efab..ae05214b9f 100644 --- a/app/src/main/res/layout/view_information_block.xml +++ b/app/src/main/res/layout/view_information_block.xml @@ -47,37 +47,36 @@ + android:orientation="vertical" + android:showDividers="middle"> + tools:text="@string/aiErrorTooManyRequests" + tools:visibility="visible" /> + tools:text="@string/aiErrorTooManyRequests" + tools:visibility="visible" /> + tools:text="@string/buttonLogInDifferentAccount" + tools:visibility="visible" /> diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 8a5e1bcf58..628fb2e3a3 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -297,7 +297,7 @@ El acceso a su dirección de correo electrónico está bloqueado.\nPara más información, lea las preguntas frecuentes. La dirección de correo electrónico %s está bloqueada Para más información: - Algunos de sus buzones están bloqueados + Algunas de sus direcciones de correo electrónico están bloqueadas Dirección de correo electrónico bloqueada Buzones de correo bloqueados From 3b25416dd443109c60eb56ed4cf5985a996cee58 Mon Sep 17 00:00:00 2001 From: Tommy DI LUNA Date: Tue, 11 Jun 2024 09:40:05 +0200 Subject: [PATCH 7/7] Apply suggestions --- .idea/navEditor.xml | 89 +++++++++++++++++++ .../ui/newMessage/AiEngineChoiceFragment.kt | 2 +- .../mail/views/InformationBlockView.kt | 37 ++++---- .../layout/fragment_no_valid_mailboxes.xml | 4 +- .../res/layout/view_information_block.xml | 68 +++++++------- app/src/main/res/values/attrs.xml | 2 +- 6 files changed, 141 insertions(+), 61 deletions(-) diff --git a/.idea/navEditor.xml b/.idea/navEditor.xml index f5c9295add..913c998429 100644 --- a/.idea/navEditor.xml +++ b/.idea/navEditor.xml @@ -847,6 +847,95 @@ + + + + + + + diff --git a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt index 0e6f0334f4..b677dd0460 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/newMessage/AiEngineChoiceFragment.kt @@ -50,7 +50,7 @@ class AiEngineChoiceFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setSystemBarsColors(statusBarColor = R.color.backgroundColor) - + binding.toolbar.setNavigationOnClickListener { findNavController().popBackStack() } sharedUtils.manageAiEngineSettings(this, choiceBinding.radioGroup, "promptAiEngine") { diff --git a/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt b/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt index e0ebaaa0c2..5cba48536e 100644 --- a/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt +++ b/app/src/main/java/com/infomaniak/mail/views/InformationBlockView.kt @@ -22,6 +22,7 @@ import android.graphics.drawable.Drawable import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout +import androidx.core.view.isGone import androidx.core.view.isVisible import com.infomaniak.lib.core.utils.getAttributes import com.infomaniak.mail.R @@ -41,22 +42,28 @@ class InformationBlockView @JvmOverloads constructor( var title: CharSequence? get() = binding.informationTitle.text set(value) { - binding.informationTitle.text = value - binding.informationTitle.isVisible = true + binding.informationTitle.apply { + text = value + isGone = value.isNullOrBlank() + } } var description: CharSequence? get() = binding.informationDescription.text set(value) { - binding.informationDescription.text = value - binding.informationDescription.isVisible = true + binding.informationDescription.apply { + text = value + isGone = value.isNullOrBlank() + } } var buttonLabel: CharSequence? get() = binding.informationButton.text set(value) { - binding.informationButton.text = value - binding.informationButton.isVisible = true + binding.informationButton.apply { + text = value + isGone = value.isNullOrBlank() + } } var icon: Drawable? @@ -67,20 +74,10 @@ class InformationBlockView @JvmOverloads constructor( init { attrs?.getAttributes(context, R.styleable.InformationBlockView) { - binding.informationTitle.apply { - val text = getString(R.styleable.InformationBlockView_title) - if (!text.isNullOrBlank()) title = text - } - binding.informationDescription.apply { - val text = getString(R.styleable.InformationBlockView_description) - if (!text.isNullOrBlank()) description = text - } - binding.informationButton.apply { - val text = getString(R.styleable.InformationBlockView_button) - if (!text.isNullOrBlank()) buttonLabel = text - - setOnClickListener { onActionClicked?.invoke() } - } + title = getString(R.styleable.InformationBlockView_title) + description = getString(R.styleable.InformationBlockView_description) + buttonLabel = getString(R.styleable.InformationBlockView_buttonLabel) + binding.informationButton.setOnClickListener { onActionClicked?.invoke() } icon = getDrawable(R.styleable.InformationBlockView_icon) binding.closeButton.apply { isVisible = getBoolean(R.styleable.InformationBlockView_showCloseIcon, false) diff --git a/app/src/main/res/layout/fragment_no_valid_mailboxes.xml b/app/src/main/res/layout/fragment_no_valid_mailboxes.xml index cd6db9e056..ea0d224db6 100644 --- a/app/src/main/res/layout/fragment_no_valid_mailboxes.xml +++ b/app/src/main/res/layout/fragment_no_valid_mailboxes.xml @@ -49,7 +49,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/marginStandard" android:layout_marginTop="@dimen/marginLarge" - app:button="@string/readFAQ" + app:buttonLabel="@string/readFAQ" app:description="@string/lockedMailboxScreenDescription" app:icon="@drawable/ic_warning" app:layout_constraintTop_toBottomOf="@id/logo" @@ -96,7 +96,7 @@ style="@style/BodyMedium" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="@dimen/marginStandard" + android:layout_marginHorizontal="@dimen/marginStandardMedium" android:layout_marginTop="@dimen/marginStandard" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/view_information_block.xml b/app/src/main/res/layout/view_information_block.xml index ae05214b9f..aaae617e6f 100644 --- a/app/src/main/res/layout/view_information_block.xml +++ b/app/src/main/res/layout/view_information_block.xml @@ -30,55 +30,49 @@ android:layout_margin="@dimen/marginStandardMedium" android:orientation="horizontal"> + + + android:layout_height="wrap_content" + android:divider="@drawable/spacer_standard_medium" + android:orientation="vertical" + android:showDividers="middle"> + android:visibility="gone" + tools:text="@string/aiErrorTooManyRequests" + tools:visibility="visible" /> - + android:visibility="gone" + tools:text="@string/aiErrorTooManyRequests" + tools:visibility="visible" /> - - - - - + - - +