comparison android/DWindows.kt @ 2608:a11522c30345

Android: Add initial code to handle button presses and long clicks on DWRender. Android Studio seems to think there is something wrong with the setOnTouchListener() code but it seems to work.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 16 Jul 2021 18:55:05 +0000
parents 3b9bbd69bb9c
children ed2c4a503666
comparison
equal deleted inserted replaced
2607:3b9bbd69bb9c 2608:a11522c30345
1 package org.dbsoft.dwindows 1 package org.dbsoft.dwindows
2 2
3 import android.R 3 import android.R
4 import android.annotation.SuppressLint
4 import android.app.Activity 5 import android.app.Activity
5 import android.app.Dialog 6 import android.app.Dialog
6 import android.app.NotificationChannel 7 import android.app.NotificationChannel
7 import android.app.NotificationManager 8 import android.app.NotificationManager
8 import android.content.* 9 import android.content.*
240 241
241 class DWRender(context: Context) : View(context) { 242 class DWRender(context: Context) : View(context) {
242 var cachedCanvas: Canvas? = null 243 var cachedCanvas: Canvas? = null
243 var typeface: Typeface? = null 244 var typeface: Typeface? = null
244 var fontsize: Float? = null 245 var fontsize: Float? = null
246 var evx: Float = 0f
247 var evy: Float = 0f
245 248
246 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) { 249 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) {
247 super.onSizeChanged(width, height, oldWidth, oldHeight) 250 super.onSizeChanged(width, height, oldWidth, oldHeight)
248 // Send DW_SIGNAL_CONFIGURE 251 // Send DW_SIGNAL_CONFIGURE
249 eventHandlerInt(1, width, height, 0, 0) 252 eventHandlerInt(1, width, height, 0, 0)
2869 val dataArrayMap = SimpleArrayMap<String, Long>() 2872 val dataArrayMap = SimpleArrayMap<String, Long>()
2870 2873
2871 render = DWRender(this) 2874 render = DWRender(this)
2872 render!!.tag = dataArrayMap 2875 render!!.tag = dataArrayMap
2873 render!!.id = cid 2876 render!!.id = cid
2877 render!!.setOnTouchListener(object : View.OnTouchListener {
2878 @SuppressLint("ClickableViewAccessibility")
2879 override fun onTouch(v: View, event: MotionEvent): Boolean {
2880 when (event.action) {
2881 MotionEvent.ACTION_DOWN -> {
2882 render!!.evx = event.x
2883 render!!.evy = event.y
2884 }
2885 MotionEvent.ACTION_UP -> {
2886 render!!.evx = event.x
2887 render!!.evy = event.y
2888 }
2889 }
2890 return false
2891 }
2892 })
2893 render!!.setOnLongClickListener{
2894 // Long click functions as button 2
2895 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 2, 0)
2896 true
2897 }
2898 render!!.setOnClickListener{
2899 // Normal click functions as button 1
2900 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 1, 0)
2901 true
2902 }
2874 render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event -> 2903 render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
2875 if (event.action == KeyEvent.ACTION_DOWN) { 2904 if (event.action == KeyEvent.ACTION_DOWN) {
2876 eventHandlerKey(render!!, 2, keyCode, event.unicodeChar, event.modifiers, event.characters) 2905 eventHandlerKey(render!!, 2, keyCode, event.unicodeChar, event.modifiers, event.characters)
2877 true 2906 true
2878 } 2907 }