From 496a5469ae6bff0efe34f09e13c9c0c06545787b Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 11 May 2020 11:49:55 +0200 Subject: [PATCH] properly update all colors if needed --- .../dialer/activities/MainActivity.kt | 40 ++++++++++++++++++- .../dialer/adapters/RecentCallsAdapter.kt | 14 ++++++- .../dialer/fragments/ContactsFragment.kt | 12 ++++++ .../dialer/fragments/MyViewPagerFragment.kt | 4 ++ .../dialer/fragments/RecentsFragment.kt | 9 +++++ 5 files changed, 76 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 9fa4a2c4..7824d445 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -21,11 +21,15 @@ import kotlinx.android.synthetic.main.fragment_contacts.* import kotlinx.android.synthetic.main.fragment_recents.* class MainActivity : SimpleActivity() { + private var storedTextColor = 0 + private var storedPrimaryColor = 0 + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) appLaunched(BuildConfig.APPLICATION_ID) setupTabColors() + storeStateVariables() if (isDefaultDialer()) { checkContactPermissions() @@ -41,6 +45,33 @@ class MainActivity : SimpleActivity() { setImageDrawable(dialpadIcon) background.applyColorFilter(getAdjustedPrimaryColor()) } + + main_tabs_holder.setBackgroundColor(config.backgroundColor) + + val configTextColor = config.textColor + if (storedTextColor != configTextColor) { + getInactiveTabIndexes(viewpager.currentItem).forEach { + main_tabs_holder.getTabAt(it)?.icon?.applyColorFilter(configTextColor) + } + + getAllFragments().forEach { + it?.textColorChanged(configTextColor) + } + } + + val configPrimaryColor = config.primaryColor + if (storedPrimaryColor != configPrimaryColor) { + main_tabs_holder.setSelectedTabIndicatorColor(getAdjustedPrimaryColor()) + main_tabs_holder.getTabAt(viewpager.currentItem)?.icon?.applyColorFilter(getAdjustedPrimaryColor()) + getAllFragments().forEach { + it?.primaryColorChanged(configPrimaryColor) + } + } + } + + override fun onPause() { + super.onPause() + storeStateVariables() } override fun onDestroy() { @@ -71,6 +102,13 @@ class MainActivity : SimpleActivity() { } } + private fun storeStateVariables() { + config.apply { + storedTextColor = textColor + storedPrimaryColor = primaryColor + } + } + private fun checkContactPermissions() { handlePermission(PERMISSION_READ_CONTACTS) { if (it) { @@ -186,7 +224,7 @@ class MainActivity : SimpleActivity() { } } - private fun getAllFragments() = arrayListOf(contacts_fragment) + private fun getAllFragments() = arrayListOf(contacts_fragment, recents_fragment) private fun launchAbout() { val licenses = LICENSE_GLIDE or LICENSE_INDICATOR_FAST_SCROLL diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt index 58d43b44..2deeaf8d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt @@ -1,5 +1,6 @@ package com.simplemobiletools.dialer.adapters +import android.graphics.drawable.Drawable import android.provider.CallLog.Calls import android.util.TypedValue import android.view.Menu @@ -20,10 +21,14 @@ import java.util.* class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { - private val incomingCallIcon = activity.resources.getColoredDrawableWithColor(R.drawable.ic_incoming_call_vector, activity.config.textColor) - private val outgoingCallIcon = activity.resources.getColoredDrawableWithColor(R.drawable.ic_outgoing_call_vector, activity.config.textColor) + private lateinit var incomingCallIcon: Drawable + private lateinit var outgoingCallIcon: Drawable private var fontSize = activity.getTextSize() + init { + initDrawables() + } + override fun getActionMenuId() = 0 override fun prepareActionMode(menu: Menu) {} @@ -61,6 +66,11 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList) { setupLetterFastscroller(contacts) if (contacts.isEmpty()) { diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt index 4190cd5f..812ba7b7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt @@ -28,4 +28,8 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } abstract fun setupFragment() + + abstract fun textColorChanged(color: Int) + + abstract fun primaryColorChanged(color: Int) } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt index cf3ab43b..284d8956 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt @@ -30,6 +30,15 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage } } + override fun textColorChanged(color: Int) { + (recents_list?.adapter as? RecentCallsAdapter)?.apply { + initDrawables() + updateTextColor(color) + } + } + + override fun primaryColorChanged(color: Int) {} + fun updateRecents(recents: ArrayList) { if (recents.isEmpty()) { recents_placeholder.beVisible()