comparison android/DWindows.kt @ 2505:a149dabf6a1f

Android: HTML touchups, implement DW_SIGNAL_HTML_CHANGED: STARTED and COMPLETE. Make sure Javascript is enabled and that links open in the same WebView.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 06 May 2021 22:02:49 +0000
parents 1c2a79313b04
children f54051c3f2a5
comparison
equal deleted inserted replaced
2504:25c56d77d016 2505:a149dabf6a1f
1 package org.dbsoft.dwindows 1 package org.dbsoft.dwindows
2 2
3 import android.content.ClipData 3 import android.content.ClipData
4 import android.content.ClipboardManager 4 import android.content.ClipboardManager
5 import android.content.DialogInterface 5 import android.content.DialogInterface
6 import android.content.Intent
6 import android.content.pm.ActivityInfo 7 import android.content.pm.ActivityInfo
7 import android.content.res.Configuration 8 import android.content.res.Configuration
9 import android.graphics.Bitmap
8 import android.graphics.drawable.GradientDrawable 10 import android.graphics.drawable.GradientDrawable
9 import android.media.AudioManager 11 import android.media.AudioManager
10 import android.media.ToneGenerator 12 import android.media.ToneGenerator
11 import android.os.Bundle 13 import android.os.Bundle
12 import android.os.Handler 14 import android.os.Handler
18 import android.util.Log 20 import android.util.Log
19 import android.view.Gravity 21 import android.view.Gravity
20 import android.view.View 22 import android.view.View
21 import android.view.ViewGroup 23 import android.view.ViewGroup
22 import android.webkit.WebView 24 import android.webkit.WebView
25 import android.webkit.WebViewClient
23 import android.widget.* 26 import android.widget.*
24 import android.widget.SeekBar.OnSeekBarChangeListener 27 import android.widget.SeekBar.OnSeekBarChangeListener
25 import androidx.appcompat.app.AlertDialog 28 import androidx.appcompat.app.AlertDialog
26 import androidx.appcompat.app.AppCompatActivity 29 import androidx.appcompat.app.AppCompatActivity
27 import androidx.collection.SimpleArrayMap 30 import androidx.collection.SimpleArrayMap
29 import androidx.viewpager2.widget.ViewPager2 32 import androidx.viewpager2.widget.ViewPager2
30 import com.google.android.material.tabs.TabLayout 33 import com.google.android.material.tabs.TabLayout
31 import com.google.android.material.tabs.TabLayout.OnTabSelectedListener 34 import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
32 import com.google.android.material.tabs.TabLayoutMediator 35 import com.google.android.material.tabs.TabLayoutMediator
33 import java.util.* 36 import java.util.*
34 import java.util.concurrent.locks.Lock
35 import java.util.concurrent.locks.ReentrantLock 37 import java.util.concurrent.locks.ReentrantLock
36 38
37 39
38 class DWTabViewPagerAdapter : RecyclerView.Adapter<DWTabViewPagerAdapter.DWEventViewHolder>() { 40 class DWTabViewPagerAdapter : RecyclerView.Adapter<DWTabViewPagerAdapter.DWEventViewHolder>() {
39 public val viewList = mutableListOf<LinearLayout>() 41 public val viewList = mutableListOf<LinearLayout>()
50 override fun onBindViewHolder(holder: DWEventViewHolder, position: Int) { 52 override fun onBindViewHolder(holder: DWEventViewHolder, position: Int) {
51 holder.setIsRecyclable(false); 53 holder.setIsRecyclable(false);
52 } 54 }
53 55
54 class DWEventViewHolder(var view: View) : RecyclerView.ViewHolder(view) 56 class DWEventViewHolder(var view: View) : RecyclerView.ViewHolder(view)
57 }
58
59 private class DWWebViewClient : WebViewClient() {
60 //Implement shouldOverrideUrlLoading//
61 override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
62 // We always want to load in our own WebView,
63 // to match the behavior on the other platforms
64 return false
65 }
66 override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
67 // Handle the DW_HTML_CHANGE_STARTED event
68 eventHandlerHTMLChanged(view, 19, url, 1)
69 }
70
71 override fun onPageFinished(view: WebView, url: String) {
72 // Handle the DW_HTML_CHANGE_COMPLETE event
73 eventHandlerHTMLChanged(view, 19, url, 4)
74 }
75
76 external fun eventHandlerHTMLChanged(obj1: View, message: Int, URI: String, status: Int)
55 } 77 }
56 78
57 class DWindows : AppCompatActivity() { 79 class DWindows : AppCompatActivity() {
58 var firstWindow: Boolean = true 80 var firstWindow: Boolean = true
59 var windowLayout: LinearLayout? = null 81 var windowLayout: LinearLayout? = null
810 var dataArrayMap = SimpleArrayMap<String, Long>() 832 var dataArrayMap = SimpleArrayMap<String, Long>()
811 833
812 html = WebView(this) 834 html = WebView(this)
813 html!!.tag = dataArrayMap 835 html!!.tag = dataArrayMap
814 html!!.id = cid 836 html!!.id = cid
837 // Configure a few settings to make it behave as we expect
838 html!!.webViewClient = DWWebViewClient()
839 html!!.settings.javaScriptEnabled = true
815 } 840 }
816 return html 841 return html
817 } 842 }
818 843
819 fun htmlLoadURL(html: WebView, url: String) 844 fun htmlLoadURL(html: WebView, url: String)