comparison android/DWindows.kt @ 2519:551313c064f2

Android: Implement ListBox with ListView and fill in the missing listbox functions. Multiple selection doesn't seem to be working, so might need some more work.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 08 May 2021 21:34:55 +0000
parents d746323f2841
children 167af4b0004b
comparison
equal deleted inserted replaced
2518:c4e90a623437 2519:551313c064f2
132 intc: Int, 132 intc: Int,
133 intd: Int 133 intd: Int
134 ) 134 )
135 } 135 }
136 136
137 class DWListBox(context: Context) : ListView(context), OnItemClickListener {
138 var list = mutableListOf<String>()
139 var selected: Int = -1
140
141 init {
142 setAdapter(
143 ArrayAdapter(
144 context,
145 android.R.layout.simple_list_item_1, list
146 )
147 )
148 setOnItemClickListener(this)
149 }
150
151 override fun onItemClick(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
152 selected = position
153 eventHandlerInt(11, position, 0, 0, 0)
154 }
155
156 external fun eventHandlerInt(
157 message: Int,
158 inta: Int,
159 intb: Int,
160 intc: Int,
161 intd: Int
162 )
163 }
164
137 class DWindows : AppCompatActivity() { 165 class DWindows : AppCompatActivity() {
138 var firstWindow: Boolean = true 166 var firstWindow: Boolean = true
139 var windowLayout: LinearLayout? = null 167 var windowLayout: LinearLayout? = null
140 var threadLock = ReentrantLock() 168 var threadLock = ReentrantLock()
141 var threadCond = threadLock.newCondition() 169 var threadCond = threadLock.newCondition()
1045 combobox!!.setText(text) 1073 combobox!!.setText(text)
1046 } 1074 }
1047 return combobox 1075 return combobox
1048 } 1076 }
1049 1077
1078 fun listBoxNew(cid: Int, multi: Int): DWListBox?
1079 {
1080 var listbox: DWListBox? = null
1081
1082 waitOnUiThread {
1083 var dataArrayMap = SimpleArrayMap<String, Long>()
1084
1085 listbox = DWListBox(this)
1086 listbox!!.tag = dataArrayMap
1087 listbox!!.id = cid
1088 if(multi != 0) {
1089 listbox!!.choiceMode = ListView.CHOICE_MODE_MULTIPLE;
1090 }
1091 }
1092 return listbox
1093 }
1094
1050 fun listOrComboBoxAppend(window: View, text: String) 1095 fun listOrComboBoxAppend(window: View, text: String)
1051 { 1096 {
1052 waitOnUiThread { 1097 waitOnUiThread {
1053 if(window is DWComboBox) { 1098 if(window is DWComboBox) {
1054 val combobox = window 1099 val combobox = window
1055 1100
1056 combobox.list.add(text) 1101 combobox.list.add(text)
1102 } else if(window is DWListBox) {
1103 val listbox = window
1104
1105 listbox.list.add(text)
1057 } 1106 }
1058 } 1107 }
1059 } 1108 }
1060 1109
1061 fun listOrComboBoxInsert(window: View, text: String, pos: Int) 1110 fun listOrComboBoxInsert(window: View, text: String, pos: Int)
1063 waitOnUiThread { 1112 waitOnUiThread {
1064 if(window is DWComboBox) { 1113 if(window is DWComboBox) {
1065 val combobox = window 1114 val combobox = window
1066 1115
1067 combobox.list.add(pos, text) 1116 combobox.list.add(pos, text)
1117 } else if(window is DWListBox) {
1118 val listbox = window
1119
1120 listbox.list.add(pos, text)
1068 } 1121 }
1069 } 1122 }
1070 } 1123 }
1071 1124
1072 fun listOrComboBoxClear(window: View) 1125 fun listOrComboBoxClear(window: View)
1074 waitOnUiThread { 1127 waitOnUiThread {
1075 if(window is DWComboBox) { 1128 if(window is DWComboBox) {
1076 val combobox = window 1129 val combobox = window
1077 1130
1078 combobox.list.clear() 1131 combobox.list.clear()
1132 } else if(window is DWListBox) {
1133 val listbox = window
1134
1135 listbox.list.clear()
1079 } 1136 }
1080 } 1137 }
1081 } 1138 }
1082 1139
1083 fun listOrComboBoxCount(window: View): Int 1140 fun listOrComboBoxCount(window: View): Int
1087 waitOnUiThread { 1144 waitOnUiThread {
1088 if(window is DWComboBox) { 1145 if(window is DWComboBox) {
1089 val combobox = window 1146 val combobox = window
1090 1147
1091 retval = combobox.list.count() 1148 retval = combobox.list.count()
1149 } else if(window is DWListBox) {
1150 val listbox = window
1151
1152 retval = listbox.list.count()
1092 } 1153 }
1093 } 1154 }
1094 return retval 1155 return retval
1095 } 1156 }
1096 1157
1100 if(window is DWComboBox) { 1161 if(window is DWComboBox) {
1101 val combobox = window 1162 val combobox = window
1102 1163
1103 if(index < combobox.list.count()) 1164 if(index < combobox.list.count())
1104 combobox.list[index] = text 1165 combobox.list[index] = text
1166 } else if(window is DWListBox) {
1167 val listbox = window
1168
1169 if(index < listbox.list.count())
1170 listbox.list[index] = text
1105 } 1171 }
1106 } 1172 }
1107 } 1173 }
1108 1174
1109 fun listOrComboBoxGetText(window: View, index: Int): String? 1175 fun listOrComboBoxGetText(window: View, index: Int): String?
1114 if(window is DWComboBox) { 1180 if(window is DWComboBox) {
1115 val combobox = window 1181 val combobox = window
1116 1182
1117 if(index < combobox.list.count()) 1183 if(index < combobox.list.count())
1118 retval = combobox.list[index] 1184 retval = combobox.list[index]
1185 } else if(window is DWListBox) {
1186 val listbox = window
1187
1188 if(index < listbox.list.count())
1189 retval = listbox.list[index]
1119 } 1190 }
1120 } 1191 }
1121 return retval 1192 return retval
1122 } 1193 }
1123 1194
1128 waitOnUiThread { 1199 waitOnUiThread {
1129 if(window is DWComboBox) { 1200 if(window is DWComboBox) {
1130 val combobox = window 1201 val combobox = window
1131 1202
1132 retval = combobox.selected 1203 retval = combobox.selected
1204 } else if(window is DWListBox) {
1205 val listbox = window
1206
1207 retval = listbox.selected
1133 } 1208 }
1134 } 1209 }
1135 return retval 1210 return retval
1136 } 1211 }
1137 1212
1143 1218
1144 if(index < combobox.list.count() && state != 0) { 1219 if(index < combobox.list.count() && state != 0) {
1145 combobox.selected = index 1220 combobox.selected = index
1146 combobox.setText(combobox.list[index]) 1221 combobox.setText(combobox.list[index])
1147 } 1222 }
1223 } else if(window is DWListBox) {
1224 val listbox = window
1225
1226 if(index < listbox.list.count()) {
1227 if(state != 0) {
1228 listbox.selected = index
1229 listbox.setItemChecked(index, true);
1230 } else {
1231 listbox.setItemChecked(index, false);
1232 }
1233 }
1148 } 1234 }
1149 } 1235 }
1150 } 1236 }
1151 1237
1152 fun listOrComboBoxDelete(window: View, index: Int) 1238 fun listOrComboBoxDelete(window: View, index: Int)
1155 if(window is DWComboBox) { 1241 if(window is DWComboBox) {
1156 val combobox = window 1242 val combobox = window
1157 1243
1158 if(index < combobox.list.count()) { 1244 if(index < combobox.list.count()) {
1159 combobox.list.removeAt(index) 1245 combobox.list.removeAt(index)
1246 }
1247 } else if(window is DWListBox) {
1248 val listbox = window
1249
1250 if(index < listbox.list.count()) {
1251 listbox.list.removeAt(index)
1252 }
1253 }
1254 }
1255 }
1256
1257 fun listSetTop(window: View, top: Int)
1258 {
1259 waitOnUiThread {
1260 if(window is DWListBox) {
1261 val listbox = window
1262
1263 if(top < listbox.list.count()) {
1264 listbox.smoothScrollToPosition(top)
1160 } 1265 }
1161 } 1266 }
1162 } 1267 }
1163 } 1268 }
1164 1269