79 lines
3.5 KiB
Kotlin
79 lines
3.5 KiB
Kotlin
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<RecentCall>) {
|
|
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)
|
|
}
|
|
}
|
|
}
|