package com.simplemobiletools.contacts.fragments import android.content.Context import android.content.Intent import android.util.AttributeSet import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.hasPermission import com.simplemobiletools.commons.extensions.isActivityDestroyed import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG import com.simplemobiletools.contacts.activities.EditContactActivity import com.simplemobiletools.contacts.adapters.RecentCallsAdapter import com.simplemobiletools.contacts.extensions.contactClicked import com.simplemobiletools.contacts.helpers.IS_FROM_SIMPLE_CONTACTS import com.simplemobiletools.contacts.helpers.KEY_PHONE import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN import com.simplemobiletools.contacts.helpers.RECENTS_TAB_MASK import com.simplemobiletools.contacts.models.Contact import com.simplemobiletools.contacts.models.RecentCall import kotlinx.android.synthetic.main.fragment_layout.view.* class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) { override fun fabClicked() {} override fun placeholderClicked() { activity!!.handlePermission(PERMISSION_WRITE_CALL_LOG) { if (it) { activity!!.handlePermission(PERMISSION_READ_CALL_LOG) { activity?.refreshContacts(RECENTS_TAB_MASK) } } } } fun updateRecentCalls(recentCalls: ArrayList) { if (activity == null || activity!!.isActivityDestroyed()) { return } fragment_placeholder.beVisibleIf(recentCalls.isEmpty()) fragment_placeholder_2.beVisibleIf(recentCalls.isEmpty() && !activity!!.hasPermission(PERMISSION_WRITE_CALL_LOG)) fragment_list.beVisibleIf(recentCalls.isNotEmpty()) val currAdapter = fragment_list.adapter if (currAdapter == null) { RecentCallsAdapter(activity!!, recentCalls, activity, fragment_list, fragment_fastscroller) { val recentCall = (it as RecentCall).number.replace(PHONE_NUMBER_PATTERN.toRegex(), "") var selectedContact: Contact? = null for (contact in allContacts) { if (contact.phoneNumbers.any { it.value.replace(PHONE_NUMBER_PATTERN.toRegex(), "") == recentCall }) { selectedContact = contact break } } if (selectedContact != null) { activity?.contactClicked(selectedContact) } else { Intent(context, EditContactActivity::class.java).apply { action = Intent.ACTION_INSERT putExtra(KEY_PHONE, recentCall) putExtra(IS_FROM_SIMPLE_CONTACTS, true) context.startActivity(this) } } }.apply { addVerticalDividers(true) fragment_list.adapter = this } fragment_fastscroller.setViews(fragment_list) { val item = (fragment_list.adapter as RecentCallsAdapter).recentCalls.getOrNull(it) fragment_fastscroller.updateBubbleText(item?.name ?: item?.number ?: "") } } else { (currAdapter as RecentCallsAdapter).updateItems(recentCalls) } } }