mirror of
https://github.com/FossifyOrg/Phone.git
synced 2025-12-24 00:17:45 -05:00
feat: initiate calls on contact tap (#537)
* feat: initiate calls on contact tap * refactor: use common extension for calling in favorites * refactor: optimize imports It would be made optional (like in Fossify Contacts) if this change bothers many people. The fact that one can access contact details by tapping on the contact photo or via the menu seems good enough for this app. Refs: https://github.com/FossifyOrg/Phone/issues/80
This commit is contained in:
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
### Changed
|
||||
- Tapping a contact now starts a call; tap the photo for details ([#80])
|
||||
|
||||
## [1.6.2] - 2025-08-23
|
||||
### Changed
|
||||
@@ -147,6 +149,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
[#39]: https://github.com/FossifyOrg/Phone/issues/39
|
||||
[#50]: https://github.com/FossifyOrg/Phone/issues/50
|
||||
[#60]: https://github.com/FossifyOrg/Phone/issues/60
|
||||
[#80]: https://github.com/FossifyOrg/Phone/issues/80
|
||||
[#81]: https://github.com/FossifyOrg/Phone/issues/81
|
||||
[#88]: https://github.com/FossifyOrg/Phone/issues/88
|
||||
[#94]: https://github.com/FossifyOrg/Phone/issues/94
|
||||
|
||||
@@ -10,6 +10,7 @@ import android.telecom.PhoneAccountHandle
|
||||
import android.telecom.TelecomManager
|
||||
import org.fossify.commons.activities.BaseSimpleActivity
|
||||
import org.fossify.commons.dialogs.CallConfirmationDialog
|
||||
import org.fossify.commons.extensions.initiateCall
|
||||
import org.fossify.commons.extensions.isDefaultDialer
|
||||
import org.fossify.commons.extensions.isPackageInstalled
|
||||
import org.fossify.commons.extensions.launchActivityIntent
|
||||
@@ -57,6 +58,19 @@ fun SimpleActivity.startCallWithConfirmationCheck(
|
||||
}
|
||||
}
|
||||
|
||||
fun SimpleActivity.startCallWithConfirmationCheck(contact: Contact) {
|
||||
if (config.showCallConfirmation) {
|
||||
CallConfirmationDialog(
|
||||
activity = this,
|
||||
callee = contact.getNameToDisplay()
|
||||
) {
|
||||
initiateCall(contact) { launchCallIntent(it) }
|
||||
}
|
||||
} else {
|
||||
initiateCall(contact) { launchCallIntent(it) }
|
||||
}
|
||||
}
|
||||
|
||||
fun SimpleActivity.launchCreateNewContactIntent() {
|
||||
Intent().apply {
|
||||
action = Intent.ACTION_INSERT
|
||||
|
||||
@@ -3,8 +3,23 @@ package org.fossify.phone.fragments
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import org.fossify.commons.adapters.MyRecyclerViewAdapter
|
||||
import org.fossify.commons.extensions.*
|
||||
import org.fossify.commons.helpers.*
|
||||
import org.fossify.commons.extensions.areSystemAnimationsEnabled
|
||||
import org.fossify.commons.extensions.baseConfig
|
||||
import org.fossify.commons.extensions.beGone
|
||||
import org.fossify.commons.extensions.beVisible
|
||||
import org.fossify.commons.extensions.beVisibleIf
|
||||
import org.fossify.commons.extensions.getColorStateList
|
||||
import org.fossify.commons.extensions.getContrastColor
|
||||
import org.fossify.commons.extensions.getMyContactsCursor
|
||||
import org.fossify.commons.extensions.hasPermission
|
||||
import org.fossify.commons.extensions.normalizePhoneNumber
|
||||
import org.fossify.commons.extensions.normalizeString
|
||||
import org.fossify.commons.extensions.underlineText
|
||||
import org.fossify.commons.helpers.ContactsHelper
|
||||
import org.fossify.commons.helpers.MyContactsContentProvider
|
||||
import org.fossify.commons.helpers.PERMISSION_READ_CONTACTS
|
||||
import org.fossify.commons.helpers.SMT_PRIVATE
|
||||
import org.fossify.commons.helpers.getProperText
|
||||
import org.fossify.commons.models.contacts.Contact
|
||||
import org.fossify.phone.R
|
||||
import org.fossify.phone.activities.MainActivity
|
||||
@@ -14,6 +29,7 @@ import org.fossify.phone.databinding.FragmentContactsBinding
|
||||
import org.fossify.phone.databinding.FragmentLettersLayoutBinding
|
||||
import org.fossify.phone.extensions.launchCreateNewContactIntent
|
||||
import org.fossify.phone.extensions.setupWithContacts
|
||||
import org.fossify.phone.extensions.startCallWithConfirmationCheck
|
||||
import org.fossify.phone.extensions.startContactDetailsIntent
|
||||
import org.fossify.phone.interfaces.RefreshItemsListener
|
||||
|
||||
@@ -113,8 +129,12 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
|
||||
recyclerView = binding.fragmentList,
|
||||
refreshItemsListener = this,
|
||||
itemClick = {
|
||||
activity?.startCallWithConfirmationCheck(it as Contact)
|
||||
},
|
||||
profileIconClick = {
|
||||
activity?.startContactDetailsIntent(it as Contact)
|
||||
}).apply {
|
||||
}
|
||||
).apply {
|
||||
binding.fragmentList.adapter = this
|
||||
}
|
||||
|
||||
|
||||
@@ -4,9 +4,21 @@ import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import com.google.gson.Gson
|
||||
import org.fossify.commons.adapters.MyRecyclerViewAdapter
|
||||
import org.fossify.commons.dialogs.CallConfirmationDialog
|
||||
import org.fossify.commons.extensions.*
|
||||
import org.fossify.commons.helpers.*
|
||||
import org.fossify.commons.extensions.areSystemAnimationsEnabled
|
||||
import org.fossify.commons.extensions.baseConfig
|
||||
import org.fossify.commons.extensions.beGone
|
||||
import org.fossify.commons.extensions.beVisible
|
||||
import org.fossify.commons.extensions.beVisibleIf
|
||||
import org.fossify.commons.extensions.getColorStateList
|
||||
import org.fossify.commons.extensions.getContrastColor
|
||||
import org.fossify.commons.extensions.getMyContactsCursor
|
||||
import org.fossify.commons.extensions.hasPermission
|
||||
import org.fossify.commons.helpers.ContactsHelper
|
||||
import org.fossify.commons.helpers.Converters
|
||||
import org.fossify.commons.helpers.MyContactsContentProvider
|
||||
import org.fossify.commons.helpers.PERMISSION_READ_CONTACTS
|
||||
import org.fossify.commons.helpers.SMT_PRIVATE
|
||||
import org.fossify.commons.helpers.VIEW_TYPE_GRID
|
||||
import org.fossify.commons.models.contacts.Contact
|
||||
import org.fossify.commons.views.MyGridLayoutManager
|
||||
import org.fossify.commons.views.MyLinearLayoutManager
|
||||
@@ -17,6 +29,7 @@ import org.fossify.phone.databinding.FragmentFavoritesBinding
|
||||
import org.fossify.phone.databinding.FragmentLettersLayoutBinding
|
||||
import org.fossify.phone.extensions.config
|
||||
import org.fossify.phone.extensions.setupWithContacts
|
||||
import org.fossify.phone.extensions.startCallWithConfirmationCheck
|
||||
import org.fossify.phone.extensions.startContactDetailsIntent
|
||||
import org.fossify.phone.interfaces.RefreshItemsListener
|
||||
|
||||
@@ -113,18 +126,8 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
|
||||
viewType = viewType,
|
||||
showDeleteButton = false,
|
||||
enableDrag = true,
|
||||
itemClick = { it ->
|
||||
if (context.config.showCallConfirmation) {
|
||||
CallConfirmationDialog(activity as SimpleActivity, (it as Contact).getNameToDisplay()) {
|
||||
activity?.apply {
|
||||
initiateCall(it) { launchCallIntent(it) }
|
||||
}
|
||||
}
|
||||
} else {
|
||||
activity?.apply {
|
||||
initiateCall(it as Contact) { launchCallIntent(it) }
|
||||
}
|
||||
}
|
||||
itemClick = {
|
||||
activity?.startCallWithConfirmationCheck(it as Contact)
|
||||
},
|
||||
profileIconClick = {
|
||||
activity?.startContactDetailsIntent(it as Contact)
|
||||
|
||||
Reference in New Issue
Block a user