changeset 2613:72f1141c07aa

Android: Standardize DWContainer behavior part 2. If single selection a single tap on a row will cause ENTER. If multiple selection... single tap will select or deselect. A long tap will cause CONTEXT, a double tap will cause ENTER.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 18 Jul 2021 21:21:49 +0000
parents 4628c8c34125
children dbcd9416e9c9
files android/DWindows.kt
diffstat 1 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/android/DWindows.kt	Sun Jul 18 20:55:45 2021 +0000
+++ b/android/DWindows.kt	Sun Jul 18 21:21:49 2021 +0000
@@ -628,6 +628,8 @@
     var simpleMode: Boolean = true
     var oddColor: Int? = null
     var evenColor: Int? = null
+    var lastClick: Long = 0
+    var lastClickRow: Int = -1
 
     override fun getCount(): Int {
         return model.numberOfRows()
@@ -2147,10 +2149,22 @@
             cont!!.setOnItemClickListener { parent, view, position, id ->
                 val title = adapter.model.getRowTitle(position)
                 val data = adapter.model.getRowData(position)
+                val now = System.currentTimeMillis()
 
                 view.isSelected = !view.isSelected
                 adapter.selectedItem = position
-                eventHandlerContainer(cont!!, 12, title, 0, 0, data)
+                // If we are single select or we got a double tap...
+                // Generate an ENTER event
+                if(cont!!.choiceMode != ListView.CHOICE_MODE_MULTIPLE ||
+                    (position == adapter.lastClickRow &&
+                    (now - adapter.lastClick) < ViewConfiguration.getDoubleTapTimeout())) {
+                    eventHandlerContainer(cont!!, 9, title, 0, 0, data)
+                } else {
+                    // If we are mutiple select, generate a SELECT event
+                    eventHandlerContainer(cont!!, 12, title, 0, 0, data)
+                }
+                adapter.lastClick = now
+                adapter.lastClickRow = position
             }
             cont!!.setOnContextClickListener {
                 if(adapter.selectedItem > -1 && adapter.selectedItem < adapter.model.numberOfRows()) {
@@ -2165,7 +2179,7 @@
                 val title = adapter.model.getRowTitle(position)
                 val data = adapter.model.getRowData(position)
 
-                eventHandlerContainer(cont!!, 9, title, 0, 0, data)
+                eventHandlerContainer(cont!!, 10, title, 0, 0, data)
                 true
             }
         }