diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index c4888134..2bf15814 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -320,7 +320,7 @@ @@ -330,7 +330,7 @@ diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt index 7aba6433..700270e4 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/ConfigureMultipleDownloadsAdapter.kt @@ -25,6 +25,7 @@ import com.google.android.material.button.MaterialButton import com.google.android.material.card.MaterialCardView import com.google.android.material.progressindicator.LinearProgressIndicator import com.squareup.picasso.Picasso +import okhttp3.internal.format import java.util.* class ConfigureMultipleDownloadsAdapter(onItemClickListener: OnItemClickListener, activity: Activity) : ListAdapter(AsyncDifferConfig.Builder(DIFF_CALLBACK).build()) { @@ -77,24 +78,45 @@ class ConfigureMultipleDownloadsAdapter(onItemClickListener: OnItemClickListener itemTitle.text = title // Author ---------------------------------- - val author = card.findViewById(R.id.author) + val author = card.findViewById(R.id.subtitle) author.text = item.author - // Container ---------------------------------- - val container = card.findViewById(R.id.container) - container.text = item.format.container.uppercase(Locale.getDefault()) + // Format Note ---------------------------------- + val formatNote = card.findViewById(R.id.format_note) + if (item.format.format_note.isNotEmpty()){ + formatNote.text = item.format.format_note.uppercase(Locale.getDefault()) + }else{ + formatNote.visibility = View.GONE + } - // File Size - val fileSize = card.findViewById(R.id.filesize) - val formattedSize = fileUtil.convertFileSize(item.format.filesize) - fileSize.text = if (formattedSize == "?") "" else formattedSize.uppercase(Locale.getDefault()) + val codec = card.findViewById(R.id.codec) + val codecText = + if (item.format.encoding != "") { + item.format.encoding.uppercase() + }else if (item.format.vcodec != "none" && item.format.vcodec != ""){ + item.format.vcodec.uppercase() + } else { + item.format.acodec.uppercase() + } + if (codecText == "" || codecText == "none"){ + codec.visibility = View.GONE + }else{ + codec.visibility = View.VISIBLE + codec.text = codecText + } - // Quality - val quality = card.findViewById(R.id.quality) - quality.text = item.format.format_note + val fileSize = card.findViewById(R.id.file_size) + Log.e("aa", item.format.filesize.toString()) + val fileSizeReadable = fileUtil.convertFileSize(item.format.filesize) + Log.e("aa", fileSizeReadable) + if (fileSizeReadable == "?") fileSize.visibility = View.GONE + else { + fileSize.text = fileSizeReadable + fileSize.visibility = View.VISIBLE + } // Type Icon Button - val btn = card.findViewById(R.id.downloads_download_button_type) + val btn = card.findViewById(R.id.action_button) when(item.type) { DownloadViewModel.Type.audio -> { @@ -109,23 +131,23 @@ class ConfigureMultipleDownloadsAdapter(onItemClickListener: OnItemClickListener } card.setOnClickListener { - onItemClickListener.onCardClick(item.id) + onItemClickListener.onCardClick(item.url) } } interface OnItemClickListener { fun onButtonClick(videoURL: String, type: String?) - fun onCardClick(itemID: Long) + fun onCardClick(itemURL: String) } companion object { private val DIFF_CALLBACK: DiffUtil.ItemCallback = object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: DownloadItem, newItem: DownloadItem): Boolean { - return oldItem.id === newItem.id + return oldItem.url == newItem.url } override fun areContentsTheSame(oldItem: DownloadItem, newItem: DownloadItem): Boolean { - return oldItem.url == newItem.url && oldItem.title == newItem.title && oldItem.author == newItem.author && oldItem.type == newItem.type && oldItem.format == newItem.format + return oldItem.title == newItem.title && oldItem.author == newItem.author && oldItem.type == newItem.type && oldItem.format == newItem.format } } } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt index da27af79..19dc6035 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/GenericDownloadAdapter.kt @@ -23,6 +23,7 @@ import com.deniscerri.ytdlnis.util.FileUtil import com.google.android.material.button.MaterialButton import com.google.android.material.card.MaterialCardView import com.squareup.picasso.Picasso +import okhttp3.internal.format import java.io.File import java.text.DateFormat import java.text.SimpleDateFormat @@ -48,7 +49,7 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity: override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val cardView = LayoutInflater.from(parent.context) - .inflate(R.layout.generic_download_card, parent, false) + .inflate(R.layout.download_card, parent, false) return ViewHolder(cardView, onItemClickListener) } @@ -56,6 +57,17 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity: val item = getItem(position) val card = holder.cardView + // THUMBNAIL ---------------------------------- + val thumbnail = card.findViewById(R.id.downloads_image_view) + val imageURL = item!!.thumb + val uiHandler = Handler(Looper.getMainLooper()) + if (imageURL.isNotEmpty()) { + uiHandler.post { Picasso.get().load(imageURL).into(thumbnail) } + } else { + uiHandler.post { Picasso.get().load(R.color.black).into(thumbnail) } + } + thumbnail.setColorFilter(Color.argb(95, 0, 0, 0)) + // TITLE ---------------------------------- val itemTitle = card.findViewById(R.id.title) var title = item!!.title @@ -64,12 +76,11 @@ class GenericDownloadAdapter(onItemClickListener: OnItemClickListener, activity: } itemTitle.text = title - // TITLE ---------------------------------- - val itemUrl = card.findViewById(R.id.url) + val itemUrl = card.findViewById(R.id.subtitle) itemUrl.text = item.url - val type = card.findViewById(R.id.type) - type!!.text = item.type.toString().uppercase() + val formatNote = card.findViewById(R.id.format_note) + formatNote!!.text = item.format.format_note.uppercase() val codec = card.findViewById(R.id.codec) val codecText = diff --git a/app/src/main/java/com/deniscerri/ytdlnis/adapter/PlaylistAdapter.kt b/app/src/main/java/com/deniscerri/ytdlnis/adapter/PlaylistAdapter.kt new file mode 100644 index 00000000..84cd7657 --- /dev/null +++ b/app/src/main/java/com/deniscerri/ytdlnis/adapter/PlaylistAdapter.kt @@ -0,0 +1,136 @@ +package com.deniscerri.ytdlnis.adapter + +import android.annotation.SuppressLint +import android.app.Activity +import android.graphics.Color +import android.os.Handler +import android.os.Looper +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.CompoundButton +import android.widget.ImageView +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.AsyncDifferConfig +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.deniscerri.ytdlnis.R +import com.deniscerri.ytdlnis.database.models.ResultItem +import com.squareup.picasso.Picasso +import java.util.* + + +class PlaylistAdapter(onItemClickListener: OnItemClickListener, activity: Activity) : ListAdapter(AsyncDifferConfig.Builder(DIFF_CALLBACK).build()) { + private val checkedItems: ArrayList + private val onItemClickListener: OnItemClickListener + private val activity: Activity + + init { + checkedItems = ArrayList() + this.onItemClickListener = onItemClickListener + this.activity = activity + } + + class ViewHolder(itemView: View, onItemClickListener: OnItemClickListener?) : RecyclerView.ViewHolder(itemView) { + val cardView: ConstraintLayout + + init { + cardView = itemView.findViewById(R.id.playlist_card_constraintLayout) + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val cardView = LayoutInflater.from(parent.context) + .inflate(R.layout.playlist_item, parent, false) + return ViewHolder(cardView, onItemClickListener) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = getItem(position) + val card = holder.cardView + // THUMBNAIL ---------------------------------- + val thumbnail = card.findViewById(R.id.downloads_image_view) + val imageURL = item!!.thumb + val uiHandler = Handler(Looper.getMainLooper()) + if (imageURL.isNotEmpty()) { + uiHandler.post { Picasso.get().load(imageURL).into(thumbnail) } + } else { + uiHandler.post { Picasso.get().load(R.color.black).into(thumbnail) } + } + thumbnail.setColorFilter(Color.argb(95, 0, 0, 0)) + + // TITLE ---------------------------------- + val itemTitle = card.findViewById(R.id.title) + var title = item.title + if (title.length > 100) { + title = title.substring(0, 40) + "..." + } + itemTitle.text = title + + // CHECKBOX ---------------------------------- + val check = card.findViewById(R.id.checkBox) + check.isChecked = checkedItems.contains(item.id) + check.setOnCheckedChangeListener { buttonView, isChecked -> + checkCard(isChecked, item.id) + } + + card.setOnClickListener { + check.isChecked = !check.isChecked + } + } + + private fun checkCard(isChecked: Boolean, itemID: Long) { + if (isChecked) { + checkedItems.add(itemID) + } else { + checkedItems.remove(itemID) + } + onItemClickListener.onCardSelect(itemID, isChecked, checkedItems) + } + + interface OnItemClickListener { + fun onCardSelect(itemID: Long, isChecked: Boolean, checkedItems: List) + } + + @SuppressLint("NotifyDataSetChanged") + fun clearCheckeditems() { + for (i in 0 until itemCount){ + val item = getItem(i) + if (checkedItems.find { it == item?.id } != null){ + checkedItems.remove(item?.id) + notifyItemChanged(i) + } + } + checkedItems.clear() + } + + fun checkAll(){ + checkedItems.clear() + for (i in 0 until itemCount){ + val item = getItem(i) + checkedItems.add(item!!.id) + notifyItemChanged(i) + } + } + + fun getCheckedItems() : List{ + return checkedItems + } + + companion object { + private val DIFF_CALLBACK: DiffUtil.ItemCallback = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: ResultItem, newItem: ResultItem): Boolean { + val ranged = arrayListOf(oldItem.id, newItem.id) + return ranged[0] == ranged[1] + } + + override fun areContentsTheSame(oldItem: ResultItem, newItem: ResultItem): Boolean { + return oldItem.id == newItem.id + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt index e72104c8..414ac66e 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/ResultDao.kt @@ -9,6 +9,9 @@ interface ResultDao { @Query("SELECT * FROM results") fun getResults() : LiveData> + @Query("SELECT COUNT(id) FROM results") + fun getCount() : LiveData + @Query("SELECT * FROM results LIMIT 1") fun getFirstResult() : ResultItem diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt index 98b65f0d..4953040c 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/ResultRepository.kt @@ -14,7 +14,7 @@ import com.deniscerri.ytdlnis.util.InfoUtil class ResultRepository(private val resultDao: ResultDao, private val commandTemplateDao: CommandTemplateDao, private val context: Context) { private val tag: String = "ResultRepository" val allResults : LiveData> = resultDao.getResults() - var itemCount = MutableLiveData(0) + var itemCount = MutableLiveData(-1) suspend fun insert(it: ResultItem){ resultDao.insert(it) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt index b3cad490..5c8e15b6 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt @@ -144,6 +144,11 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application } } + fun getLatestCommandTemplateAsFormat() : Format { + val t = commandTemplateDao.getFirst() + return Format(t.title, "", "", "", "", 0, t.content) + } + fun turnResultItemsToDownloadItems(items: List) : List { val list : MutableList = mutableListOf() items.forEach { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt index 606aba8c..9506b14a 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/receiver/ShareActivity.kt @@ -14,22 +14,29 @@ import android.os.Build import android.os.Build.VERSION_CODES import android.os.Bundle import android.provider.Settings +import android.view.View +import android.view.ViewGroup import android.view.Window import android.view.WindowManager +import android.widget.Button import android.widget.TextView -import androidx.activity.ComponentActivity import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.deniscerri.ytdlnis.MainActivity import com.deniscerri.ytdlnis.R +import com.deniscerri.ytdlnis.adapter.PlaylistAdapter +import com.deniscerri.ytdlnis.database.models.DownloadItem import com.deniscerri.ytdlnis.database.models.ResultItem import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel import com.deniscerri.ytdlnis.ui.downloadcard.DownloadBottomSheetDialog -import com.google.android.material.bottomsheet.BottomSheetBehavior +import com.deniscerri.ytdlnis.ui.downloadcard.SelectPlaylistItemsBottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.CoroutineScope @@ -111,7 +118,11 @@ class ShareActivity : AppCompatActivity() { if (it.isNotEmpty() && supportFragmentManager.findFragmentByTag("downloadSingleSheet") == null){ if(resultViewModel.itemCount.value!! == it.size){ loadingBottomSheet.cancel() - showDownloadSheet(it[0]) + if (it.size == 1){ + showDownloadSheet(it[0]) + }else{ + showSelectPlaylistItems(it) + } } } } @@ -130,6 +141,24 @@ class ShareActivity : AppCompatActivity() { } } + private fun showSelectPlaylistItems(it: List){ + if (sharedPreferences.getBoolean("download_card", true)){ + val bottomSheet = SelectPlaylistItemsBottomSheetDialog(it, DownloadViewModel.Type.valueOf(sharedPreferences.getString("preferred_download_type", "video")!!)) + bottomSheet.show(supportFragmentManager, "downloadPlaylistSheet") + }else{ + lifecycleScope.launch(Dispatchers.IO){ + val downloadItems = mutableListOf() + it.forEach { res -> + val i = downloadViewModel.createDownloadItemFromResult(res, DownloadViewModel.Type.valueOf(sharedPreferences.getString("preferred_download_type", "video")!!)) + i.format = downloadViewModel.getLatestCommandTemplateAsFormat() + downloadItems.add(i) + } + downloadViewModel.queueDownloads(downloadItems) + } + this.finish() + } + } + private fun askPermissions() { if (Build.VERSION.SDK_INT < VERSION_CODES.TIRAMISU && !checkFilePermission()) { ActivityCompat.requestPermissions( diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt index e4c44d3c..378d6e45 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/HomeFragment.kt @@ -134,8 +134,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi resultViewModel.items.observe(viewLifecycleOwner) { homeAdapter!!.submitList(it) resultsList = it - Log.e(TAG, resultViewModel.itemCount.toString()) - if(resultViewModel.itemCount.value!! > 1){ + if(resultViewModel.itemCount.value!! > 1 || resultViewModel.itemCount.value!! == -1){ if (it[0].playlistTitle.isNotEmpty() && it[0].playlistTitle != getString(R.string.trendingPlaylist)){ downloadAllFabCoordinator!!.visibility = VISIBLE }else{ @@ -388,30 +387,20 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi if (viewIdName.isNotEmpty()) { if (viewIdName == "downloadSelected") { val downloadList = downloadViewModel.turnResultItemsToDownloadItems(selectedObjects!!) - downloadViewModel.putDownloadsForProcessing(selectedObjects!!, downloadList).observe(viewLifecycleOwner) { - it.forEachIndexed { i, itemID -> - downloadList[i].id = itemID - } - if (sharedPreferences!!.getBoolean("download_card", true)) { - val bottomSheet = DownloadMultipleBottomSheetDialog(downloadList) - bottomSheet.show(parentFragmentManager, "downloadMultipleSheet") - } else { - downloadViewModel.queueDownloads(downloadList) - } + if (sharedPreferences!!.getBoolean("download_card", true)) { + val bottomSheet = DownloadMultipleBottomSheetDialog(downloadList.toMutableList()) + bottomSheet.show(parentFragmentManager, "downloadMultipleSheet") + } else { + downloadViewModel.queueDownloads(downloadList) } } if (viewIdName == "downloadAll") { val downloadList = downloadViewModel.turnResultItemsToDownloadItems(resultsList!!) - downloadViewModel.putDownloadsForProcessing(resultsList!!, downloadList).observe(viewLifecycleOwner) { - it.forEachIndexed { i, itemID -> - downloadList[i].id = itemID - } - if (sharedPreferences!!.getBoolean("download_card", true)) { - val bottomSheet = DownloadMultipleBottomSheetDialog(downloadList) - bottomSheet.show(parentFragmentManager, "downloadMultipleSheet") - } else { - downloadViewModel.queueDownloads(downloadList) - } + if (sharedPreferences!!.getBoolean("download_card", true)) { + val bottomSheet = DownloadMultipleBottomSheetDialog(downloadList.toMutableList()) + bottomSheet.show(parentFragmentManager, "downloadMultipleSheet") + } else { + downloadViewModel.queueDownloads(downloadList) } } } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt index a9248a27..aa0d26dd 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt @@ -9,7 +9,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button -import android.widget.LinearLayout import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope @@ -20,31 +19,33 @@ import com.deniscerri.ytdlnis.database.dao.CommandTemplateDao import com.deniscerri.ytdlnis.database.models.DownloadItem import com.deniscerri.ytdlnis.database.models.ResultItem import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel +import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel.Type import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel +import com.google.android.exoplayer2.Player import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import com.google.android.material.button.MaterialButton import com.google.android.material.tabs.TabLayout -import com.google.gson.Gson -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel.Type import kotlinx.coroutines.withContext -class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, private val type: Type) : BottomSheetDialogFragment() { + +class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, private val downloadItem: DownloadItem, private val listener: OnDownloadItemUpdateListener) : BottomSheetDialogFragment() { private lateinit var tabLayout: TabLayout private lateinit var viewPager2: ViewPager2 private lateinit var fragmentAdapter : DownloadFragmentAdapter private lateinit var downloadViewModel: DownloadViewModel private lateinit var resultViewModel: ResultViewModel private lateinit var commandTemplateDao: CommandTemplateDao + private lateinit var onDownloadItemUpdateListener: OnDownloadItemUpdateListener override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) downloadViewModel = ViewModelProvider(this)[DownloadViewModel::class.java] resultViewModel = ViewModelProvider(this)[ResultViewModel::class.java] commandTemplateDao = DBManager.getInstance(requireContext()).commandTemplateDao + onDownloadItemUpdateListener = listener + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -63,13 +64,13 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri tabLayout = view.findViewById(R.id.download_tablayout) viewPager2 = view.findViewById(R.id.download_viewpager) - val fragments = mutableListOf(DownloadAudioFragment(resultItem), DownloadVideoFragment(resultItem)) + val fragments = mutableListOf(DownloadAudioFragment(resultItem, downloadItem), DownloadVideoFragment(resultItem, downloadItem)) lifecycleScope.launch{ withContext(Dispatchers.IO){ val nr = commandTemplateDao.getTotalNumber() if(nr > 0){ - fragments.add(DownloadCommandFragment(resultItem)) + fragments.add(DownloadCommandFragment(resultItem, downloadItem)) }else{ (tabLayout.getChildAt(0) as? ViewGroup)?.getChildAt(2)?.isEnabled = false } @@ -77,7 +78,6 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri } - val fragmentManager = parentFragmentManager fragmentAdapter = DownloadFragmentAdapter( resultItem, @@ -88,7 +88,7 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri viewPager2.adapter = fragmentAdapter viewPager2.isSaveFromParentEnabled = false - when(type) { + when(downloadItem.type) { Type.audio -> { tabLayout.selectTab(tabLayout.getTabAt(0)) viewPager2.setCurrentItem(0, false) @@ -99,7 +99,9 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri } else -> { tabLayout.selectTab(tabLayout.getTabAt(2)) - viewPager2.setCurrentItem(2, false) + viewPager2.postDelayed( { + viewPager2.setCurrentItem(2, false) + }, 200) } } @@ -121,11 +123,7 @@ class ConfigureDownloadBottomSheetDialog(private val resultItem: ResultItem, pri } }) - - val cancelBtn = view.findViewById(R.id.bottomsheet_cancel_button) - cancelBtn.setOnClickListener{ - dismiss() - } + viewPager2.setPageTransformer(BackgroundToForegroundPageTransformer()) val ok = view.findViewById