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 {