Mercurial > dwindows
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) |