diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt index 1dadcadd3..8b2b061ce 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt @@ -111,12 +111,15 @@ class ContactFragment : GenericFragment() { viewModel.showLongPressMenuForNumberOrAddressEvent.observe(viewLifecycleOwner) { it.consume { model -> - val modalBottomSheet = ContactNumberOrAddressMenuDialogFragment({ + val modalBottomSheet = ContactNumberOrAddressMenuDialogFragment(model.isSip, { // onDismiss model.selected.value = false }, { // onCopyNumberOrAddressToClipboard copyNumberOrAddressToClipboard(model.displayedValue, model.isSip) + }, { + // onInviteNumberOrAddress + inviteContactBySms(model.displayedValue) }) modalBottomSheet.show( @@ -190,11 +193,22 @@ class ContactFragment : GenericFragment() { val sendIntent: Intent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_STREAM, publicUri) - putExtra(Intent.EXTRA_SUBJECT, "John Doe") + putExtra(Intent.EXTRA_SUBJECT, viewModel.contact.value?.friend?.name) type = ContactsContract.Contacts.CONTENT_VCARD_TYPE } val shareIntent = Intent.createChooser(sendIntent, null) startActivity(shareIntent) } + + private fun inviteContactBySms(number: String) { + Log.i("$TAG Sending SMS to [$number]") + val smsIntent: Intent = Intent().apply { + action = Intent.ACTION_SENDTO + data = Uri.parse("smsto:$number") + putExtra("address", number) + putExtra("sms_body", "Coucou <3") // TODO FIXME + } + startActivity(smsIntent) + } } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt index c8cac3473..909ba386b 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt @@ -28,8 +28,10 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment import org.linphone.databinding.ContactNumberOrAddressLongPressMenuBinding class ContactNumberOrAddressMenuDialogFragment( + private val isSip: Boolean, private val onDismiss: (() -> Unit)? = null, - private val onCopyNumberOrAddressToClipboard: (() -> Unit)? = null + private val onCopyNumberOrAddressToClipboard: (() -> Unit)? = null, + private val onInviteNumberOrAddress: (() -> Unit)? = null ) : BottomSheetDialogFragment() { companion object { const val TAG = "ContactNumberOrAddressMenuDialogFragment" @@ -51,12 +53,18 @@ class ContactNumberOrAddressMenuDialogFragment( savedInstanceState: Bundle? ): View { val view = ContactNumberOrAddressLongPressMenuBinding.inflate(layoutInflater) + view.isSip = isSip view.setCopyNumberOrAddressClickListener { onCopyNumberOrAddressToClipboard?.invoke() dismiss() } + view.setInviteNumberOrAddressClickListener { + onInviteNumberOrAddress?.invoke() + dismiss() + } + return view.root } } diff --git a/app/src/main/res/layout/contact_number_or_address_long_press_menu.xml b/app/src/main/res/layout/contact_number_or_address_long_press_menu.xml index 375a25964..56348f0a8 100644 --- a/app/src/main/res/layout/contact_number_or_address_long_press_menu.xml +++ b/app/src/main/res/layout/contact_number_or_address_long_press_menu.xml @@ -7,6 +7,12 @@ + + + +