mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 03:18:06 +00:00
Fixed full screen switch after device rotation in media viewer
This commit is contained in:
parent
2394c701cf
commit
9465593aa6
8 changed files with 25 additions and 21 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -17,3 +17,4 @@
|
|||
local.properties
|
||||
app/debug/
|
||||
app/release/
|
||||
.idea/
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import org.linphone.ui.GenericActivity
|
|||
import org.linphone.ui.file_viewer.adapter.MediaListAdapter
|
||||
import org.linphone.ui.file_viewer.viewmodel.MediaListViewModel
|
||||
import org.linphone.ui.main.chat.model.FileModel
|
||||
import org.linphone.ui.main.viewmodel.SharedMainViewModel
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.FileUtils
|
||||
|
||||
|
|
@ -41,6 +42,8 @@ class MediaViewerActivity : GenericActivity() {
|
|||
|
||||
private lateinit var viewPager: ViewPager2
|
||||
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
|
||||
private val pageListener = object : ViewPager2.OnPageChangeCallback() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
val list = viewModel.mediaList.value.orEmpty()
|
||||
|
|
@ -66,12 +69,16 @@ class MediaViewerActivity : GenericActivity() {
|
|||
WindowInsetsCompat.CONSUMED
|
||||
}
|
||||
|
||||
sharedViewModel = run {
|
||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
||||
}
|
||||
binding.sharedViewModel = sharedViewModel
|
||||
sharedViewModel.mediaViewerFullScreenMode.value = true
|
||||
|
||||
viewModel = ViewModelProvider(this)[MediaListViewModel::class.java]
|
||||
binding.viewModel = viewModel
|
||||
|
||||
adapter = MediaListAdapter(this, viewModel) { fullScreen ->
|
||||
viewModel.fullScreenMode.value = fullScreen
|
||||
}
|
||||
adapter = MediaListAdapter(this, viewModel)
|
||||
|
||||
viewPager = binding.mediaViewPager
|
||||
viewPager.adapter = adapter
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@ import org.linphone.ui.file_viewer.viewmodel.MediaListViewModel
|
|||
|
||||
class MediaListAdapter(
|
||||
fragmentActivity: FragmentActivity,
|
||||
private val viewModel: MediaListViewModel,
|
||||
private val lambda: ((fullScreen: Boolean) -> Unit)
|
||||
private val viewModel: MediaListViewModel
|
||||
) :
|
||||
FragmentStateAdapter(fragmentActivity) {
|
||||
companion object {
|
||||
|
|
@ -51,12 +50,10 @@ class MediaListAdapter(
|
|||
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
val fragment = MediaViewerFragment()
|
||||
fragment.fullScreenChanged = lambda
|
||||
fragment.arguments = Bundle().apply {
|
||||
val path = viewModel.mediaList.value.orEmpty().getOrNull(position)?.path
|
||||
Log.d("$TAG Path is [$path] for position [$position]")
|
||||
putString("path", path)
|
||||
putBoolean("fullScreen", viewModel.fullScreenMode.value == true)
|
||||
}
|
||||
return fragment
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,8 +45,6 @@ class MediaViewerFragment : GenericMainFragment() {
|
|||
|
||||
private lateinit var viewModel: MediaViewModel
|
||||
|
||||
var fullScreenChanged: ((fullScreen: Boolean) -> Unit)? = null
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
|
|
@ -64,7 +62,7 @@ class MediaViewerFragment : GenericMainFragment() {
|
|||
}
|
||||
|
||||
viewModel = ViewModelProvider(this)[MediaViewModel::class.java]
|
||||
viewModel.fullScreenMode.value = arguments?.getBoolean("fullScreen", true) ?: true
|
||||
viewModel.fullScreenMode.value = sharedViewModel.mediaViewerFullScreenMode.value == true
|
||||
|
||||
binding.lifecycleOwner = viewLifecycleOwner
|
||||
binding.viewModel = viewModel
|
||||
|
|
@ -85,8 +83,8 @@ class MediaViewerFragment : GenericMainFragment() {
|
|||
viewModel.loadFile(path)
|
||||
|
||||
binding.setToggleFullScreenModeClickListener {
|
||||
viewModel.toggleFullScreen()
|
||||
fullScreenChanged?.invoke(viewModel.fullScreenMode.value == true)
|
||||
val fullScreenMode = viewModel.toggleFullScreen()
|
||||
sharedViewModel.mediaViewerFullScreenMode.value = fullScreenMode
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,8 +35,6 @@ class MediaListViewModel @UiThread constructor() : AbstractConversationViewModel
|
|||
|
||||
val mediaList = MutableLiveData<List<FileModel>>()
|
||||
|
||||
val fullScreenMode = MutableLiveData<Boolean>()
|
||||
|
||||
val currentlyDisplayedFileName = MutableLiveData<String>()
|
||||
|
||||
val currentlyDisplayedFileDateTime = MutableLiveData<String>()
|
||||
|
|
@ -45,10 +43,6 @@ class MediaListViewModel @UiThread constructor() : AbstractConversationViewModel
|
|||
loadMediaList()
|
||||
}
|
||||
|
||||
init {
|
||||
fullScreenMode.value = true
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
|
||||
|
|
|
|||
|
|
@ -107,8 +107,10 @@ class MediaViewModel @UiThread constructor() : GenericViewModel() {
|
|||
}
|
||||
|
||||
@UiThread
|
||||
fun toggleFullScreen() {
|
||||
fullScreenMode.value = fullScreenMode.value != true
|
||||
fun toggleFullScreen(): Boolean {
|
||||
val newValue = fullScreenMode.value != true
|
||||
fullScreenMode.value = newValue
|
||||
return newValue
|
||||
}
|
||||
|
||||
@UiThread
|
||||
|
|
|
|||
|
|
@ -167,6 +167,8 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() {
|
|||
|
||||
/* Other */
|
||||
|
||||
val mediaViewerFullScreenMode = MutableLiveData<Boolean>()
|
||||
|
||||
val listOfSelectedSipUrisEvent: MutableLiveData<Event<ArrayList<String>>> by lazy {
|
||||
MutableLiveData<Event<ArrayList<String>>>()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.ui.file_viewer.viewmodel.MediaListViewModel" />
|
||||
<variable
|
||||
name="sharedViewModel"
|
||||
type="org.linphone.ui.main.viewmodel.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
|
@ -26,7 +29,7 @@
|
|||
<androidx.constraintlayout.widget.Group
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="@{viewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
|
||||
android:visibility="@{sharedViewModel.mediaViewerFullScreenMode ? View.GONE : View.VISIBLE}"
|
||||
app:constraint_referenced_ids="top_bar_background, back, file_name, share, save, date_time"/>
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue