mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-31 10:49:23 +00:00
Dismiss dialogs when fragment is paused to prevent crashes when rotating device
This commit is contained in:
parent
39a6254ee1
commit
489aece7c5
7 changed files with 70 additions and 0 deletions
|
|
@ -36,6 +36,7 @@ import androidx.navigation.findNavController
|
|||
import androidx.window.layout.FoldingFeature
|
||||
import androidx.window.layout.WindowInfoTracker
|
||||
import androidx.window.layout.WindowLayoutInfo
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import org.linphone.R
|
||||
|
|
@ -69,6 +70,8 @@ class CallActivity : GenericActivity() {
|
|||
private lateinit var callsViewModel: CallsViewModel
|
||||
private lateinit var callViewModel: CurrentCallViewModel
|
||||
|
||||
private var bottomSheetDialog: BottomSheetDialogFragment? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
|
@ -272,6 +275,13 @@ class CallActivity : GenericActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
bottomSheetDialog?.dismiss()
|
||||
bottomSheetDialog = null
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
|
|
@ -414,10 +424,12 @@ class CallActivity : GenericActivity() {
|
|||
private fun showAudioRoutesMenu(devicesList: List<AudioDeviceModel>) {
|
||||
val modalBottomSheet = AudioDevicesMenuDialogFragment(devicesList)
|
||||
modalBottomSheet.show(supportFragmentManager, AudioDevicesMenuDialogFragment.TAG)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
|
||||
private fun showConferenceLayoutMenu() {
|
||||
val modalBottomSheet = ConferenceLayoutMenuDialogFragment(callViewModel.conferenceModel)
|
||||
modalBottomSheet.show(supportFragmentManager, ConferenceLayoutMenuDialogFragment.TAG)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import android.view.ViewGroup
|
|||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.CallsListFragmentBinding
|
||||
import org.linphone.ui.call.adapter.CallsListAdapter
|
||||
|
|
@ -42,6 +43,8 @@ class CallsListFragment : GenericCallFragment() {
|
|||
|
||||
private lateinit var adapter: CallsListAdapter
|
||||
|
||||
private var bottomSheetDialog: BottomSheetDialogFragment? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
|
@ -77,6 +80,7 @@ class CallsListFragment : GenericCallFragment() {
|
|||
adapter.resetSelection()
|
||||
}
|
||||
modalBottomSheet.show(parentFragmentManager, CallMenuDialogFragment.TAG)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -99,4 +103,11 @@ class CallsListFragment : GenericCallFragment() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
bottomSheetDialog?.dismiss()
|
||||
bottomSheetDialog = null
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import androidx.navigation.findNavController
|
|||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import org.linphone.R
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.ChatListFragmentBinding
|
||||
|
|
@ -54,6 +55,8 @@ class ConversationsListFragment : AbstractTopBarFragment() {
|
|||
|
||||
private lateinit var adapter: ConversationsListAdapter
|
||||
|
||||
private var bottomSheetDialog: BottomSheetDialogFragment? = null
|
||||
|
||||
private val dataObserver = object : RecyclerView.AdapterDataObserver() {
|
||||
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
|
||||
Log.i("$TAG [$itemCount] added, scrolling to top")
|
||||
|
|
@ -147,6 +150,7 @@ class ConversationsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
)
|
||||
modalBottomSheet.show(parentFragmentManager, HistoryMenuDialogFragment.TAG)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -272,6 +276,9 @@ class ConversationsListFragment : AbstractTopBarFragment() {
|
|||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
bottomSheetDialog?.dismiss()
|
||||
bottomSheetDialog = null
|
||||
|
||||
try {
|
||||
adapter.unregisterAdapterDataObserver(dataObserver)
|
||||
} catch (e: IllegalStateException) {
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ import androidx.core.view.doOnPreDraw
|
|||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import java.io.File
|
||||
import org.linphone.R
|
||||
import org.linphone.core.tools.Log
|
||||
|
|
@ -63,6 +64,8 @@ class ContactFragment : GenericFragment() {
|
|||
|
||||
private var numberOrAddressPickerDialog: Dialog? = null
|
||||
|
||||
private var bottomSheetDialog: BottomSheetDialogFragment? = null
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
|
|
@ -138,6 +141,7 @@ class ContactFragment : GenericFragment() {
|
|||
parentFragmentManager,
|
||||
ContactNumberOrAddressMenuDialogFragment.TAG
|
||||
)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -224,6 +228,9 @@ class ContactFragment : GenericFragment() {
|
|||
|
||||
numberOrAddressPickerDialog?.dismiss()
|
||||
numberOrAddressPickerDialog = null
|
||||
|
||||
bottomSheetDialog?.dismiss()
|
||||
bottomSheetDialog = null
|
||||
}
|
||||
|
||||
private fun copyNumberOrAddressToClipboard(value: String, isSip: Boolean) {
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import androidx.lifecycle.ViewModelProvider
|
|||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import java.io.File
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
|
|
@ -59,6 +60,8 @@ class ContactsListFragment : AbstractTopBarFragment() {
|
|||
private lateinit var adapter: ContactsListAdapter
|
||||
private lateinit var favouritesAdapter: ContactsListAdapter
|
||||
|
||||
private var bottomSheetDialog: BottomSheetDialogFragment? = null
|
||||
|
||||
override fun onDefaultAccountChanged() {
|
||||
Log.i(
|
||||
"$TAG Default account changed, updating avatar in top bar & refreshing contacts list"
|
||||
|
|
@ -230,6 +233,7 @@ class ContactsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
)
|
||||
modalBottomSheet.show(parentFragmentManager, ContactsListMenuDialogFragment.TAG)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -240,6 +244,13 @@ class ContactsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
bottomSheetDialog?.dismiss()
|
||||
bottomSheetDialog = null
|
||||
}
|
||||
|
||||
private fun shareContact(name: String, file: File) {
|
||||
val publicUri = FileProvider.getUriForFile(
|
||||
requireContext(),
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import androidx.lifecycle.ViewModelProvider
|
|||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.core.tools.Log
|
||||
|
|
@ -62,6 +63,8 @@ class HistoryListFragment : AbstractTopBarFragment() {
|
|||
|
||||
private lateinit var adapter: HistoryListAdapter
|
||||
|
||||
private var bottomSheetDialog: BottomSheetDialogFragment? = null
|
||||
|
||||
override fun onDefaultAccountChanged() {
|
||||
Log.i(
|
||||
"$TAG Default account changed, updating avatar in top bar & re-computing call logs"
|
||||
|
|
@ -148,6 +151,7 @@ class HistoryListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
)
|
||||
modalBottomSheet.show(parentFragmentManager, HistoryMenuDialogFragment.TAG)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -249,6 +253,13 @@ class HistoryListFragment : AbstractTopBarFragment() {
|
|||
initNavigation(R.id.historyListFragment)
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
bottomSheetDialog?.dismiss()
|
||||
bottomSheetDialog = null
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import androidx.lifecycle.ViewModelProvider
|
|||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import org.linphone.R
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.MeetingsListFragmentBinding
|
||||
|
|
@ -52,6 +53,8 @@ class MeetingsListFragment : AbstractTopBarFragment() {
|
|||
|
||||
private lateinit var adapter: MeetingsListAdapter
|
||||
|
||||
private var bottomSheetDialog: BottomSheetDialogFragment? = null
|
||||
|
||||
override fun onDefaultAccountChanged() {
|
||||
Log.i(
|
||||
"$TAG Default account changed, updating avatar in top bar & re-computing meetings list"
|
||||
|
|
@ -153,6 +156,7 @@ class MeetingsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
)
|
||||
modalBottomSheet.show(parentFragmentManager, MeetingsMenuDialogFragment.TAG)
|
||||
bottomSheetDialog = modalBottomSheet
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -207,6 +211,13 @@ class MeetingsListFragment : AbstractTopBarFragment() {
|
|||
initNavigation(R.id.meetingsListFragment)
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
bottomSheetDialog?.dismiss()
|
||||
bottomSheetDialog = null
|
||||
}
|
||||
|
||||
private fun scrollToToday() {
|
||||
Log.i("$TAG Scrolling to today's meeting (if any)")
|
||||
val todayMeeting = listViewModel.meetings.value.orEmpty().find {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue