From 4e0eee5ea1b2c992a2f0fd21b2405b3826fcbdd2 Mon Sep 17 00:00:00 2001 From: Naveen Singh <36371707+naveensingh@users.noreply.github.com> Date: Thu, 5 Jun 2025 19:30:00 +0530 Subject: [PATCH] feat: improve SIM color visibility (#416) * feat: improve SIM color visibility * style: format code --- .../org/fossify/phone/activities/CallActivity.kt | 4 +++- .../fossify/phone/adapters/RecentCallsAdapter.kt | 12 ++++++++++-- .../org/fossify/phone/extensions/Context.kt | 16 ++++++++++++---- app/src/main/res/layout/item_recent_call.xml | 1 - gradle/libs.versions.toml | 2 +- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt b/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt index ab076dda..3d09d100 100644 --- a/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt +++ b/app/src/main/kotlin/org/fossify/phone/activities/CallActivity.kt @@ -625,7 +625,9 @@ class CallActivity : SimpleActivity() { callSimId.text = sim.id.toString() callSimId.beVisible() callSimImage.beVisible() - callSimImage.applyColorFilter(sim.color.adjustSimColorForBackground(getProperBackgroundColor())) + val simColor = sim.color.adjustForContrast(getProperBackgroundColor()) + callSimId.setTextColor(simColor.getContrastColor()) + callSimImage.applyColorFilter(simColor) } val acceptDrawableId = when (index) { diff --git a/app/src/main/kotlin/org/fossify/phone/adapters/RecentCallsAdapter.kt b/app/src/main/kotlin/org/fossify/phone/adapters/RecentCallsAdapter.kt index 92a58f0e..fa722339 100644 --- a/app/src/main/kotlin/org/fossify/phone/adapters/RecentCallsAdapter.kt +++ b/app/src/main/kotlin/org/fossify/phone/adapters/RecentCallsAdapter.kt @@ -57,6 +57,7 @@ class RecentCallsAdapter( private var durationPadding = resources.getDimension(R.dimen.normal_margin).toInt() private var phoneNumberUtilInstance: PhoneNumberUtil = PhoneNumberUtil.getInstance() private var phoneNumberOfflineGeocoderInstance: PhoneNumberOfflineGeocoder = PhoneNumberOfflineGeocoder.getInstance() + private val cachedSimColors = HashMap, Int>() init { initDrawables() @@ -537,8 +538,9 @@ class RecentCallsAdapter( itemRecentsSimImage.beVisibleIf(areMultipleSIMsAvailable && call.simID != -1) itemRecentsSimId.beVisibleIf(areMultipleSIMsAvailable && call.simID != -1) if (areMultipleSIMsAvailable && call.simID != -1) { - itemRecentsSimImage.applyColorFilter(call.simColor.adjustSimColorForBackground(backgroundColor)) - itemRecentsSimId.setTextColor(backgroundColor) + val simColor = getAdjustedSimColor(call.simColor) + itemRecentsSimImage.applyColorFilter(simColor) + itemRecentsSimId.setTextColor(simColor.getContrastColor()) itemRecentsSimId.text = call.simID.toString() } @@ -583,6 +585,12 @@ class RecentCallsAdapter( } } + private fun getAdjustedSimColor(simColor: Int): Int { + return cachedSimColors.getOrPut(simColor to backgroundColor) { + simColor.adjustForContrast(backgroundColor) + } + } + private inner class RecentCallDateViewHolder(val binding: ItemRecentsDateBinding) : ViewHolder(binding.root) { fun bind(date: CallLogItem.Date) { binding.dateTextView.apply { diff --git a/app/src/main/kotlin/org/fossify/phone/extensions/Context.kt b/app/src/main/kotlin/org/fossify/phone/extensions/Context.kt index dbbf8412..671574f9 100644 --- a/app/src/main/kotlin/org/fossify/phone/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/phone/extensions/Context.kt @@ -18,7 +18,7 @@ val Context.powerManager: PowerManager get() = getSystemService(Context.POWER_SE @SuppressLint("MissingPermission") fun Context.getAvailableSIMCardLabels(): List { - val SIMAccounts = mutableListOf() + val simAccounts = mutableListOf() try { telecomManager.callCapablePhoneAccounts.forEachIndexed { index, account -> val phoneAccount = telecomManager.getPhoneAccount(account) @@ -29,12 +29,20 @@ fun Context.getAvailableSIMCardLabels(): List { label += " ($address)" } - val SIM = SIMAccount(index + 1, phoneAccount.accountHandle, label, address.substringAfter("tel:"), phoneAccount.highlightColor) - SIMAccounts.add(SIM) + simAccounts.add( + SIMAccount( + id = index + 1, + handle = phoneAccount.accountHandle, + label = label, + phoneNumber = address.substringAfter("tel:"), + color = phoneAccount.highlightColor + ) + ) } } catch (ignored: Exception) { } - return SIMAccounts + + return simAccounts } @SuppressLint("MissingPermission") diff --git a/app/src/main/res/layout/item_recent_call.xml b/app/src/main/res/layout/item_recent_call.xml index 7455d02d..66ed6420 100644 --- a/app/src/main/res/layout/item_recent_call.xml +++ b/app/src/main/res/layout/item_recent_call.xml @@ -63,7 +63,6 @@ android:gravity="center" android:textColor="@color/md_grey_black" android:textSize="@dimen/small_text_size" - android:textStyle="bold" android:visibility="gone" app:layout_constraintBottom_toBottomOf="@+id/item_recents_sim_image" app:layout_constraintEnd_toEndOf="@+id/item_recents_sim_image" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9525b5a4..94632b5f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,7 @@ detekt = "1.23.8" #Eventbus eventbus = "3.3.1" #Fossify -commons = "3.0.1" +commons = "3.0.3" #Gradle gradlePlugins-agp = "8.10.1" #Other