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