comparison android/DWindows.kt @ 2580:473eb9ff3f04

Android: Implement dw_container_set_stripe() and center the images in the rows. Also switch to using jlong (Long) types for passing the colors internally.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 23 May 2021 02:27:12 +0000
parents 68ee9a89e0f0
children 9dea42f27b0a
comparison
equal deleted inserted replaced
2579:68ee9a89e0f0 2580:473eb9ff3f04
619 { 619 {
620 private var context = c 620 private var context = c
621 var model = DWContainerModel() 621 var model = DWContainerModel()
622 var selectedItem: Int = -1 622 var selectedItem: Int = -1
623 var simpleMode: Boolean = true 623 var simpleMode: Boolean = true
624 var oddColor: Int? = null
625 var evenColor: Int? = null
624 626
625 override fun getCount(): Int { 627 override fun getCount(): Int {
626 return model.numberOfRows() 628 return model.numberOfRows()
627 } 629 }
628 630
658 val content = model.getRowAndColumn(position, i) 660 val content = model.getRowAndColumn(position, i)
659 661
660 // Image 662 // Image
661 if((model.getColumnType(i) and 1) != 0) { 663 if((model.getColumnType(i) and 1) != 0) {
662 val imageview = ImageView(context) 664 val imageview = ImageView(context)
665 val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
666 LinearLayout.LayoutParams.WRAP_CONTENT)
667 params.gravity = Gravity.CENTER
668 imageview.layoutParams = params
663 imageview.id = View.generateViewId() 669 imageview.id = View.generateViewId()
664 imageview.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
665 LinearLayout.LayoutParams.WRAP_CONTENT)
666 if (content is Drawable) { 670 if (content is Drawable) {
667 imageview.setImageDrawable(content) 671 imageview.setImageDrawable(content)
668 } 672 }
669 rowView.addView(imageview) 673 rowView.addView(imageview)
670 } else { 674 } else {
671 // Everything else id displayed as text 675 // Everything else id displayed as text
672 val textview = TextView(context) 676 val textview = TextView(context)
677 val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
678 LinearLayout.LayoutParams.WRAP_CONTENT)
679 params.gravity = Gravity.CENTER
680 textview.layoutParams = params
673 textview.id = View.generateViewId() 681 textview.id = View.generateViewId()
674 textview.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
675 LinearLayout.LayoutParams.WRAP_CONTENT)
676 if (content is String) { 682 if (content is String) {
677 textview.text = content 683 textview.text = content
678 } else if(content is Int) { 684 } else if(content is Int) {
679 textview.text = content.toString() 685 textview.text = content.toString()
680 } 686 }
705 } else if (content is Int) { 711 } else if (content is Int) {
706 textview.text = content.toString() 712 textview.text = content.toString()
707 } 713 }
708 } 714 }
709 } 715 }
716 }
717 }
718 // Handle row stripe
719 if (position % 2 == 0) {
720 if(evenColor != null) {
721 rowView.setBackgroundColor(evenColor!!)
722 }
723 } else {
724 if(oddColor != null) {
725 rowView.setBackgroundColor(oddColor!!)
710 } 726 }
711 } 727 }
712 return rowView 728 return rowView
713 } 729 }
714 } 730 }
2074 } 2090 }
2075 } 2091 }
2076 return cont 2092 return cont
2077 } 2093 }
2078 2094
2095 fun containerSetStripe(cont: ListView, oddcolor: Long, evencolor: Long)
2096 {
2097 waitOnUiThread {
2098 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
2099
2100 if(oddcolor == -1L) {
2101 adapter.oddColor = null
2102 } else if(evencolor == -2L) {
2103 if(darkMode == 1) {
2104 adapter.oddColor = Color.rgb(100, 100, 100)
2105 } else {
2106 adapter.oddColor = Color.rgb(230, 230, 230)
2107 }
2108 } else {
2109 adapter.oddColor = colorFromDW(oddcolor)
2110 }
2111 if(evencolor == -1L || evencolor == -2L) {
2112 adapter.evenColor = null
2113 } else {
2114 adapter.evenColor = colorFromDW(evencolor)
2115 }
2116 }
2117 }
2118
2079 fun containerGetTitleStart(cont: ListView, flags: Int): String? 2119 fun containerGetTitleStart(cont: ListView, flags: Int): String?
2080 { 2120 {
2081 var retval: String? = null 2121 var retval: String? = null
2082 2122
2083 waitOnUiThread { 2123 waitOnUiThread {
2806 } 2846 }
2807 } 2847 }
2808 return retval 2848 return retval
2809 } 2849 }
2810 2850
2811 fun drawPoint(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, fgColor: Int, bgColor: Int) 2851 fun drawPoint(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, fgColor: Long, bgColor: Long)
2812 { 2852 {
2813 waitOnUiThread { 2853 waitOnUiThread {
2814 var canvas: Canvas? = null 2854 var canvas: Canvas? = null
2815 2855
2816 if(render != null) { 2856 if(render != null) {
2824 canvas.drawPoint(x.toFloat(), y.toFloat(), Paint()) 2864 canvas.drawPoint(x.toFloat(), y.toFloat(), Paint())
2825 } 2865 }
2826 } 2866 }
2827 } 2867 }
2828 2868
2829 fun drawLine(render: DWRender?, bitmap: Bitmap?, x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Int, bgColor: Int) 2869 fun drawLine(render: DWRender?, bitmap: Bitmap?, x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Long, bgColor: Long)
2830 { 2870 {
2831 waitOnUiThread { 2871 waitOnUiThread {
2832 var canvas: Canvas? = null 2872 var canvas: Canvas? = null
2833 2873
2834 if(render != null) { 2874 if(render != null) {
2884 } 2924 }
2885 return dimensions 2925 return dimensions
2886 } 2926 }
2887 2927
2888 fun drawText(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, text:String, typeface: Typeface?, 2928 fun drawText(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, text:String, typeface: Typeface?,
2889 fontsize: Int, window: View?, fgColor: Int, bgColor: Int) 2929 fontsize: Int, window: View?, fgColor: Long, bgColor: Long)
2890 { 2930 {
2891 waitOnUiThread { 2931 waitOnUiThread {
2892 var canvas: Canvas? = null 2932 var canvas: Canvas? = null
2893 2933
2894 if(render != null && render.cachedCanvas != null) { 2934 if(render != null && render.cachedCanvas != null) {
2941 canvas.drawText(text, x.toFloat(), y.toFloat() + textheight.toFloat(), paint) 2981 canvas.drawText(text, x.toFloat(), y.toFloat() + textheight.toFloat(), paint)
2942 } 2982 }
2943 } 2983 }
2944 } 2984 }
2945 2985
2946 fun drawRect(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, width: Int, height: Int, fgColor: Int, bgColor: Int) 2986 fun drawRect(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, width: Int, height: Int, fgColor: Long, bgColor: Long)
2947 { 2987 {
2948 waitOnUiThread { 2988 waitOnUiThread {
2949 var canvas: Canvas? = null 2989 var canvas: Canvas? = null
2950 2990
2951 if(render != null) { 2991 if(render != null) {
2962 } 3002 }
2963 } 3003 }
2964 } 3004 }
2965 3005
2966 fun drawPolygon(render: DWRender?, bitmap: Bitmap?, flags: Int, npoints: Int, 3006 fun drawPolygon(render: DWRender?, bitmap: Bitmap?, flags: Int, npoints: Int,
2967 x: IntArray, y: IntArray, fgColor: Int, bgColor: Int) 3007 x: IntArray, y: IntArray, fgColor: Long, bgColor: Long)
2968 { 3008 {
2969 // Create a path with all our points 3009 // Create a path with all our points
2970 val path = Path() 3010 val path = Path()
2971 3011
2972 path.moveTo(x[0].toFloat(), y[0].toFloat()) 3012 path.moveTo(x[0].toFloat(), y[0].toFloat())
3001 } 3041 }
3002 } 3042 }
3003 } 3043 }
3004 3044
3005 fun drawArc(render: DWRender?, bitmap: Bitmap?, flags: Int, xorigin: Int, yorigin: Int, 3045 fun drawArc(render: DWRender?, bitmap: Bitmap?, flags: Int, xorigin: Int, yorigin: Int,
3006 x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Int, bgColor: Int) 3046 x1: Int, y1: Int, x2: Int, y2: Int, fgColor: Long, bgColor: Long)
3007 { 3047 {
3008 waitOnUiThread { 3048 waitOnUiThread {
3009 var canvas: Canvas? = null 3049 var canvas: Canvas? = null
3010 3050
3011 if(render != null) { 3051 if(render != null) {
3065 } 3105 }
3066 } 3106 }
3067 } 3107 }
3068 } 3108 }
3069 3109
3070 fun colorSet(alpha: Int, red: Int, green: Int, blue: Int) 3110 fun colorFromDW(color: Long): Int
3071 { 3111 {
3072 waitOnUiThread { 3112 val red: Int = (color and 0x000000FF).toInt()
3073 if(alpha != 0) { 3113 val green: Int = ((color and 0x0000FF00) shr 8).toInt()
3074 paint.color = Color.argb(alpha, red, green, blue) 3114 val blue: Int = ((color and 0x00FF0000) shr 16).toInt()
3075 } else { 3115
3076 paint.color = Color.rgb(red, green, blue) 3116 return Color.rgb(red, green, blue)
3077 } 3117 }
3078 } 3118
3079 } 3119 fun colorsSet(fgColor: Long, bgColor: Long)
3080 3120 {
3081 fun bgColorSet(alpha: Int, red: Int, green: Int, blue: Int) 3121 waitOnUiThread {
3082 { 3122 paint.color = colorFromDW(fgColor)
3083 if(alpha != 0) { 3123 this.bgcolor = colorFromDW(bgColor)
3084 this.bgcolor = Color.argb(alpha, red, green, blue) 3124 }
3085 } else {
3086 this.bgcolor = Color.rgb(red, green, blue)
3087 }
3088 }
3089
3090 fun colorsSet(fgColor: Int, bgColor: Int)
3091 {
3092 val fgRed: Int = (fgColor and 0x000000FF)
3093 val fgGreen: Int = (fgColor and 0x0000FF00) shr 8
3094 val fgBlue: Int = (fgColor and 0x00FF0000) shr 16
3095 val bgRed: Int = (bgColor and 0x000000FF)
3096 val bgGreen: Int = (bgColor and 0x0000FF00) shr 8
3097 val bgBlue: Int = (bgColor and 0x00FF0000) shr 16
3098
3099 paint.color = Color.rgb(fgRed, fgGreen, fgBlue)
3100 this.bgcolor = Color.rgb(bgRed, bgGreen, bgBlue)
3101 } 3125 }
3102 3126
3103 fun timerConnect(interval: Long, sigfunc: Long, data: Long): Timer 3127 fun timerConnect(interval: Long, sigfunc: Long, data: Long): Timer
3104 { 3128 {
3105 // creating timer task, timer 3129 // creating timer task, timer