diff android/DWindows.kt @ 2545:f803f3b164cf

Android: Implement dw_menu_item_set_state/check() dw_menu_item_delete() and dw_menu_destroy(). Also enable checkbox handling.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 13 May 2021 22:03:48 +0000
parents dbfcc0e357d6
children 897d94c20365
line wrap: on
line diff
--- a/android/DWindows.kt	Thu May 13 20:46:07 2021 +0000
+++ b/android/DWindows.kt	Thu May 13 22:03:48 2021 +0000
@@ -437,6 +437,8 @@
                         group += 1
                     } else if(menuitem.menuitem == null) {
                         menuitem.menuitem = menu?.add(group, menuitem.id, 0, menuitem.title)
+                        menuitem.menuitem!!.isCheckable = menuitem.check
+                        menuitem.menuitem!!.isChecked = menuitem.checked
                         menuitem.menuitem!!.setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener { item: MenuItem? ->
                             eventHandlerSimple(menuitem, 8)
                             true
@@ -564,6 +566,50 @@
         return menuitem
     }
 
+    fun menuDestroy(menu: DWMenu)
+    {
+        menu.children.clear()
+        runOnUiThread {
+            menu.menu!!.clear()
+            invalidateOptionsMenu()
+        }
+    }
+
+    fun menuDeleteItem(menu: DWMenu, cid: Int)
+    {
+        for(menuitem in menu.children) {
+            if(menuitem.id == cid) {
+                menu.children.remove(menuitem)
+                runOnUiThread {
+                    menu.menu!!.removeItem(menuitem.id)
+                    invalidateOptionsMenu()
+                }
+            }
+        }
+    }
+
+    fun menuSetState(menu: DWMenu, cid: Int, state: Int)
+    {
+        for(menuitem in menu.children) {
+            if(menuitem.id == cid) {
+                // Handle DW_MIS_CHECKED/UNCHECKED
+                if((state and ((1 shl 2) or (1 shl 3))) != 0) {
+                    var checked: Boolean = false
+
+                    // Handle DW_MIS_CHECKED
+                    if ((state and (1 shl 2)) != 0) {
+                        checked = true
+                    }
+                    menuitem.checked = checked
+                    runOnUiThread {
+                        menuitem.menuitem!!.isChecked = checked
+                        invalidateOptionsMenu()
+                    }
+                }
+            }
+        }
+    }
+
     /*
      * These are the Android calls to actually create the UI...
      * forwarded from the C Dynamic Windows API