show more options at clicking a call history item

This commit is contained in:
Pavel Poley 2022-05-16 17:19:25 +03:00
parent 0bcc9d5cb4
commit b4b6610918
3 changed files with 103 additions and 5 deletions

View File

@ -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)
}
}

View File

@ -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">
<ImageView
@ -31,6 +30,8 @@
android:id="@+id/item_recents_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_toStartOf="@+id/overflow_menu_icon"
android:layout_toEndOf="@+id/item_recents_image"
android:ellipsize="end"
android:maxLines="1"
@ -93,12 +94,27 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/item_recents_name"
android:layout_alignParentEnd="true"
android:layout_marginEnd="0dp"
android:layout_toStartOf="@+id/overflow_menu_icon"
android:layout_toEndOf="@+id/item_recents_date_time"
android:alpha="0.6"
android:gravity="end"
android:textSize="@dimen/normal_text_size"
tools:text="00:10" />
<ImageView
android:id="@+id/overflow_menu_icon"
style="@style/OverflowMenuIconStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true" />
<View
android:id="@+id/overflow_menu_anchor"
style="@style/OverflowMenuAnchorStyle"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true" />
</RelativeLayout>
</FrameLayout>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/cab_call"
android:icon="@drawable/ic_call_vector"
android:title="@string/call" />
<item
android:id="@+id/cab_call_sim_1"
android:icon="@drawable/ic_phone_one_vector"
android:title="@string/call_from_sim_1" />
<item
android:id="@+id/cab_call_sim_2"
android:icon="@drawable/ic_phone_two_vector"
android:title="@string/call_from_sim_2" />
<item
android:id="@+id/cab_send_sms"
android:icon="@drawable/ic_sms_vector"
android:title="@string/send_sms" />
</menu>