diff --git a/CHANGELOG.md b/CHANGELOG.md index b8bbfceb..bd3c9f67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/app/src/main/kotlin/org/fossify/phone/extensions/Activity.kt b/app/src/main/kotlin/org/fossify/phone/extensions/Activity.kt index 8f205919..5345f1a2 100644 --- a/app/src/main/kotlin/org/fossify/phone/extensions/Activity.kt +++ b/app/src/main/kotlin/org/fossify/phone/extensions/Activity.kt @@ -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 diff --git a/app/src/main/kotlin/org/fossify/phone/fragments/ContactsFragment.kt b/app/src/main/kotlin/org/fossify/phone/fragments/ContactsFragment.kt index 36749fe9..817d3a21 100644 --- a/app/src/main/kotlin/org/fossify/phone/fragments/ContactsFragment.kt +++ b/app/src/main/kotlin/org/fossify/phone/fragments/ContactsFragment.kt @@ -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 } diff --git a/app/src/main/kotlin/org/fossify/phone/fragments/FavoritesFragment.kt b/app/src/main/kotlin/org/fossify/phone/fragments/FavoritesFragment.kt index 754dcf57..b42c1cf8 100644 --- a/app/src/main/kotlin/org/fossify/phone/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/org/fossify/phone/fragments/FavoritesFragment.kt @@ -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)