From b212aa49b3af1ac0859af3669cad7d7a70639b30 Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Mon, 6 Sep 2021 10:12:51 +0200 Subject: [PATCH] Added removing diacritics (#29) --- .../activities/SettingsActivity.kt | 8 +++++++ .../smsmessenger/activities/ThreadActivity.kt | 4 +++- .../smsmessenger/extensions/Context.kt | 11 +++++++++ .../smsmessenger/helpers/Config.kt | 4 ++++ .../smsmessenger/helpers/Constants.kt | 1 + .../receivers/DirectReplyReceiver.kt | 5 +++- app/src/main/res/layout/activity_settings.xml | 23 +++++++++++++++++++ app/src/main/res/values-cs/strings.xml | 1 + app/src/main/res/values-da/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fi/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-id/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-ml/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-uk/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 28 files changed, 75 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt index 96f7f99e..e4758a47 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt @@ -40,6 +40,7 @@ class SettingsActivity : SimpleActivity() { setupChangeDateTimeFormat() setupFontSize() setupShowCharacterCounter() + setupUseSimpleCharacters() setupEnableDeliveryReports() setupLockScreenVisibility() updateTextColors(settings_scrollview) @@ -131,6 +132,13 @@ class SettingsActivity : SimpleActivity() { config.showCharacterCounter = settings_show_character_counter.isChecked } } + private fun setupUseSimpleCharacters() { + settings_use_simple_characters.isChecked = config.useSimpleCharacters + settings_use_simple_characters_holder.setOnClickListener { + settings_use_simple_characters.toggle() + config.useSimpleCharacters = settings_use_simple_characters.isChecked + } + } private fun setupEnableDeliveryReports() { settings_enable_delivery_reports.isChecked = config.enableDeliveryReports diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index f235f327..d50548d9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -646,11 +646,13 @@ class ThreadActivity : SimpleActivity() { } private fun sendMessage() { - val msg = thread_type_message.value + var msg = thread_type_message.value if (msg.isEmpty() && attachmentUris.isEmpty()) { return } + msg = removeDiacriticsIfNeeded(msg) + val numbers = ArrayList() participants.forEach { it.phoneNumbers.forEach { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index cb55e7c8..dc51d437 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -38,6 +38,7 @@ import com.simplemobiletools.smsmessenger.receivers.MarkAsReadReceiver import java.util.* import kotlin.collections.ArrayList import me.leolin.shortcutbadger.ShortcutBadger +import java.text.Normalizer val Context.config: Config get() = Config.newInstance(applicationContext) @@ -764,3 +765,13 @@ fun Context.getLockScreenVisibilityText(type: Int) = getString( else -> R.string.nothing } ) + +fun Context.removeDiacriticsIfNeeded(text: String): String { + var msg = text + if (config.useSimpleCharacters) { + msg = Normalizer.normalize(msg, Normalizer.Form.NFD) + msg = msg.replace("\\p{InCombiningDiacriticalMarks}+".toRegex(), "") + } + + return msg +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt index e284b832..c6b6576d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt @@ -18,6 +18,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(SHOW_CHARACTER_COUNTER, false) set(showCharacterCounter) = prefs.edit().putBoolean(SHOW_CHARACTER_COUNTER, showCharacterCounter).apply() + var useSimpleCharacters: Boolean + get() = prefs.getBoolean(USE_SIMPLE_CHARACTERS, false) + set(useSimpleCharacters) = prefs.edit().putBoolean(USE_SIMPLE_CHARACTERS, useSimpleCharacters).apply() + var enableDeliveryReports: Boolean get() = prefs.getBoolean(ENABLE_DELIVERY_REPORTS, true) set(enableDeliveryReports) = prefs.edit().putBoolean(ENABLE_DELIVERY_REPORTS, enableDeliveryReports).apply() diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt index 36025476..6fbb310e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -13,6 +13,7 @@ const val SEARCHED_MESSAGE_ID = "searched_message_id" const val USE_SIM_ID_PREFIX = "use_sim_id_" const val NOTIFICATION_CHANNEL = "simple_sms_messenger" const val SHOW_CHARACTER_COUNTER = "show_character_counter" +const val USE_SIMPLE_CHARACTERS = "use_simple_characters" const val LOCK_SCREEN_VISIBILITY = "lock_screen_visibility" const val ENABLE_DELIVERY_REPORTS = "enable_delivery_reports" diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt index 8a4ee30c..79e333b8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt @@ -11,6 +11,7 @@ import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.markThreadMessagesRead +import com.simplemobiletools.smsmessenger.extensions.removeDiacriticsIfNeeded import com.simplemobiletools.smsmessenger.helpers.REPLY import com.simplemobiletools.smsmessenger.helpers.THREAD_ID import com.simplemobiletools.smsmessenger.helpers.THREAD_NUMBER @@ -19,7 +20,9 @@ class DirectReplyReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val address = intent.getStringExtra(THREAD_NUMBER) val threadId = intent.getLongExtra(THREAD_ID, 0L) - val msg = RemoteInput.getResultsFromIntent(intent).getCharSequence(REPLY)?.toString() ?: return + var msg = RemoteInput.getResultsFromIntent(intent).getCharSequence(REPLY)?.toString() ?: return + + msg = context.removeDiacriticsIfNeeded(msg) val settings = Settings() settings.useSystemSending = true diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 859fdf00..0d4ff987 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -195,6 +195,29 @@ + + + + + + Sender and message Sender only Enable delivery reports + Use simple characters Proč aplikace vyžaduje přístup k internetu? diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index d9067fb0..dba3e2b1 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Hvorfor kræver appen adgang til internettet? diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d7e5e614..f8a464c5 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Warum benötigt diese App Internetzugriff? diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 73901649..63d34b27 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -49,6 +49,7 @@ Αποστολέας και μήνυμα Αποστολέας μόνο Ενεργοποίηση αναφορών παράδοσης + Use simple characters Γιατί η εφαρμογή απαιτεί πρόσβαση στο Internet; diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0f2ec0f6..1f87d8d5 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters ¿Por qué la aplicación requiere acceso a internet? diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 3f6b221f..16ff75bf 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Miksi sovellus vaatii Internet-yhteyden? diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index acf8de23..c8c84a92 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Pourquoi cette application a besoin d\'un accès à internet ? diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 0db16d26..0d67e3bc 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Mengapa aplikasi membutuhkan akses ke internet? diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b6201852..e415666f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -49,6 +49,7 @@ Mittente e messaggio Solo mittente Abilita conferma di consegna + Use simple characters Perché l\'applicazione richiede l\'accesso ad internet? diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8c5071ec..fa321c9e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters なぜアプリ使用にインターネットへのアクセスが必要なのですか? diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index ea039ad8..542561ea 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Why does the app require access to the internet? diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 366149ef..f6d9e372 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters അപ്ലിക്കേഷന് ഇന്റർനെറ്റിലേക്ക് ആവശ്യമായി വരുന്നത് എന്തുകൊണ്ട്? diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 0f9e313a..eebdf894 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -49,6 +49,7 @@ Afzender en bericht Alleen afzender Bezorgingsrapporten inschakelen + Use simple characters Waarom heeft deze app toegang nodig tot het internet? diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 7bc60f8a..b4705dc0 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -51,6 +51,7 @@ Nadawca i treść Tylko nadawca Włącz raporty doręczeń + Używaj prostych znaków Dlaczego aplikacja wymaga dostępu do Internetu? diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index f6cf255b..c4d133b0 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Porque é que a aplicação necessita de aceder à Internet? diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f6944577..2ac76d52 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -51,6 +51,7 @@ Отправитель и сообщение Только отправитель Использовать отчёты о доставке + Use simple characters Почему приложение требует доступ к интернету? diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index f1092bb8..b3c06f1e 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -51,6 +51,7 @@ Odosielateľ a správa Iba odosielateľ Povoliť správy o doručení + Use simple characters Prečo vyžaduje apka prístup na internet? diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index f7a3224e..5785eeda 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Uygulama neden internete erişim gerektiriyor? diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index b0a239d0..a2156150 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Чому додаток потрубує доступу до інтернету? diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b6542e07..9a49e535 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters 为什么该应用需要访问互联网? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a85b6837..68b1c3d0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,6 +49,7 @@ Sender and message Sender only Enable delivery reports + Use simple characters Why does the app require access to the internet?