11package com.github.libretube.ui.fragments
22
3+ import android.annotation.SuppressLint
34import android.content.ComponentName
45import android.content.Context
56import android.content.Intent
@@ -8,11 +9,15 @@ import android.content.ServiceConnection
89import android.os.Bundle
910import android.os.IBinder
1011import android.view.View
12+ import android.view.ViewGroup.MarginLayoutParams
1113import androidx.core.content.ContextCompat
1214import androidx.core.os.bundleOf
1315import androidx.core.view.isGone
1416import androidx.core.view.isVisible
17+ import androidx.core.view.marginBottom
18+ import androidx.core.view.updateLayoutParams
1519import androidx.fragment.app.Fragment
20+ import androidx.fragment.app.activityViewModels
1621import androidx.lifecycle.lifecycleScope
1722import androidx.recyclerview.widget.GridLayoutManager
1823import androidx.recyclerview.widget.RecyclerView
@@ -26,6 +31,7 @@ import com.github.libretube.db.DatabaseHolder.Database
2631import com.github.libretube.db.obj.DownloadWithItems
2732import com.github.libretube.db.obj.filterByTab
2833import com.github.libretube.extensions.ceilHalf
34+ import com.github.libretube.extensions.dpToPx
2935import com.github.libretube.extensions.formatAsFileSize
3036import com.github.libretube.extensions.serializable
3137import com.github.libretube.extensions.setOnDismissListener
@@ -40,6 +46,8 @@ import com.github.libretube.services.DownloadService
4046import com.github.libretube.ui.adapters.DownloadsAdapter
4147import com.github.libretube.ui.base.DynamicLayoutManagerFragment
4248import com.github.libretube.ui.extensions.setupFragmentAnimation
49+ import com.github.libretube.ui.models.CommonPlayerViewModel
50+ import com.github.libretube.ui.models.PlayerViewModel
4351import com.github.libretube.ui.sheets.BaseBottomSheet
4452import com.github.libretube.ui.viewholders.DownloadsViewHolder
4553import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -101,11 +109,14 @@ class DownloadsFragmentAdapter(fragment: Fragment) : FragmentStateAdapter(fragme
101109 }
102110}
103111
112+ @SuppressLint(" UnsafeOptInUsageError" )
104113class DownloadsFragmentPage : DynamicLayoutManagerFragment (R .layout.fragment_download_content) {
105114 private lateinit var adapter: DownloadsAdapter
106115 private var _binding : FragmentDownloadContentBinding ? = null
107116 private val binding get() = _binding !!
108117
118+ private val playerViewModel: CommonPlayerViewModel by activityViewModels()
119+
109120 private var binder: DownloadService .LocalBinder ? = null
110121 private val downloadReceiver = DownloadReceiver ()
111122 private lateinit var downloadTab: DownloadTab
@@ -227,6 +238,12 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
227238
228239 NavigationHelper .openAudioPlayerFragment(requireContext(), offlinePlayer = true )
229240 }
241+
242+ playerViewModel.isMiniPlayerVisible.observe(viewLifecycleOwner) { isMiniPlayerVisible ->
243+ binding.fabContainer.updateLayoutParams<MarginLayoutParams > {
244+ bottomMargin = (if (isMiniPlayerVisible) 64f else 16f ).dpToPx()
245+ }
246+ }
230247 }
231248
232249 private fun submitDownloadList (items : List <DownloadWithItems >) {
0 commit comments