Mercurial > dwindows
comparison android/DWindows.kt @ 2558:ebc6a4ff5f1f
Android: Implement container row data and titles, required for the callbacks.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 18 May 2021 01:04:52 +0000 |
parents | 756331246f94 |
children | 3da35cd91ca7 |
comparison
equal
deleted
inserted
replaced
2557:756331246f94 | 2558:ebc6a4ff5f1f |
---|---|
463 // Class for storing container data | 463 // Class for storing container data |
464 class DWContainerModel { | 464 class DWContainerModel { |
465 var columns = mutableListOf<String?>() | 465 var columns = mutableListOf<String?>() |
466 var types = mutableListOf<Int>() | 466 var types = mutableListOf<Int>() |
467 var data = mutableListOf<Any?>() | 467 var data = mutableListOf<Any?>() |
468 var rowdata = mutableListOf<Long>() | |
469 var rowtitle = mutableListOf<String?>() | |
468 | 470 |
469 fun numberOfColumns(): Int | 471 fun numberOfColumns(): Int |
470 { | 472 { |
471 return columns.size | 473 return columns.size |
472 } | 474 } |
509 data[index] = obj | 511 data[index] = obj |
510 } | 512 } |
511 } | 513 } |
512 } | 514 } |
513 | 515 |
516 fun changeRowData(row: Int, rdata: Long) | |
517 { | |
518 if(row > -1 && row < rowdata.size) { | |
519 rowdata[row] = rdata | |
520 } | |
521 } | |
522 | |
523 fun getRowData(row: Int): Long | |
524 { | |
525 if(row > -1 && row < rowdata.size) { | |
526 return rowdata[row] | |
527 } | |
528 return 0 | |
529 } | |
530 | |
531 fun changeRowTitle(row: Int, title: String?) | |
532 { | |
533 if(row > -1 && row < rowtitle.size) { | |
534 rowtitle[row] = title | |
535 } | |
536 } | |
537 | |
538 fun getRowTitle(row: Int): String? | |
539 { | |
540 if(row > -1 && row < rowtitle.size) { | |
541 return rowtitle[row] | |
542 } | |
543 return null | |
544 } | |
545 | |
514 fun addColumn(title: String?, type: Int) | 546 fun addColumn(title: String?, type: Int) |
515 { | 547 { |
516 columns.add(title) | 548 columns.add(title) |
517 types.add(type) | 549 types.add(type) |
518 // If we change the columns we have to invalidate the data | 550 // If we change the columns we have to invalidate the data |
519 data.clear() | 551 data.clear() |
520 } | 552 } |
521 | 553 |
554 fun deleteRows(count: Int) | |
555 { | |
556 if(count < rowdata.size) { | |
557 for(i in 0 until count) { | |
558 for(j in 0 until columns.size) { | |
559 data.removeAt(0) | |
560 } | |
561 rowdata.removeAt(0) | |
562 rowtitle.removeAt(0) | |
563 } | |
564 } else { | |
565 data.clear() | |
566 rowdata.clear() | |
567 rowtitle.clear() | |
568 } | |
569 } | |
570 | |
571 fun deleteRowByTitle(title: String?) | |
572 { | |
573 for(i in 0 until rowtitle.size) { | |
574 if(rowtitle[i] != null && rowtitle[i] == title) { | |
575 for(j in 0 until columns.size) { | |
576 data.removeAt(i * columns.size) | |
577 } | |
578 rowdata.removeAt(i) | |
579 rowtitle.removeAt(i) | |
580 } | |
581 } | |
582 } | |
583 | |
584 fun deleteRowByData(rdata: Long) | |
585 { | |
586 for(i in 0 until rowdata.size) { | |
587 if(rowdata[i] == rdata) { | |
588 for(j in 0 until columns.size) { | |
589 data.removeAt(i * columns.size) | |
590 } | |
591 rowdata.removeAt(i) | |
592 rowtitle.removeAt(i) | |
593 } | |
594 } | |
595 } | |
596 | |
522 fun addRows(count: Int): Long | 597 fun addRows(count: Int): Long |
523 { | 598 { |
524 var startRow: Long = numberOfRows().toLong() | 599 var startRow: Long = numberOfRows().toLong() |
525 | 600 |
526 for(i in 0 until (count * columns.size)) | 601 for(i in 0 until count) |
527 { | 602 { |
528 // Fill in with nulls to be set later | 603 for(j in 0 until columns.size) |
529 data.add(null) | 604 { |
605 // Fill in with nulls to be set later | |
606 data.add(null) | |
607 } | |
608 rowdata.add(0) | |
609 rowtitle.add(null) | |
530 } | 610 } |
531 return startRow | 611 return startRow |
532 } | 612 } |
533 | 613 |
534 fun clear() | 614 fun clear() |
535 { | 615 { |
536 data.clear() | 616 data.clear() |
617 rowdata.clear() | |
618 rowtitle.clear() | |
537 } | 619 } |
538 } | 620 } |
539 | 621 |
540 class DWContainerAdapter(c: Context) : BaseAdapter() | 622 class DWContainerAdapter(c: Context) : BaseAdapter() |
541 { | 623 { |
1951 | 2033 |
1952 adapter.model.setRowAndColumn(row, column, num) | 2034 adapter.model.setRowAndColumn(row, column, num) |
1953 } | 2035 } |
1954 } | 2036 } |
1955 | 2037 |
2038 fun containerChangeRowData(cont: ListView, row: Int, data: Long) | |
2039 { | |
2040 waitOnUiThread { | |
2041 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter | |
2042 | |
2043 adapter.model.changeRowData(row, data) | |
2044 } | |
2045 } | |
2046 | |
2047 fun containerChangeRowTitle(cont: ListView, row: Int, title: String?) | |
2048 { | |
2049 waitOnUiThread { | |
2050 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter | |
2051 | |
2052 adapter.model.changeRowTitle(row, title) | |
2053 } | |
2054 } | |
2055 | |
1956 fun containerGetColumnType(cont: ListView, column: Int): Int | 2056 fun containerGetColumnType(cont: ListView, column: Int): Int |
1957 { | 2057 { |
1958 var type: Int = 0 | 2058 var type: Int = 0 |
1959 | 2059 |
1960 waitOnUiThread { | 2060 waitOnUiThread { |
1961 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter | 2061 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter |
1962 | 2062 |
1963 type = adapter.model.getColumnType(column) | 2063 type = adapter.model.getColumnType(column) |
1964 } | 2064 } |
1965 return type | 2065 return type |
2066 } | |
2067 | |
2068 fun containerDelete(cont: ListView, rowcount: Int) | |
2069 { | |
2070 waitOnUiThread { | |
2071 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter | |
2072 | |
2073 adapter.model.deleteRows(rowcount) | |
2074 } | |
2075 } | |
2076 | |
2077 fun containerRowDeleteByTitle(cont: ListView, title: String?) | |
2078 { | |
2079 waitOnUiThread { | |
2080 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter | |
2081 | |
2082 adapter.model.deleteRowByTitle(title) | |
2083 } | |
2084 } | |
2085 | |
2086 fun containerRowDeleteByData(cont: ListView, data: Long) | |
2087 { | |
2088 waitOnUiThread { | |
2089 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter | |
2090 | |
2091 adapter.model.deleteRowByData(data) | |
2092 } | |
1966 } | 2093 } |
1967 | 2094 |
1968 fun containerClear(cont: ListView) | 2095 fun containerClear(cont: ListView) |
1969 { | 2096 { |
1970 waitOnUiThread { | 2097 waitOnUiThread { |