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 91479189..0120a314 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt @@ -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, recyclerView: MyRecyclerView, val refreshItemsListener: RefreshItemsListener, +class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList, 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 + 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 + callIds.add(recentCall.id) + ShowGroupedCallsDialog(activity, callIds) } private fun copyNumber() { @@ -216,7 +220,7 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList) { + 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 + 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) + } + } +} 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 e40350bd..963f15df 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt @@ -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) } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt index bda876d2..a6990e0f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt @@ -14,7 +14,7 @@ class RecentsHelper(private val context: Context) { private val COMPARABLE_PHONE_NUMBER_LENGTH = 9 @SuppressLint("MissingPermission") - fun getRecentCalls(callback: (ArrayList) -> Unit) { + fun getRecentCalls(groupSubsequentCalls: Boolean, callback: (ArrayList) -> 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, callback: (ArrayList) -> Unit) { + private fun getRecents(contacts: ArrayList, groupSubsequentCalls: Boolean, callback: (ArrayList) -> Unit) { var recentCalls = ArrayList() var previousRecentCallFrom = "" val contactsNumbersMap = HashMap() - val groupSubsequentCalls = context.config.groupSubsequentCalls val uri = Calls.CONTENT_URI val projection = arrayOf( Calls._ID, diff --git a/app/src/main/res/layout/dialog_show_grouped_calls.xml b/app/src/main/res/layout/dialog_show_grouped_calls.xml new file mode 100644 index 00000000..e4a4a6e0 --- /dev/null +++ b/app/src/main/res/layout/dialog_show_grouped_calls.xml @@ -0,0 +1,17 @@ + + + + + +