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