changeset 2775:5f77f52df8ac

Android: Work in progress changes to get the tree working.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 26 May 2022 16:18:33 +0000
parents 94af460bb954
children 858155527b05
files android/DWindows.kt android/dw.cpp
diffstat 2 files changed, 35 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/android/DWindows.kt	Tue May 24 09:42:35 2022 +0000
+++ b/android/DWindows.kt	Thu May 26 16:18:33 2022 +0000
@@ -67,10 +67,6 @@
 import java.util.zip.ZipFile
 import kotlin.math.*
 
-import androidx.annotation.NonNull
-
-
-
 
 // Tree View section
 class DWTreeItem(value: Any, layoutId: Int) {
@@ -547,6 +543,18 @@
         get() = currentSelectedItem
 }
 
+class DWTree(context: Context) : RecyclerView(context)
+{
+    var roots: MutableList<DWTreeItem> = ArrayList()
+
+    fun updateTree()
+    {
+        val treeViewAdapter = this.adapter as DWTreeViewAdapter
+
+        treeViewAdapter.updateTreeItems(roots)
+    }
+}
+
 // Color Wheel section
 private val HUE_COLORS = intArrayOf(
     Color.RED,
@@ -4489,19 +4497,21 @@
         return combobox
     }
 
-    fun treeNew(cid: Int): RecyclerView?
+    fun treeNew(cid: Int): DWTree?
     {
-        var tree: RecyclerView? = null
+        var tree: DWTree? = null
 
         waitOnUiThread {
-            tree = RecyclerView(this)
+            tree = DWTree(this)
             if(tree != null) {
+                val dataArrayMap = SimpleArrayMap<String, Long>()
                 val factory = object : DWTreeViewHolderFactory {
                     override fun getTreeViewHolder(view: View?, layout: Int): DWTreeViewHolder {
                         return DWTreeCustomViewHolder(view!!)
                     }
                 }
                 val treeViewAdapter = DWTreeViewAdapter(factory)
+                tree!!.tag = dataArrayMap
                 tree!!.id = cid
                 tree!!.adapter = treeViewAdapter
             }
@@ -4509,6 +4519,23 @@
         return tree
     }
 
+    fun treeInsertAfter(tree: DWTree, title: String, icon: Drawable, parent: DWTreeItem?, itemdata: Long): DWTreeItem?
+    {
+        var treeitem: DWTreeItem? = null
+
+        waitOnUiThread {
+            var treeViewAdapter = tree.adapter as DWTreeViewAdapter
+
+            treeitem = DWTreeItem(title, 0)
+            if(parent == null) {
+                tree.roots.add(treeitem!!)
+            } else {
+                parent.addChild(treeitem!!)
+            }
+        }
+        return treeitem
+    }
+
     fun containerNew(cid: Int, multi: Int): ListView?
     {
         var cont: ListView? = null
--- a/android/dw.cpp	Tue May 24 09:42:35 2022 +0000
+++ b/android/dw.cpp	Thu May 26 16:18:33 2022 +0000
@@ -3292,7 +3292,7 @@
         jclass clazz = _dw_find_class(env, DW_CLASS_NAME);
         // Get the method that you want to call
         jmethodID treeNew = env->GetMethodID(clazz, "treeNew",
-                                             "(I)Landroidx/recyclerview/widget/RecyclerView;");
+                                             "(I)Lorg/dbsoft/dwindows/DWTree;");
         // Call the method on the object
         jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, treeNew, (int)cid), _DW_REFERENCE_WEAK);
         return result;