package com.flowing.light.board import android.app.Application import android.graphics.Typeface import com.flowing.light.board.bean.BeanDetails import com.flowing.light.board.bean.BeanWrapper //import com.pretty.keyboard.theme.keyboard.helper.ObjectBox import org.json.JSONArray import java.io.BufferedReader import java.io.IOException import java.io.InputStream import java.io.InputStreamReader import java.io.StringWriter class FlowingLightBoard : Application() { companion object { lateinit var flowingLightBoardInstance: FlowingLightBoard lateinit var list: MutableList const val TAG = "-----------------" var defaultFont: Typeface? = null const val DB_VERSION = 2 const val DB_NAME = "db_name" } override fun onCreate() { super.onCreate() flowingLightBoardInstance = this defaultFont = Typeface.createFromAsset(assets, "my_font.ttf") dealFile() } private fun dealFile() { val openFile = flowingLightBoardInstance.assets.open("res.json") val jsonString = getJsonString(openFile) if (jsonString != null) { resolveJsonString(jsonString) } } private fun resolveJsonString(string: String) { val jsonData = JSONArray(string) var dataList: MutableList = mutableListOf() for (i in 0 until jsonData.length()) { jsonData.getJSONObject(i).run { val pName = getString("parent_name") val listArray = getJSONArray("keyboard_list") var beanDetailsList: MutableList = mutableListOf() for (listIndex in 0 until listArray.length()) { listArray.getJSONObject(listIndex).also { val title = it.getString("title") val thUrl = it.getString("thumbUrl") val thGif = it.getString("thumbUrlGif") var zipPath = "" var imgPath = "" var imgGif = "" var imgPreviewGif = "" if (it.has("detail")) { val contentObject = it.getJSONObject("detail").getJSONObject("themeContent") zipPath = contentObject.getString("androidRawZipUrl") imgPath = contentObject.getString("img") imgGif = contentObject.getString("imgGif") imgPreviewGif = contentObject.getString("imgPreviewGif") } else { } beanDetailsList.add( BeanDetails().apply { setImgPath(imgPath) setZipPath(zipPath) setTitleName(title) setImgGif(imgGif) thumbUrl = thUrl thumbGif = thGif }) } } val shuffled = beanDetailsList.shuffled() val dataBeanWrapper = BeanWrapper() .apply { parentName = pName keyboardList = shuffled } dataList.add(dataBeanWrapper) } } updateDataList(dataList) } private fun updateDataList(mainList: MutableList) { list = mainList } private fun getJsonString(fileInputStream: InputStream): String? { return try { // FileInputStream fileInputStream = new FileInputStream(path); val charArray = CharArray(fileInputStream.available()) var readCount = 0 val streamReader = InputStreamReader(fileInputStream) val bufferedReader = BufferedReader(streamReader) val stringWriter = StringWriter() while (bufferedReader.read(charArray).also { readCount = it } != -1) { stringWriter.write(charArray, 0, readCount) } stringWriter.toString() } catch (e: IOException) { "" } } }