Added copy to clipboard in call history list

This commit is contained in:
Sylvain Berfini 2023-08-16 14:11:30 +02:00
parent 8b446e2de0
commit 8d74b8f133
5 changed files with 88 additions and 5 deletions

View file

@ -19,12 +19,16 @@
*/
package org.linphone.ui.main.calls.fragment
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels
import androidx.recyclerview.widget.LinearLayoutManager
@ -35,6 +39,7 @@ import org.linphone.ui.main.calls.adapter.CallsListAdapter
import org.linphone.ui.main.calls.viewmodel.CallsListViewModel
import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.Event
import org.linphone.utils.slideInToastFromTopForDuration
class CallsListFragment : GenericFragment() {
@ -76,9 +81,13 @@ class CallsListFragment : GenericFragment() {
adapter.callLogLongClickedEvent.observe(viewLifecycleOwner) {
it.consume { model ->
val modalBottomSheet = CallsListMenuDialogFragment(model.callLog) {
val modalBottomSheet = CallsListMenuDialogFragment({
// onDismiss
adapter.resetSelection()
}
}, {
// onCopyNumberOrAddressToClipboard
copyNumberOrAddressToClipboard(model.displayedAddress)
})
modalBottomSheet.show(parentFragmentManager, CallsListMenuDialogFragment.TAG)
}
}
@ -111,4 +120,16 @@ class CallsListFragment : GenericFragment() {
}
}
}
private fun copyNumberOrAddressToClipboard(value: String) {
val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val label = "SIP address"
clipboard.setPrimaryClip(ClipData.newPlainText(label, value))
binding.greenToast.message = "Numéro copié dans le presse-papier"
binding.greenToast.icon = R.drawable.check
val target = binding.greenToast.root
target.slideInToastFromTopForDuration(binding.root as ViewGroup, lifecycleScope)
}
}

View file

@ -25,12 +25,11 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import org.linphone.core.CallLog
import org.linphone.databinding.CallsListLongPressMenuBinding
class CallsListMenuDialogFragment(
private val calLog: CallLog,
private val onDismiss: (() -> Unit)? = null
private val onDismiss: (() -> Unit)? = null,
private val onCopyNumberOrAddressToClipboard: (() -> Unit)? = null
) : BottomSheetDialogFragment() {
companion object {
const val TAG = "CallsListMenuDialogFragment"
@ -52,6 +51,22 @@ class CallsListMenuDialogFragment(
savedInstanceState: Bundle?
): View {
val view = CallsListLongPressMenuBinding.inflate(layoutInflater)
view.setCopyNumberClickListener {
onCopyNumberOrAddressToClipboard?.invoke()
dismiss()
}
view.setDeleteClickListener {
// TODO
dismiss()
}
view.setNewContactClickListener {
// TODO
dismiss()
}
return view.root
}
}

View file

@ -52,6 +52,27 @@ class ContactsListMenuDialogFragment(
savedInstanceState: Bundle?
): View {
val view = ContactsListLongPressMenuBinding.inflate(layoutInflater)
view.setFavoriteClickListener {
// TODO
dismiss()
}
view.setShareClickListener {
// TODO
dismiss()
}
view.setInviteClickListener {
// TODO
dismiss()
}
view.setDeleteClickListener {
// TODO
dismiss()
}
return view.root
}
}

View file

@ -52,6 +52,19 @@
app:layout_constraintTop_toBottomOf="@id/top_bar"
app:layout_constraintBottom_toBottomOf="parent" />
<include
android:id="@+id/green_toast"
android:visibility="gone"
layout="@layout/toast_green"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
app:layout_constraintTop_toTopOf="@id/background"
app:layout_constraintStart_toEndOf="@id/bottom_nav_bar"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/bottom_nav_bar"
android:name="org.linphone.ui.main.fragment.BottomNavBarFragment"

View file

@ -52,6 +52,19 @@
app:layout_constraintTop_toBottomOf="@id/top_bar"
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
<include
android:id="@+id/green_toast"
android:visibility="gone"
layout="@layout/toast_green"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
app:layout_constraintTop_toTopOf="@id/background"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/bottom_nav_bar"
android:name="org.linphone.ui.main.fragment.BottomNavBarFragment"