comparison android/DWindows.kt @ 2833:469e5748c8a5

Android: In preparation for the container mode changes... I needed to implement localized date handling. I had skipped that code previous since I couldn't use the C locale code I use on other platforms since Android NDK is always US_EN. Plus since we only previously displayed one column, that code would never need to be run.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 11 Sep 2022 12:43:08 +0000
parents f81e92947f4a
children 0cbe8201db3c
comparison
equal deleted inserted replaced
2832:df16bb0a11b2 2833:469e5748c8a5
30 import android.provider.MediaStore 30 import android.provider.MediaStore
31 import android.system.OsConstants 31 import android.system.OsConstants
32 import android.text.InputFilter 32 import android.text.InputFilter
33 import android.text.InputFilter.LengthFilter 33 import android.text.InputFilter.LengthFilter
34 import android.text.InputType 34 import android.text.InputType
35 import android.text.format.DateFormat
35 import android.text.method.PasswordTransformationMethod 36 import android.text.method.PasswordTransformationMethod
36 import android.util.* 37 import android.util.*
37 import android.util.Base64 38 import android.util.Base64
38 import android.view.* 39 import android.view.*
39 import android.view.View.OnTouchListener 40 import android.view.View.OnTouchListener
60 import androidx.viewpager2.widget.ViewPager2 61 import androidx.viewpager2.widget.ViewPager2
61 import com.google.android.material.tabs.TabLayout 62 import com.google.android.material.tabs.TabLayout
62 import com.google.android.material.tabs.TabLayout.OnTabSelectedListener 63 import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
63 import com.google.android.material.tabs.TabLayoutMediator 64 import com.google.android.material.tabs.TabLayoutMediator
64 import java.io.* 65 import java.io.*
66 import java.text.ParseException
67 import java.text.SimpleDateFormat
65 import java.util.* 68 import java.util.*
66 import java.util.concurrent.locks.ReentrantLock 69 import java.util.concurrent.locks.ReentrantLock
67 import java.util.zip.ZipEntry 70 import java.util.zip.ZipEntry
68 import java.util.zip.ZipFile 71 import java.util.zip.ZipFile
69 import kotlin.math.* 72 import kotlin.math.*
5111 5114
5112 adapter.model.setRowAndColumn(row, column, icon) 5115 adapter.model.setRowAndColumn(row, column, icon)
5113 } 5116 }
5114 } 5117 }
5115 5118
5116 fun containerChangeItemInt(cont: ListView, column: Int, row: Int, num: Int) 5119 fun containerChangeItemInt(cont: ListView, column: Int, row: Int, num: Long)
5117 { 5120 {
5118 waitOnUiThread { 5121 waitOnUiThread {
5119 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter 5122 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
5120 5123
5121 adapter.model.setRowAndColumn(row, column, num) 5124 adapter.model.setRowAndColumn(row, column, num)
5125 }
5126 }
5127
5128 fun timeString(num: Int): String
5129 {
5130 if(num > 0 && num < 60) {
5131 if(num > 9)
5132 return num.toString()
5133 else
5134 return "0" + num.toString()
5135 }
5136 return "01"
5137 }
5138
5139 fun yearString(year: Int): String
5140 {
5141 if(year < 100)
5142 {
5143 if(year < 70)
5144 return "19" + year.toString()
5145 else
5146 return "20" + year.toString()
5147 }
5148 if(year in 1901..2199)
5149 return year.toString()
5150 val calendar = Calendar.getInstance()
5151 val thisyear = calendar[Calendar.YEAR]
5152 return thisyear.toString()
5153 }
5154
5155 fun containerChangeItemDate(cont: ListView, column: Int, row: Int, year: Int, month: Int, day: Int)
5156 {
5157 waitOnUiThread {
5158 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
5159 val dateString = timeString(day) + "/" + timeString(month) + "/" + yearString(year)
5160 val sdf = SimpleDateFormat("dd/MM/yyyy")
5161 var date: Date? = null
5162 var s = dateString
5163 try {
5164 date = sdf.parse(dateString)
5165 val dateFormat = DateFormat.getDateFormat(this)
5166 s = dateFormat.format(date)
5167 } catch (e: ParseException) {
5168 // handle exception here !
5169 }
5170 adapter.model.setRowAndColumn(row, column, s)
5171 }
5172 }
5173
5174 fun containerChangeItemTime(cont: ListView, column: Int, row: Int, hour: Int, minute: Int, second: Int)
5175 {
5176 waitOnUiThread {
5177 val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter
5178 val timeStr = timeString(hour) + ":" + timeString(minute) + ":" + timeString(second)
5179 val sdf = SimpleDateFormat("hh:mm:ss")
5180 var date: Date? = null
5181 var s = timeStr
5182 try {
5183 date = sdf.parse(timeStr)
5184 val timeFormat = DateFormat.getTimeFormat(this)
5185 s = timeFormat.format(date)
5186 } catch (e: ParseException) {
5187 // handle exception here !
5188 }
5189 adapter.model.setRowAndColumn(row, column, s)
5122 } 5190 }
5123 } 5191 }
5124 5192
5125 fun containerChangeRowData(cont: ListView, row: Int, data: Long) 5193 fun containerChangeRowData(cont: ListView, row: Int, data: Long)
5126 { 5194 {