From cc2a4e596f600ea70fcecc79febbe92ed3fabf61 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 3 May 2020 23:12:00 +0200 Subject: [PATCH] remember the last used SIM card on a per-number basis --- .../smsmessenger/activities/ThreadActivity.kt | 19 +++++++++++++++---- .../smsmessenger/extensions/Collections.kt | 11 +++++++++++ .../smsmessenger/helpers/Config.kt | 6 ++++++ .../smsmessenger/helpers/Constants.kt | 5 +---- 4 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Collections.kt 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 c6d67219..de0a80c7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -1,5 +1,6 @@ package com.simplemobiletools.smsmessenger.activities +import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.graphics.BitmapFactory @@ -146,6 +147,8 @@ class ThreadActivity : SimpleActivity() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE) thread_type_message.requestFocus() } + + setupSIMSelector() } } setupButtons() @@ -265,7 +268,10 @@ class ThreadActivity : SimpleActivity() { addAttachment(it) } } + } + @SuppressLint("MissingPermission") + private fun setupSIMSelector() { val availableSIMs = SubscriptionManager.from(this).activeSubscriptionInfoList if (availableSIMs.size > 1) { availableSIMs.forEachIndexed { index, subscriptionInfo -> @@ -277,8 +283,10 @@ class ThreadActivity : SimpleActivity() { availableSIMCards.add(SIMCard) } - currentSIMCardIndex = 0 - thread_select_sim_icon.applyColorFilter(textColor) + val numbers = participants.map { it.phoneNumber }.toTypedArray() + currentSIMCardIndex = availableSIMs.indexOfFirstOrNull { it.subscriptionId == config.getUseSIMIdAtNumber(numbers.first()) } ?: 0 + + thread_select_sim_icon.applyColorFilter(config.textColor) thread_select_sim_icon.beVisible() thread_select_sim_number.beVisible() @@ -291,8 +299,8 @@ class ThreadActivity : SimpleActivity() { } } - thread_select_sim_number.setTextColor(textColor.getContrastColor()) - thread_select_sim_number.text = "1" + thread_select_sim_number.setTextColor(config.textColor.getContrastColor()) + thread_select_sim_number.text = (availableSIMCards[currentSIMCardIndex].id).toString() } } @@ -469,6 +477,9 @@ class ThreadActivity : SimpleActivity() { val SIMId = availableSIMCards.getOrNull(currentSIMCardIndex)?.subscriptionId if (SIMId != null) { settings.subscriptionId = SIMId + numbers.forEach { + config.saveUseSIMIdAtNumber(it, SIMId) + } } val transaction = Transaction(this, settings) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Collections.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Collections.kt new file mode 100644 index 00000000..bc2acca7 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Collections.kt @@ -0,0 +1,11 @@ +package com.simplemobiletools.smsmessenger.extensions + +inline fun List.indexOfFirstOrNull(predicate: (T) -> Boolean): Int? { + var index = 0 + for (item in this) { + if (predicate(item)) + return index + index++ + } + return null +} 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 6e7aad09..c5e95e68 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt @@ -7,4 +7,10 @@ class Config(context: Context) : BaseConfig(context) { companion object { fun newInstance(context: Context) = Config(context) } + + fun saveUseSIMIdAtNumber(number: String, SIMId: Int) { + prefs.edit().putInt(USE_SIM_ID_PREFIX + number, SIMId).apply() + } + + fun getUseSIMIdAtNumber(number: String) = prefs.getInt(USE_SIM_ID_PREFIX + number, 0) } 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 fc9bc46c..33fb77fd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -9,6 +9,7 @@ const val THREAD_TEXT = "thread_text" const val THREAD_NUMBER = "thread_number" const val THREAD_ATTACHMENT_URI = "thread_attachment_uri" const val THREAD_ATTACHMENT_URIS = "thread_attachment_uris" +const val USE_SIM_ID_PREFIX = "use_sim_id_" // view types for the thread list view const val THREAD_DATE_TIME = 1 @@ -16,10 +17,6 @@ const val THREAD_RECEIVED_MESSAGE = 2 const val THREAD_SENT_MESSAGE = 3 const val THREAD_SENT_MESSAGE_ERROR = 4 -// constants used at passing info to SmsSentReceiver -const val MESSAGE_BODY = "message_body" -const val MESSAGE_ADDRESS = "message_address" - fun refreshMessages() { EventBus.getDefault().post(Events.RefreshMessages()) }