update fragments when necessary

This commit is contained in:
tibbi 2020-05-11 12:20:38 +02:00
parent 7ed54611cd
commit 8dcd610811
7 changed files with 51 additions and 26 deletions

View File

@ -15,7 +15,8 @@ import com.simplemobiletools.dialer.BuildConfig
import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.adapters.ViewPagerAdapter import com.simplemobiletools.dialer.adapters.ViewPagerAdapter
import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.helpers.* import com.simplemobiletools.dialer.helpers.RecentsHelper
import com.simplemobiletools.dialer.helpers.tabsList
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_contacts.* import kotlinx.android.synthetic.main.fragment_contacts.*
import kotlinx.android.synthetic.main.fragment_recents.* import kotlinx.android.synthetic.main.fragment_recents.*
@ -23,6 +24,7 @@ import kotlinx.android.synthetic.main.fragment_recents.*
class MainActivity : SimpleActivity() { class MainActivity : SimpleActivity() {
private var storedTextColor = 0 private var storedTextColor = 0
private var storedPrimaryColor = 0 private var storedPrimaryColor = 0
private var wasFragmentInit = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -67,6 +69,10 @@ class MainActivity : SimpleActivity() {
it?.primaryColorChanged(configPrimaryColor) it?.primaryColorChanged(configPrimaryColor)
} }
} }
if (wasFragmentInit) {
refreshItems()
}
} }
override fun onPause() { override fun onPause() {
@ -154,7 +160,7 @@ class MainActivity : SimpleActivity() {
}) })
viewpager.onGlobalLayout { viewpager.onGlobalLayout {
refreshItems(ALL_TABS_MASK) refreshItems()
} }
main_tabs_holder.onTabSelectionChanged( main_tabs_holder.onTabSelectionChanged(
@ -186,6 +192,8 @@ class MainActivity : SimpleActivity() {
startActivity(this) startActivity(this)
} }
} }
wasFragmentInit = true
} }
private fun getTabIcon(position: Int): Drawable { private fun getTabIcon(position: Int): Drawable {
@ -197,7 +205,7 @@ class MainActivity : SimpleActivity() {
return resources.getColoredDrawableWithColor(drawableId, config.textColor) return resources.getColoredDrawableWithColor(drawableId, config.textColor)
} }
fun refreshItems(refreshTabsMask: Int) { private fun refreshItems() {
if (isDestroyed || isFinishing) { if (isDestroyed || isFinishing) {
return return
} }
@ -207,19 +215,15 @@ class MainActivity : SimpleActivity() {
viewpager.currentItem = config.lastUsedViewPagerPage viewpager.currentItem = config.lastUsedViewPagerPage
} }
if (refreshTabsMask and CONTACTS_TAB_MASK != 0) { SimpleContactsHelper(this).getAvailableContacts { contacts ->
SimpleContactsHelper(this).getAvailableContacts { contacts -> runOnUiThread {
runOnUiThread { contacts_fragment.refreshContacts(contacts)
contacts_fragment.refreshContacts(contacts)
}
} }
} }
if (refreshTabsMask and RECENTS_TAB_MASK != 0) { RecentsHelper(this).getRecentCalls { recents ->
RecentsHelper(this).getRecentCalls { recents -> runOnUiThread {
runOnUiThread { recents_fragment.updateRecents(recents)
recents_fragment.updateRecents(recents)
}
} }
} }
} }

View File

