From f13dceaa34551921cdd00990090a57595b7dbe62 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 18 Aug 2023 14:02:31 +0200 Subject: [PATCH] More work on contacts list context menu --- .../contacts/fragment/ContactsListFragment.kt | 22 +++++++++++++++++-- .../ContactsListMenuDialogFragment.kt | 20 ++++++++--------- app/src/main/res/drawable/not_favourite.xml | 12 +++++----- .../layout/contacts_list_long_press_menu.xml | 14 ------------ 4 files changed, 35 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt index 6d908d167..2689a63d0 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt @@ -29,6 +29,7 @@ import androidx.core.view.doOnPreDraw import androidx.navigation.fragment.findNavController import androidx.navigation.navGraphViewModels import androidx.recyclerview.widget.LinearLayoutManager +import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.databinding.ContactsListFragmentBinding import org.linphone.ui.main.contacts.adapter.ContactsListAdapter @@ -118,9 +119,26 @@ class ContactsListFragment : GenericFragment() { private fun configureAdapter(adapter: ContactsListAdapter) { adapter.contactLongClickedEvent.observe(viewLifecycleOwner) { it.consume { model -> - val modalBottomSheet = ContactsListMenuDialogFragment(model.friend) { + val modalBottomSheet = ContactsListMenuDialogFragment(model.friend.starred, { adapter.resetSelection() - } + }, { + // onFavourite + coreContext.postOnCoreThread { + model.friend.edit() + model.friend.starred = !model.friend.starred + model.friend.done() + coreContext.contactsManager.notifyContactsListChanged() + } + }, { + // onShare + // TODO + }, { + // onDelete + coreContext.postOnCoreThread { + model.friend.remove() + coreContext.contactsManager.notifyContactsListChanged() + } + }) modalBottomSheet.show(parentFragmentManager, ContactsListMenuDialogFragment.TAG) } } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListMenuDialogFragment.kt index 368356314..383ee77e4 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListMenuDialogFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListMenuDialogFragment.kt @@ -25,12 +25,14 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import org.linphone.core.Friend import org.linphone.databinding.ContactsListLongPressMenuBinding class ContactsListMenuDialogFragment( - private val friend: Friend, - private val onDismiss: (() -> Unit)? = null + val isFavourite: Boolean, + private val onDismiss: (() -> Unit)? = null, + private val onFavourite: (() -> Unit)? = null, + private val onShare: (() -> Unit)? = null, + private val onDelete: (() -> Unit)? = null ) : BottomSheetDialogFragment() { companion object { const val TAG = "ContactsListMenuDialogFragment" @@ -52,24 +54,20 @@ class ContactsListMenuDialogFragment( savedInstanceState: Bundle? ): View { val view = ContactsListLongPressMenuBinding.inflate(layoutInflater) + view.isFavourite = isFavourite view.setFavoriteClickListener { - // TODO + onFavourite?.invoke() dismiss() } view.setShareClickListener { - // TODO - dismiss() - } - - view.setInviteClickListener { - // TODO + onShare?.invoke() dismiss() } view.setDeleteClickListener { - // TODO + onDelete?.invoke() dismiss() } diff --git a/app/src/main/res/drawable/not_favourite.xml b/app/src/main/res/drawable/not_favourite.xml index 44db34b4b..3094b68a6 100644 --- a/app/src/main/res/drawable/not_favourite.xml +++ b/app/src/main/res/drawable/not_favourite.xml @@ -1,13 +1,13 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> diff --git a/app/src/main/res/layout/contacts_list_long_press_menu.xml b/app/src/main/res/layout/contacts_list_long_press_menu.xml index 31b2147ec..877d74115 100644 --- a/app/src/main/res/layout/contacts_list_long_press_menu.xml +++ b/app/src/main/res/layout/contacts_list_long_press_menu.xml @@ -51,20 +51,6 @@ android:background="@color/gray_2" android:layout_marginBottom="1dp" android:drawableStart="@drawable/share" - app:layout_constraintBottom_toTopOf="@id/invite" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" /> - -