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