Mercurial > dwindows
diff android/DWindows.kt @ 2777:7d7eac751f7d
Android: Connect the C API to the Kotlin tree implementation.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 22 Jun 2022 07:13:32 +0000 |
parents | 858155527b05 |
children | c28602443759 |
line wrap: on
line diff
--- a/android/DWindows.kt Tue Jun 21 07:55:53 2022 +0000 +++ b/android/DWindows.kt Wed Jun 22 07:13:32 2022 +0000 @@ -69,17 +69,15 @@ // Tree View section -class DWTreeItem(value: Any, layoutId: Int) { - private var value: Any +class DWTreeItem(title: String, icon: Drawable?, data: Long, parent: DWTreeItem?) { + private var title: String private var parent: DWTreeItem? private val children: LinkedList<DWTreeItem> - private val layoutId: Int private var level: Int private var isExpanded: Boolean private var isSelected: Boolean - var itemData: Long = 0 - var itemIcon: Drawable? = null - var parentItem: DWTreeItem? = null + private var data: Long = 0 + private var icon: Drawable? = null fun addChild(child: DWTreeItem) { child.setParent(this) @@ -88,30 +86,42 @@ updateNodeChildrenDepth(child) } - fun setValue(value: Any) { - this.value = value - } - - fun getValue(): Any { - return value + fun setTitle(title: String) { + this.title = title + } + + fun getTitle(): String { + return title + } + + fun setIcon(icon: Drawable?) { + this.icon = icon + } + + fun getIcon(): Drawable? { + return icon + } + + fun setData(data: Long) { + this.data = data + } + + fun getData(): Long { + return data + } + + fun getParent(): DWTreeItem? { + return parent } fun setParent(parent: DWTreeItem?) { this.parent = parent } - fun getParent(): DWTreeItem? { - return parent - } - fun getChildren(): LinkedList<DWTreeItem> { return children } - fun getLayoutId(): Int { - return layoutId - } - fun setLevel(level: Int) { this.level = level } @@ -144,15 +154,17 @@ } init { - this.value = value - parent = null + this.title = title + this.icon = icon + this.data = data + this.parent = parent children = LinkedList() - this.layoutId = layoutId level = 0 isExpanded = false isSelected = false } } + class DWTreeItemManager { // Collection to save the current tree nodes private val rootsNodes: LinkedList<DWTreeItem> @@ -457,7 +469,8 @@ } override fun getItemViewType(position: Int): Int { - return treeItemManager.get(position).getLayoutId() + // TODO: Fix this with no layoutId + return 0 } override fun getItemCount(): Int { @@ -530,6 +543,11 @@ notifyItemRangeInserted(0, treeItems.size) } + // Clear all the items from the tree + fun clear() { + treeItemManager.clearItems() + } + // Register a callback to be invoked when this DWTreeItem is clicked // @param listener The callback that will run fun setTreeItemClickListener(listener: OnTreeItemClickListener?) { @@ -4530,19 +4548,98 @@ waitOnUiThread { var treeViewAdapter = tree.adapter as DWTreeViewAdapter - treeitem = DWTreeItem(title, 0) + treeitem = DWTreeItem(title, icon, itemdata, parent) if(parent == null) { tree.roots.add(treeitem!!) } else { parent.addChild(treeitem!!) - treeitem!!.parentItem = parent - } - treeitem!!.itemData = itemdata - treeitem!!.itemIcon = icon + } } return treeitem } + fun treeGetTitle(tree: DWTree, item: DWTreeItem): String? + { + var retval: String? = null + + waitOnUiThread { + retval = item.getTitle() + } + return retval + } + + fun treeGetParent(tree: DWTree, item: DWTreeItem): DWTreeItem? + { + var retval: DWTreeItem? = null + + waitOnUiThread { + retval = item.getParent() + } + return retval + } + + fun treeItemChange(tree: DWTree, item: DWTreeItem, title: String?, icon: Drawable?) + { + waitOnUiThread { + if(title != null) { + item.setTitle(title) + } + if(icon != null) { + item.setIcon(icon) + } + } + } + + fun treeItemSetData(tree: DWTree, item: DWTreeItem, data: Long) + { + waitOnUiThread { + item.setData(data) + } + } + + fun treeItemGetData(tree: DWTree, item: DWTreeItem): Long + { + var retval: Long = 0 + + waitOnUiThread { + retval = item.getData() + } + return retval + } + + fun treeItemSelect(tree: DWTree, item: DWTreeItem) + { + waitOnUiThread { + item.setSelected(true) + } + } + + fun treeItemExpand(tree: DWTree, item: DWTreeItem, state: Int) + { + waitOnUiThread { + val treeViewAdapter = tree.adapter as DWTreeViewAdapter + + if(state != 0) { + treeViewAdapter.expandNode(item) + } else { + treeViewAdapter.collapseNode(item) + } + } + } + + fun treeItemDelete(tree: DWTree, item: DWTreeItem) + { + // TODO: Implement this + } + + fun treeClear(tree: DWTree) + { + waitOnUiThread { + val treeViewAdapter = tree.adapter as DWTreeViewAdapter + treeViewAdapter.clear() + } + } + fun containerNew(cid: Int, multi: Int): ListView? { var cont: ListView? = null