diff android/DWindows.kt @ 2558:ebc6a4ff5f1f

Android: Implement container row data and titles, required for the callbacks.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 18 May 2021 01:04:52 +0000
parents 756331246f94
children 3da35cd91ca7
line wrap: on
line diff
--- a/android/DWindows.kt	Mon May 17 21:11:40 2021 +0000
+++ b/android/DWindows.kt	Tue May 18 01:04:52 2021 +0000
@@ -465,6 +465,8 @@
     var columns = mutableListOf<String?>()
     var types = mutableListOf<Int>()
     var data = mutableListOf<Any?>()
+    var rowdata = mutableListOf<Long>()
+    var rowtitle = mutableListOf<String?>()
 
     fun numberOfColumns(): Int
     {
@@ -511,6 +513,36 @@
         }
     }
 
+    fun changeRowData(row: Int, rdata: Long)
+    {
+        if(row > -1 && row < rowdata.size) {
+            rowdata[row] = rdata
+        }
+    }
+
+    fun getRowData(row: Int): Long
+    {
+        if(row > -1 && row < rowdata.size) {
+            return rowdata[row]
+        }
+        return 0
+    }
+
+    fun changeRowTitle(row: Int, title: String?)
+    {
+        if(row > -1 && row < rowtitle.size) {
+            rowtitle[row] = title
+        }
+    }
+
+    fun getRowTitle(row: Int): String?
+    {
+        if(row > -1 && row < rowtitle.size) {
+            return rowtitle[row]
+        }
+        return null
+    }
+
     fun addColumn(title: String?, type: Int)
     {
         columns.add(title)
@@ -519,14 +551,62 @@
         data.clear()
     }
 
+    fun deleteRows(count: Int)
+    {
+        if(count < rowdata.size) {
+            for(i in 0 until count) {
+                for(j in 0 until columns.size) {
+                    data.removeAt(0)
+                }
+                rowdata.removeAt(0)
+                rowtitle.removeAt(0)
+            }
+        } else {
+            data.clear()
+            rowdata.clear()
+            rowtitle.clear()
+        }
+    }
+
+    fun deleteRowByTitle(title: String?)
+    {
+        for(i in 0 until rowtitle.size) {
+            if(rowtitle[i] != null && rowtitle[i] == title) {
+                for(j in 0 until columns.size) {
+                    data.removeAt(i * columns.size)
+                }
+                rowdata.removeAt(i)
+                rowtitle.removeAt(i)
+            }
+        }
+    }
+
+    fun deleteRowByData(rdata: Long)
+    {
+        for(i in 0 until rowdata.size) {
+            if(rowdata[i] == rdata) {
+                for(j in 0 until columns.size) {
+                    data.removeAt(i * columns.size)
+                }
+                rowdata.removeAt(i)
+                rowtitle.removeAt(i)
+            }
+        }
+    }
+
     fun addRows(count: Int): Long
     {
         var startRow: Long = numberOfRows().toLong()
 
-        for(i in 0 until (count * columns.size))
+        for(i in 0 until count)
         {
-            // Fill in with nulls to be set later
-            data.add(null)
+            for(j in 0 until columns.size)
+            {
+                // Fill in with nulls to be set later
+                data.add(null)
+            }
+            rowdata.add(0)
+            rowtitle.add(null)
         }
         return startRow
     }
@@ -534,6 +614,8 @@
     fun clear()
     {
         data.clear()
+        rowdata.clear()
+        rowtitle.clear()
     }
 }
 
@@ -1953,6 +2035,24 @@
         }
     }
 
+    fun containerChangeRowData(cont: ListView, row: Int, data: Long)
+    {
+        waitOnUiThread {
+            val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
+
+            adapter.model.changeRowData(row, data)
+        }
+    }
+
+    fun containerChangeRowTitle(cont: ListView, row: Int, title: String?)
+    {
+        waitOnUiThread {
+            val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
+
+            adapter.model.changeRowTitle(row, title)
+        }
+    }
+
     fun containerGetColumnType(cont: ListView, column: Int): Int
     {
         var type: Int = 0
@@ -1965,6 +2065,33 @@
         return type
     }
 
+    fun containerDelete(cont: ListView, rowcount: Int)
+    {
+        waitOnUiThread {
+            val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
+
+            adapter.model.deleteRows(rowcount)
+        }
+    }
+
+    fun containerRowDeleteByTitle(cont: ListView, title: String?)
+    {
+        waitOnUiThread {
+            val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
+
+            adapter.model.deleteRowByTitle(title)
+        }
+    }
+
+    fun containerRowDeleteByData(cont: ListView, data: Long)
+    {
+        waitOnUiThread {
+            val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
+
+            adapter.model.deleteRowByData(data)
+        }
+    }
+
     fun containerClear(cont: ListView)
     {
         waitOnUiThread {