comparison android/DWindows.kt @ 2613:72f1141c07aa

Android: Standardize DWContainer behavior part 2. If single selection a single tap on a row will cause ENTER. If multiple selection... single tap will select or deselect. A long tap will cause CONTEXT, a double tap will cause ENTER.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 18 Jul 2021 21:21:49 +0000
parents ed2c4a503666
children dbcd9416e9c9
comparison
equal deleted inserted replaced
2612:4628c8c34125 2613:72f1141c07aa
626 var model = DWContainerModel() 626 var model = DWContainerModel()
627 var selectedItem: Int = -1 627 var selectedItem: Int = -1
628 var simpleMode: Boolean = true 628 var simpleMode: Boolean = true
629 var oddColor: Int? = null 629 var oddColor: Int? = null
630 var evenColor: Int? = null 630 var evenColor: Int? = null
631 var lastClick: Long = 0
632 var lastClickRow: Int = -1
631 633
632 override fun getCount(): Int { 634 override fun getCount(): Int {
633 return model.numberOfRows() 635 return model.numberOfRows()
634 } 636 }
635 637
2145 cont!!.choiceMode = ListView.CHOICE_MODE_MULTIPLE 2147 cont!!.choiceMode = ListView.CHOICE_MODE_MULTIPLE
2146 } 2148 }
2147 cont!!.setOnItemClickListener { parent, view, position, id -> 2149 cont!!.setOnItemClickListener { parent, view, position, id ->
2148 val title = adapter.model.getRowTitle(position) 2150 val title = adapter.model.getRowTitle(position)
2149 val data = adapter.model.getRowData(position) 2151 val data = adapter.model.getRowData(position)
2152 val now = System.currentTimeMillis()
2150 2153
2151 view.isSelected = !view.isSelected 2154 view.isSelected = !view.isSelected
2152 adapter.selectedItem = position 2155 adapter.selectedItem = position
2153 eventHandlerContainer(cont!!, 12, title, 0, 0, data) 2156 // If we are single select or we got a double tap...
2157 // Generate an ENTER event
2158 if(cont!!.choiceMode != ListView.CHOICE_MODE_MULTIPLE ||
2159 (position == adapter.lastClickRow &&
2160 (now - adapter.lastClick) < ViewConfiguration.getDoubleTapTimeout())) {
2161 eventHandlerContainer(cont!!, 9, title, 0, 0, data)
2162 } else {
2163 // If we are mutiple select, generate a SELECT event
2164 eventHandlerContainer(cont!!, 12, title, 0, 0, data)
2165 }
2166 adapter.lastClick = now
2167 adapter.lastClickRow = position
2154 } 2168 }
2155 cont!!.setOnContextClickListener { 2169 cont!!.setOnContextClickListener {
2156 if(adapter.selectedItem > -1 && adapter.selectedItem < adapter.model.numberOfRows()) { 2170 if(adapter.selectedItem > -1 && adapter.selectedItem < adapter.model.numberOfRows()) {
2157 val title = adapter.model.getRowTitle(adapter.selectedItem) 2171 val title = adapter.model.getRowTitle(adapter.selectedItem)
2158 val data = adapter.model.getRowData(adapter.selectedItem) 2172 val data = adapter.model.getRowData(adapter.selectedItem)
2163 } 2177 }
2164 cont!!.setOnItemLongClickListener { parent, view, position, id -> 2178 cont!!.setOnItemLongClickListener { parent, view, position, id ->
2165 val title = adapter.model.getRowTitle(position) 2179 val title = adapter.model.getRowTitle(position)
2166 val data = adapter.model.getRowData(position) 2180 val data = adapter.model.getRowData(position)
2167 2181
2168 eventHandlerContainer(cont!!, 9, title, 0, 0, data) 2182 eventHandlerContainer(cont!!, 10, title, 0, 0, data)
2169 true 2183 true
2170 } 2184 }
2171 } 2185 }
2172 return cont 2186 return cont
2173 } 2187 }