@ -66,7 +66,6 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
textToHighlight = highlightText textToHighlight = highlightText
notifyDataSetChanged() notifyDataSetChanged()
} }
fastScroller?.measureRecyclerView()
} }
override fun onViewRecycled(holder: ViewHolder) { override fun onViewRecycled(holder: ViewHolder) {

View File

@ -71,6 +71,14 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
outgoingCallIcon = activity.resources.getColoredDrawableWithColor(R.drawable.ic_outgoing_call_vector, activity.config.textColor) outgoingCallIcon = activity.resources.getColoredDrawableWithColor(R.drawable.ic_outgoing_call_vector, activity.config.textColor)
} }
fun updateItems(newItems: ArrayList<RecentCall>) {
if (newItems.hashCode() != recentCalls.hashCode()) {
recentCalls = newItems.clone() as ArrayList<RecentCall>
notifyDataSetChanged()
finishActMode()
}
}
private fun setupView(view: View, call: RecentCall) { private fun setupView(view: View, call: RecentCall) {
view.apply { view.apply {
item_recents_name.apply { item_recents_name.apply {

View File

@ -81,12 +81,18 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
fragment_placeholder.beGone() fragment_placeholder.beGone()
fragment_placeholder_2.beGone() fragment_placeholder_2.beGone()
fragment_list.beVisible() fragment_list.beVisible()
ContactsAdapter(activity as SimpleActivity, contacts, fragment_list) {
val lookupKey = SimpleContactsHelper(activity!!).getContactLookupKey((it as SimpleContact).rawId.toString()) val currAdapter = fragment_list.adapter
val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) if (currAdapter == null) {
activity!!.launchViewContactIntent(publicUri) ContactsAdapter(activity as SimpleActivity, contacts, fragment_list) {
}.apply { val lookupKey = SimpleContactsHelper(activity!!).getContactLookupKey((it as SimpleContact).rawId.toString())
fragment_list.adapter = this val publicUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey)
activity!!.launchViewContactIntent(publicUri)
}.apply {
fragment_list.adapter = this
}
} else {
(currAdapter as ContactsAdapter).updateItems(contacts)
} }
} }
} }

View File

@ -8,6 +8,7 @@ import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.helpers.Config import com.simplemobiletools.dialer.helpers.Config
import kotlinx.android.synthetic.main.fragment_letters_layout.view.* import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
import kotlinx.android.synthetic.main.fragment_recents.view.*
abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) {
protected var activity: SimpleActivity? = null protected var activity: SimpleActivity? = null
@ -24,7 +25,8 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
} }
fun finishActMode() { fun finishActMode() {
(fragment_list.adapter as? MyRecyclerViewAdapter)?.finishActMode() (fragment_list?.adapter as? MyRecyclerViewAdapter)?.finishActMode()
(recents_list?.adapter as? MyRecyclerViewAdapter)?.finishActMode()
} }
abstract fun setupFragment() abstract fun setupFragment()

View File

@ -6,6 +6,7 @@ import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG
import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.ContactsAdapter
import com.simplemobiletools.dialer.adapters.RecentCallsAdapter import com.simplemobiletools.dialer.adapters.RecentCallsAdapter
import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.helpers.RecentsHelper import com.simplemobiletools.dialer.helpers.RecentsHelper
@ -48,10 +49,16 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
recents_placeholder.beGone() recents_placeholder.beGone()
recents_placeholder_2.beGone() recents_placeholder_2.beGone()
recents_list.beVisible() recents_list.beVisible()
RecentCallsAdapter(activity as SimpleActivity, recents, recents_list) {
activity?.launchCallIntent((it as RecentCall).phoneNumber) val currAdapter = recents_list.adapter
}.apply { if (currAdapter == null) {
recents_list.adapter = this RecentCallsAdapter(activity as SimpleActivity, recents, recents_list) {
activity?.launchCallIntent((it as RecentCall).phoneNumber)
}.apply {
recents_list.adapter = this
}
} else {
(currAdapter as RecentCallsAdapter).updateItems(recents)
} }
} }
} }

View File

@ -7,7 +7,6 @@ const val REMEMBER_SIM_PREFIX = "remember_sim_"
const val CONTACTS_TAB_MASK = 1 const val CONTACTS_TAB_MASK = 1
const val FAVORITES_TAB_MASK = 2 const val FAVORITES_TAB_MASK = 2
const val RECENTS_TAB_MASK = 4 const val RECENTS_TAB_MASK = 4
const val ALL_TABS_MASK = CONTACTS_TAB_MASK or FAVORITES_TAB_MASK or RECENTS_TAB_MASK
val tabsList = arrayListOf(CONTACTS_TAB_MASK, RECENTS_TAB_MASK) val tabsList = arrayListOf(CONTACTS_TAB_MASK, RECENTS_TAB_MASK)