refs #4683 feat:webFragment

This commit is contained in:
Sergio De la torre 2024-03-12 11:27:07 +01:00
parent 982713f4a2
commit 281f33047a
1 changed files with 44 additions and 19 deletions

View File

@ -1,14 +1,18 @@
package es.verdnatura.presentation.view.feature.controlador.fragment
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.drawable.Drawable
import android.os.Build
import android.os.Bundle
import android.print.PrintAttributes
import android.print.PrintManager
import android.view.GestureDetector
import android.view.MotionEvent
import android.view.View
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.widget.ImageView
import androidx.core.view.GestureDetectorCompat
import androidx.recyclerview.widget.LinearLayoutManager
import es.verdnatura.R
import es.verdnatura.databinding.FragmentWebBinding
@ -18,12 +22,11 @@ import es.verdnatura.presentation.common.ToolBarAdapterTooltip
import es.verdnatura.presentation.view.component.CustomDialog
import org.json.JSONObject
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
class WebFragment(
var entryPoint: String = ""
) : BaseFragment<FragmentWebBinding, ControladorViewModel>(ControladorViewModel::class) {
private lateinit var gestureDetector: GestureDetectorCompat
override fun getLayoutId(): Int = R.layout.fragment_web
private lateinit var customDialog: CustomDialog
@ -33,16 +36,41 @@ class WebFragment(
override fun init() {
customDialog = CustomDialog(requireContext())
setToolbar()
setWeb()
super.init()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
gestureDetector = GestureDetectorCompat(
requireActivity(),
object : GestureDetector.SimpleOnGestureListener() {
override fun onFling(
e1: MotionEvent?,
e2: MotionEvent,
velocityX: Float,
velocityY: Float
): Boolean {
if (velocityX > 100 && velocityY < 2000) {
binding.webView.goBack()
return true
}
return false
}
}
)
super.onViewCreated(view, savedInstanceState)
}
@SuppressLint("ClickableViewAccessibility")
private fun setWeb() {
binding.webView.webChromeClient = WebChromeClient()
val webSettings = binding.webView.settings
webSettings.javaScriptEnabled = true
webSettings.domStorageEnabled = true
@ -52,16 +80,18 @@ class WebFragment(
webSettings.displayZoomControls = false
webSettings.setSupportZoom(true)
webSettings.allowFileAccess = true
//webSettings.defaultTextEncodingName = "utf-8"
var dataScanned = JSONObject(entryPoint)
binding.webView.setOnTouchListener { v, event ->
gestureDetector.onTouchEvent(event)
}
val dataScanned = JSONObject(entryPoint)
if (dataScanned.toString().contains("cmr?")){
if (dataScanned.toString().contains("cmr?")) {
val pdfUrl = "${dataScanned.get("web")}"
val googleDocsViewerUrl = "https://docs.google.com/gview?embedded=true&url=$pdfUrl"
binding.webView.loadUrl(googleDocsViewerUrl)
}else{
} else {
binding.webView.loadUrl(dataScanned.get("web").toString())
}
@ -70,17 +100,15 @@ class WebFragment(
private fun setToolbar() {
binding.mainToolbar.toolbarTitle.text =
getString(R.string.item) + JSONObject(entryPoint).get("entryPoint").toString()
buildString {
append(getString(R.string.item))
append(JSONObject(entryPoint).get("entryPoint").toString())
}
val listIcons: ArrayList<ImageView> = ArrayList()
val iconPrint = ImageView(context)
iconPrint.setImageResource(R.drawable.ic_print_black_24dp)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp)
}
iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp)
//listIcons.add(iconPrint)
@ -97,12 +125,10 @@ class WebFragment(
binding.mainToolbar.toolbarIcons.layoutManager =
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
}
private fun createWebPrintJob(webView: WebView) {
// Get a PrintManager instance
(activity?.getSystemService(Context.PRINT_SERVICE) as? PrintManager)?.let { printManager ->
@ -124,6 +150,5 @@ class WebFragment(
}
}
}