From b4b6610918115e806fc7bb146e839e918b3b7174 Mon Sep 17 00:00:00 2001 From: Pavel Poley Date: Mon, 16 May 2022 17:19:25 +0300 Subject: [PATCH] show more options at clicking a call history item --- .../dialer/adapters/RecentCallsAdapter.kt | 69 ++++++++++++++++++- app/src/main/res/layout/item_recent_call.xml | 20 +++++- .../res/menu/menu_recent_item_options.xml | 19 +++++ 3 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/menu/menu_recent_item_options.xml 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 26cfa3f5..af7e990e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt @@ -6,9 +6,8 @@ import android.provider.CallLog.Calls import android.text.SpannableString import android.text.TextUtils import android.util.TypedValue -import android.view.Menu -import android.view.View -import android.view.ViewGroup +import android.view.* +import android.widget.PopupMenu import com.bumptech.glide.Glide import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog @@ -21,6 +20,7 @@ import com.simplemobiletools.dialer.dialogs.ShowGroupedCallsDialog import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable import com.simplemobiletools.dialer.extensions.callContactWithSim import com.simplemobiletools.dialer.extensions.config +import com.simplemobiletools.dialer.extensions.startCallIntent import com.simplemobiletools.dialer.helpers.RecentsHelper import com.simplemobiletools.dialer.interfaces.RefreshItemsListener import com.simplemobiletools.dialer.models.RecentCall @@ -125,6 +125,11 @@ class RecentCallsAdapter( activity.callContactWithSim(phoneNumber, useSimOne) } + private fun callContact() { + val phoneNumber = getSelectedPhoneNumber() ?: return + (activity as SimpleActivity).startCallIntent(phoneNumber) + } + private fun removeDefaultSIM() { val phoneNumber = getSelectedPhoneNumber() ?: return activity.config.removeCustomSIM("tel:$phoneNumber") @@ -298,6 +303,64 @@ class RecentCallsAdapter( } item_recents_type.setImageDrawable(drawable) + + overflow_menu_icon.drawable.apply { + mutate() + setTint(activity.getProperTextColor()) + } + + overflow_menu_icon.setOnClickListener { + showPopupMenu(overflow_menu_anchor, call) + } } } + + private fun showPopupMenu(view: View, call: RecentCall) { + finishActMode() + val theme = activity.getPopupMenuTheme() + val contextTheme = ContextThemeWrapper(activity, theme) + + PopupMenu(contextTheme, view, Gravity.END).apply { + inflate(R.menu.menu_recent_item_options) + menu.apply { + val areMultipleSIMsAvailable = activity.areMultipleSIMsAvailable() + findItem(R.id.cab_call).isVisible = !areMultipleSIMsAvailable + findItem(R.id.cab_call_sim_1).isVisible = areMultipleSIMsAvailable + findItem(R.id.cab_call_sim_2).isVisible = areMultipleSIMsAvailable + } + setOnMenuItemClickListener { item -> + val callId = call.id + when (item.itemId) { + R.id.cab_call -> { + executeItemMenuOperation(callId) { + callContact() + } + } + R.id.cab_call_sim_1 -> { + executeItemMenuOperation(callId) { + callContact(true) + } + } + R.id.cab_call_sim_2 -> { + executeItemMenuOperation(callId) { + callContact(false) + } + } + R.id.cab_send_sms -> { + executeItemMenuOperation(callId) { + sendSMS() + } + } + } + true + } + show() + } + } + + private fun executeItemMenuOperation(callId: Int, callback: () -> Unit) { + selectedKeys.add(callId) + callback() + selectedKeys.remove(callId) + } } diff --git a/app/src/main/res/layout/item_recent_call.xml b/app/src/main/res/layout/item_recent_call.xml index 8f5f45b0..fe08f86e 100644 --- a/app/src/main/res/layout/item_recent_call.xml +++ b/app/src/main/res/layout/item_recent_call.xml @@ -14,7 +14,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="@dimen/medium_margin" - android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin"> + + + diff --git a/app/src/main/res/menu/menu_recent_item_options.xml b/app/src/main/res/menu/menu_recent_item_options.xml new file mode 100644 index 00000000..709794e5 --- /dev/null +++ b/app/src/main/res/menu/menu_recent_item_options.xml @@ -0,0 +1,19 @@ + + + + + + +