Fixed detail part of sliding pane when removing entry from the master list
This commit is contained in:
parent
12dcb10485
commit
188800e9bd
7 changed files with 119 additions and 23 deletions
|
@ -309,6 +309,18 @@ internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
|
|||
}
|
||||
}
|
||||
|
||||
internal fun MasterChatRoomsFragment.clearDisplayedChatRoom() {
|
||||
if (findNavController().currentDestination?.id == R.id.masterChatRoomsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_emptyChatFragment,
|
||||
null,
|
||||
popupTo(R.id.emptyChatFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun DetailChatRoomFragment.navigateToContacts(sipUriToAdd: String) {
|
||||
val deepLink = "linphone-android://contact/new/$sipUriToAdd"
|
||||
findMasterNavController().navigate(Uri.parse(deepLink), getLeftToRightAnimationNavOptions())
|
||||
|
@ -465,6 +477,18 @@ internal fun MasterContactsFragment.navigateToContactEditor(sipUriToAdd: String?
|
|||
}
|
||||
}
|
||||
|
||||
internal fun MasterContactsFragment.clearDisplayedContact() {
|
||||
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_emptyContactFragment,
|
||||
null,
|
||||
popupTo(R.id.emptyContactFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun ContactEditorFragment.navigateToContact(contact: NativeContact) {
|
||||
val bundle = Bundle()
|
||||
bundle.putString("id", contact.nativeId)
|
||||
|
@ -515,6 +539,18 @@ internal fun MasterCallLogsFragment.navigateToCallHistory() {
|
|||
}
|
||||
}
|
||||
|
||||
internal fun MasterCallLogsFragment.clearDisplayedCallHistory() {
|
||||
if (findNavController().currentDestination?.id == R.id.masterCallLogsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.history_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_emptyFragment,
|
||||
null,
|
||||
popupTo(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun MasterCallLogsFragment.navigateToDialer(args: Bundle?) {
|
||||
findNavController().navigate(
|
||||
R.id.action_global_dialerFragment,
|
||||
|
|
|
@ -32,6 +32,7 @@ import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
|||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericActivity
|
||||
import org.linphone.activities.clearDisplayedChatRoom
|
||||
import org.linphone.activities.main.MainActivity
|
||||
import org.linphone.activities.main.chat.adapters.ChatRoomsListAdapter
|
||||
import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel
|
||||
|
@ -163,7 +164,13 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
}
|
||||
|
||||
viewModel.showDeleteButton({
|
||||
listViewModel.deleteChatRoom(adapter.currentList[viewHolder.adapterPosition].chatRoom)
|
||||
val deletedChatRoom = adapter.currentList[viewHolder.adapterPosition].chatRoom
|
||||
listViewModel.deleteChatRoom(deletedChatRoom)
|
||||
if (!binding.slidingPane.isSlideable &&
|
||||
deletedChatRoom == sharedViewModel.selectedChatRoom.value) {
|
||||
Log.i("[Chat] Currently displayed chat room has been deleted, removing detail fragment")
|
||||
clearDisplayedChatRoom()
|
||||
}
|
||||
dialog.dismiss()
|
||||
}, getString(R.string.dialog_delete))
|
||||
|
||||
|
@ -296,11 +303,21 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
|
||||
override fun deleteItems(indexesOfItemToDelete: ArrayList<Int>) {
|
||||
val list = ArrayList<ChatRoom>()
|
||||
var closeSlidingPane = false
|
||||
for (index in indexesOfItemToDelete) {
|
||||
val chatRoomViewModel = adapter.currentList[index]
|
||||
list.add(chatRoomViewModel.chatRoom)
|
||||
|
||||
if (chatRoomViewModel.chatRoom == sharedViewModel.selectedChatRoom.value) {
|
||||
closeSlidingPane = true
|
||||
}
|
||||
}
|
||||
listViewModel.deleteChatRooms(list)
|
||||
|
||||
if (!binding.slidingPane.isSlideable && closeSlidingPane) {
|
||||
Log.i("[Chat] Currently displayed chat room has been deleted, removing detail fragment")
|
||||
clearDisplayedChatRoom()
|
||||
}
|
||||
}
|
||||
|
||||
private fun scrollToTop() {
|
||||
|
|
|
@ -32,6 +32,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.clearDisplayedContact
|
||||
import org.linphone.activities.main.MainActivity
|
||||
import org.linphone.activities.main.contact.adapters.ContactsListAdapter
|
||||
import org.linphone.activities.main.contact.viewmodels.ContactsListViewModel
|
||||
|
@ -147,7 +148,13 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
}
|
||||
|
||||
viewModel.showDeleteButton({
|
||||
listViewModel.deleteContact(adapter.currentList[viewHolder.adapterPosition].contactInternal)
|
||||
val deletedContact = adapter.currentList[viewHolder.adapterPosition].contactInternal
|
||||
listViewModel.deleteContact(deletedContact)
|
||||
if (!binding.slidingPane.isSlideable &&
|
||||
deletedContact == sharedViewModel.selectedContact.value) {
|
||||
Log.i("[Contacts] Currently displayed contact has been deleted, removing detail fragment")
|
||||
clearDisplayedContact()
|
||||
}
|
||||
dialog.dismiss()
|
||||
}, getString(R.string.dialog_delete))
|
||||
|
||||
|
@ -258,11 +265,21 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
|
||||
override fun deleteItems(indexesOfItemToDelete: ArrayList<Int>) {
|
||||
val list = ArrayList<Contact>()
|
||||
var closeSlidingPane = false
|
||||
for (index in indexesOfItemToDelete) {
|
||||
val contact = adapter.currentList[index].contactInternal
|
||||
list.add(contact)
|
||||
|
||||
if (contact == sharedViewModel.selectedContact.value) {
|
||||
closeSlidingPane = true
|
||||
}
|
||||
}
|
||||
listViewModel.deleteContacts(list)
|
||||
|
||||
if (!binding.slidingPane.isSlideable && closeSlidingPane) {
|
||||
Log.i("[Contacts] Currently displayed contact has been deleted, removing detail fragment")
|
||||
clearDisplayedContact()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(
|
||||
|
|
|
@ -31,6 +31,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.clearDisplayedCallHistory
|
||||
import org.linphone.activities.main.fragments.MasterFragment
|
||||
import org.linphone.activities.main.history.adapters.CallLogsListAdapter
|
||||
import org.linphone.activities.main.history.data.GroupedCallLogData
|
||||
|
@ -148,7 +149,13 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
|||
}
|
||||
|
||||
viewModel.showDeleteButton({
|
||||
listViewModel.deleteCallLogGroup(adapter.currentList[viewHolder.adapterPosition])
|
||||
val deletedCallGroup = adapter.currentList[viewHolder.adapterPosition]
|
||||
listViewModel.deleteCallLogGroup(deletedCallGroup)
|
||||
if (!binding.slidingPane.isSlideable &&
|
||||
deletedCallGroup.lastCallLog.callId == sharedViewModel.selectedCallLogGroup.value?.lastCallLog?.callId) {
|
||||
Log.i("[History] Currently displayed history has been deleted, removing detail fragment")
|
||||
clearDisplayedCallHistory()
|
||||
}
|
||||
dialog.dismiss()
|
||||
}, getString(R.string.dialog_delete))
|
||||
|
||||
|
@ -238,11 +245,21 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
|||
|
||||
override fun deleteItems(indexesOfItemToDelete: ArrayList<Int>) {
|
||||
val list = ArrayList<GroupedCallLogData>()
|
||||
var closeSlidingPane = false
|
||||
for (index in indexesOfItemToDelete) {
|
||||
val callLogGroup = adapter.currentList[index]
|
||||
list.add(callLogGroup)
|
||||
|
||||
if (callLogGroup.lastCallLog.callId == sharedViewModel.selectedCallLogGroup.value?.lastCallLog?.callId) {
|
||||
closeSlidingPane = true
|
||||
}
|
||||
}
|
||||
listViewModel.deleteCallLogGroups(list)
|
||||
|
||||
if (!binding.slidingPane.isSlideable && closeSlidingPane) {
|
||||
Log.i("[History] Currently displayed history has been deleted, removing detail fragment")
|
||||
clearDisplayedCallHistory()
|
||||
}
|
||||
}
|
||||
|
||||
private fun scrollToTop() {
|
||||
|
|
|
@ -9,13 +9,16 @@
|
|||
android:id="@+id/emptyChatFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment" />
|
||||
android:label="EmptyFragment" />
|
||||
|
||||
<action android:id="@+id/action_global_emptyChatFragment"
|
||||
app:destination="@id/emptyChatFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailChatRoomFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.DetailChatRoomFragment"
|
||||
tools:layout="@layout/chat_room_detail_fragment"
|
||||
android:label="DetailChatRoomFragment" >
|
||||
android:label="DetailChatRoomFragment">
|
||||
<action
|
||||
android:id="@+id/action_detailChatRoomFragment_to_imdnFragment"
|
||||
app:destination="@id/imdnFragment" />
|
||||
|
@ -30,11 +33,15 @@
|
|||
app:destination="@id/ephemeralFragment" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/chatRoomCreationFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.ChatRoomCreationFragment"
|
||||
tools:layout="@layout/chat_room_creation_fragment"
|
||||
android:label="ChatRoomCreationFragment" >
|
||||
android:label="ChatRoomCreationFragment">
|
||||
<argument
|
||||
android:name="createGroup"
|
||||
app:argType="boolean"
|
||||
|
@ -47,6 +54,10 @@
|
|||
app:destination="@id/detailChatRoomFragment" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/devicesFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.DevicesFragment"
|
||||
|
@ -57,7 +68,7 @@
|
|||
android:id="@+id/groupInfoFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.GroupInfoFragment"
|
||||
tools:layout="@layout/chat_room_group_info_fragment"
|
||||
android:label="GroupInfoFragment" >
|
||||
android:label="GroupInfoFragment">
|
||||
<action
|
||||
android:id="@+id/action_groupInfoFragment_to_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
|
@ -70,20 +81,12 @@
|
|||
android:id="@+id/imdnFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.ImdnFragment"
|
||||
tools:layout="@layout/chat_room_imdn_fragment"
|
||||
android:label="ImdnFragment" >
|
||||
android:label="ImdnFragment">
|
||||
<argument
|
||||
android:name="MessageId"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/ephemeralFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.EphemeralFragment"
|
||||
|
|
|
@ -9,7 +9,10 @@
|
|||
android:id="@+id/emptyContactFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment"/>
|
||||
android:label="EmptyFragment" />
|
||||
|
||||
<action android:id="@+id/action_global_emptyContactFragment"
|
||||
app:destination="@id/emptyContactFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailContactFragment"
|
||||
|
@ -26,11 +29,15 @@
|
|||
app:destination="@id/chat_nav_graph.xml" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailContactFragment"
|
||||
app:destination="@id/detailContactFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/contactEditorFragment"
|
||||
android:name="org.linphone.activities.main.contact.fragments.ContactEditorFragment"
|
||||
tools:layout="@layout/contact_editor_fragment"
|
||||
android:label="ContactEditorFragment" >
|
||||
android:label="ContactEditorFragment">
|
||||
<argument
|
||||
android:name="SipUri"
|
||||
app:argType="string"
|
||||
|
@ -40,10 +47,6 @@
|
|||
app:destination="@id/detailContactFragment" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailContactFragment"
|
||||
app:destination="@id/detailContactFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_contactEditorFragment"
|
||||
app:destination="@id/contactEditorFragment" />
|
||||
|
|
|
@ -9,7 +9,10 @@
|
|||
android:id="@+id/emptyFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment"/>
|
||||
android:label="EmptyFragment" />
|
||||
|
||||
<action android:id="@+id/action_global_emptyFragment"
|
||||
app:destination="@id/emptyFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailCallLogFragment"
|
||||
|
|
Loading…
Reference in a new issue