MehranCode
user_3807706754
kotlin
3 years ago
7.2 kB
3
Indexable
package com.app.tiktokdownloader.fragment
import android.os.Build
import android.os.Bundle
import android.view.View
import android.widget.SeekBar
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
import com.app.tiktokdownloader.R
import com.app.tiktokdownloader.db.BatchViewModel
import com.app.tiktokdownloader.databinding.FragmentDownloadBinding
import com.app.tiktokdownloader.inappsub.InAppSubscription
import com.app.tiktokdownloader.mobileads.admob.AdMobBanner
import com.app.tiktokdownloader.mobileads.admob.AdMobRewarded
import com.app.tiktokdownloader.ui.KBottomDialogFragment
import com.app.tiktokdownloader.utils.D
import com.app.tiktokdownloader.utils.makeToast
import com.app.tiktokdownloader.utils.materialdialog.KMaterialProgress
import com.app.tiktokdownloader.utils.visible
import com.app.tiktokdownloader.volley.JSONPostRequest
import dagger.hilt.android.AndroidEntryPoint
import com.app.tiktokdownloader.mobileads.admobads.AdMobBannerAd
import com.app.tiktokdownloader.utils.materialdialog.KMaterialDialog
@AndroidEntryPoint
class DownloadFragment() : KBottomDialogFragment<FragmentDownloadBinding>(), View.OnClickListener {
val TAG = "downloadFragment"
private val batchVM: BatchViewModel by viewModels()
private var listener: BatchDownloadListener? = null
private var videoCount: Int = 50
// private lateinit var inAppSubs: InAppSubscription
// private lateinit var adMobRewarded: AdMobRewarded
// private lateinit var progress: KMaterialProgress
constructor(listener: BatchDownloadListener) : this() {
this.listener = listener
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// progress = KMaterialProgress(requireActivity())
// inAppSubs = InAppSubscription(requireActivity())
// adMobRewarded = AdMobRewarded(requireContext())
// binding.lytBannerAd.visible(!inAppSubs.isSubscribed)
// if (!inAppSubs.isSubscribed) {
// AdMobBanner(requireContext()).load("banner_download", binding.lytBannerAd)
// }
initViews()
}
// private fun getRewardAdListener(): AdMobRewarded.RewardedAdListener {
// return object : AdMobRewarded.RewardedAdListener {
// override fun onLoad(successful: Boolean) {
// D(TAG, "onLoad() > SUCCESSFUL => $successful")
// progress.dismiss()
// adMobRewarded.showAd(requireActivity())
// }
//
// override fun onAdShow(successful: Boolean, rewardPoints: Int, type: String?) {
// if (successful) {
// D(TAG, "onAdShow() > SUCCESSFUL => $successful")
// val batchName: String = binding.editTextBatchName.text.toString()
// listener?.onBatchDownload(batchName, videoCount)
// dismiss()
// }
// }
// }
// }
private fun initViews() {
binding.slider.progress = 50
binding.slider.max = 1000
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
binding.slider.min = 10
}
binding.slider.incrementProgressBy(10)
binding.textViewVideoCount.text = videoCount.toString()
binding.editTextBatchName.setText("${System.currentTimeMillis()}")
binding.slider.setOnSeekBarChangeListener(seekBarListener { p1 ->
val minProgress = 10
var progress = if (p1 < minProgress) minProgress else p1
progress /= 10
progress *= 10
videoCount = progress
binding.textViewVideoCount.text = videoCount.toString()
})
binding.matBtnStartBatch.setOnClickListener(this)
binding.matBtnBack.setOnClickListener(this)
binding.matBtnDownloadSingle.setOnClickListener(this)
// requireActivity().showSoftKeyboard(requireActivity(), binding.editTextBatchName)
}
override fun onClick(v: View?) {
when (v?.id) {
R.id.matBtnStartBatch -> {
if (batchVM.hasActiveBatch()) {
requireActivity().makeToast("Already Batch Running")
return
}
startNewBatch()
}
R.id.matBtnBack -> {
dismiss()
}
R.id.matBtnDownloadSingle -> {
val url = binding.editTextUrl.text.toString()
if (!url.contains("https://")) {
requireActivity().makeToast("Invalid URL")
return
}
fetchAndDownloadVideo(url)
}
}
}
private fun startNewBatch() {
val batchName = binding.editTextBatchName.text.toString()
if (batchName.isEmpty()) {
requireActivity().makeToast("Enter Batch Name")
return
}
// if (inAppSubs.isSubscribed) {
// listener?.onBatchDownload(batchName, videoCount)
// dismiss()
// return
// }
val title = "TikTok Without Limit"
val msg = "Do you want to download batch wihtout limit?"
val primaryText = "Go PRO"
val negativeText = "Watch Ad"
val listener = KMaterialDialog.DialogClickListener { primary, dialog1 ->
dialog1.dismiss()
if (primary) {
requireActivity().makeToast("GO PRO")
} else {
// progress.show()
// adMobRewarded.load("rewarded_download")
// adMobRewarded.setListener(getRewardAdListener())
}
}
KMaterialDialog(requireActivity())
.createDialog(title, msg, primaryText, negativeText, listener).show()
}
private fun fetchAndDownloadVideo(url: String) {
val progress = KMaterialProgress(requireActivity())
progress.show()
batchVM.downloadVideo(url)
batchVM.onDownloadVideo().observe(requireActivity()) {
progress.dismiss()
when (it) {
0 -> requireActivity().makeToast("Something went wrong.")
1 -> requireActivity().makeToast("Download started")
2 -> requireActivity().makeToast("Download completed")
}
}
}
private fun seekBarListener(listener: (progress: Int) -> Unit): SeekBar.OnSeekBarChangeListener {
return object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
listener.invoke(progress)
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
}
}
}
interface BatchDownloadListener {
fun onBatchDownload(title: String, count: Int)
}
override fun getViewBinding(): FragmentDownloadBinding {
return FragmentDownloadBinding.inflate(layoutInflater)
}
override fun getBottomStyle(): BottomStyle {
return BottomStyle.FULL
}
}Editor is loading...