mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-04-25 07:18:43 +02:00
fix #115, add an option to show grouped calls
This commit is contained in:
parent
f55bbfd96d
commit
82e39ac8ad
@ -17,6 +17,7 @@ import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||
import com.simplemobiletools.dialer.R
|
||||
import com.simplemobiletools.dialer.activities.SimpleActivity
|
||||
import com.simplemobiletools.dialer.dialogs.ShowGroupedCallsDialog
|
||||
import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable
|
||||
import com.simplemobiletools.dialer.extensions.callContactWithSim
|
||||
import com.simplemobiletools.dialer.extensions.config
|
||||
@ -26,7 +27,7 @@ import com.simplemobiletools.dialer.models.RecentCall
|
||||
import kotlinx.android.synthetic.main.item_recent_call.view.*
|
||||
import java.util.*
|
||||
|
||||
class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<RecentCall>, recyclerView: MyRecyclerView, val refreshItemsListener: RefreshItemsListener,
|
||||
class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<RecentCall>, recyclerView: MyRecyclerView, val refreshItemsListener: RefreshItemsListener?,
|
||||
itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) {
|
||||
|
||||
private lateinit var outgoingCallIcon: Drawable
|
||||
@ -97,7 +98,7 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val recentCall = recentCalls[position]
|
||||
holder.bindView(recentCall, true, true) { itemView, layoutPosition ->
|
||||
holder.bindView(recentCall, refreshItemsListener != null, refreshItemsListener != null) { itemView, layoutPosition ->
|
||||
setupView(itemView, recentCall)
|
||||
}
|
||||
bindViewHolder(holder)
|
||||
@ -182,7 +183,10 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
||||
}
|
||||
|
||||
private fun showGroupedCalls() {
|
||||
|
||||
val recentCall = getSelectedItems().firstOrNull() ?: return
|
||||
val callIds = recentCall.neighbourIDs.map { it }.toMutableList() as ArrayList<Int>
|
||||
callIds.add(recentCall.id)
|
||||
ShowGroupedCallsDialog(activity, callIds)
|
||||
}
|
||||
|
||||
private fun copyNumber() {
|
||||
@ -216,7 +220,7 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
||||
recentCalls.removeAll(callsToRemove)
|
||||
activity.runOnUiThread {
|
||||
if (recentCalls.isEmpty()) {
|
||||
refreshItemsListener.refreshItems()
|
||||
refreshItemsListener?.refreshItems()
|
||||
finishActMode()
|
||||
} else {
|
||||
removeSelectedItems(positions)
|
||||
|
@ -0,0 +1,37 @@
|
||||
package com.simplemobiletools.dialer.dialogs
|
||||
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.dialer.R
|
||||
import com.simplemobiletools.dialer.activities.SimpleActivity
|
||||
import com.simplemobiletools.dialer.adapters.RecentCallsAdapter
|
||||
import com.simplemobiletools.dialer.helpers.RecentsHelper
|
||||
import com.simplemobiletools.dialer.models.RecentCall
|
||||
import kotlinx.android.synthetic.main.dialog_show_grouped_calls.view.*
|
||||
import java.util.*
|
||||
|
||||
class ShowGroupedCallsDialog(val activity: BaseSimpleActivity, callIds: ArrayList<Int>) {
|
||||
private var dialog: AlertDialog? = null
|
||||
private var view = activity.layoutInflater.inflate(R.layout.dialog_show_grouped_calls, null)
|
||||
|
||||
init {
|
||||
view.apply {
|
||||
RecentsHelper(activity).getRecentCalls(false) { allRecents ->
|
||||
val recents = allRecents.filter { callIds.contains(it.id) }.toMutableList() as ArrayList<RecentCall>
|
||||
activity.runOnUiThread {
|
||||
RecentCallsAdapter(activity as SimpleActivity, recents, select_grouped_calls_list, null) {
|
||||
|
||||
}.apply {
|
||||
select_grouped_calls_list.adapter = this
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dialog = AlertDialog.Builder(activity)
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
}
|
||||
}
|
||||
}
|
@ -46,7 +46,8 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
|
||||
override fun refreshItems() {
|
||||
val privateCursor = context?.getMyContactsCursor()?.loadInBackground()
|
||||
RecentsHelper(context).getRecentCalls { recents ->
|
||||
val groupSubsequentCalls = context?.config?.groupSubsequentCalls ?: false
|
||||
RecentsHelper(context).getRecentCalls(groupSubsequentCalls) { recents ->
|
||||
SimpleContactsHelper(context).getAvailableContacts(false) { contacts ->
|
||||
val privateContacts = MyContactsContentProvider.getSimpleContacts(context, privateCursor)
|
||||
|
||||
@ -105,7 +106,8 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
recents_placeholder.text = context.getString(R.string.no_previous_calls)
|
||||
recents_placeholder_2.beGone()
|
||||
|
||||
RecentsHelper(context).getRecentCalls { recents ->
|
||||
val groupSubsequentCalls = context?.config?.groupSubsequentCalls ?: false
|
||||
RecentsHelper(context).getRecentCalls(groupSubsequentCalls) { recents ->
|
||||
activity?.runOnUiThread {
|
||||
gotRecents(recents)
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ class RecentsHelper(private val context: Context) {
|
||||
private val COMPARABLE_PHONE_NUMBER_LENGTH = 9
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
fun getRecentCalls(callback: (ArrayList<RecentCall>) -> Unit) {
|
||||
fun getRecentCalls(groupSubsequentCalls: Boolean, callback: (ArrayList<RecentCall>) -> Unit) {
|
||||
val privateCursor = context.getMyContactsCursor()?.loadInBackground()
|
||||
ensureBackgroundThread {
|
||||
if (!context.hasPermission(PERMISSION_READ_CALL_LOG)) {
|
||||
@ -28,16 +28,15 @@ class RecentsHelper(private val context: Context) {
|
||||
contacts.addAll(privateContacts)
|
||||
}
|
||||
|
||||
getRecents(contacts, callback)
|
||||
getRecents(contacts, groupSubsequentCalls, callback)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getRecents(contacts: ArrayList<SimpleContact>, callback: (ArrayList<RecentCall>) -> Unit) {
|
||||
private fun getRecents(contacts: ArrayList<SimpleContact>, groupSubsequentCalls: Boolean, callback: (ArrayList<RecentCall>) -> Unit) {
|
||||
var recentCalls = ArrayList<RecentCall>()
|
||||
var previousRecentCallFrom = ""
|
||||
val contactsNumbersMap = HashMap<String, String>()
|
||||
val groupSubsequentCalls = context.config.groupSubsequentCalls
|
||||
val uri = Calls.CONTENT_URI
|
||||
val projection = arrayOf(
|
||||
Calls._ID,
|
||||
|
17
app/src/main/res/layout/dialog_show_grouped_calls.xml
Normal file
17
app/src/main/res/layout/dialog_show_grouped_calls.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/select_grouped_calls_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/select_grouped_calls_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||
|
||||
</RelativeLayout>
|
Loading…
x
Reference in New Issue
Block a user