Mercurial > dwindows
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