120 lines
4.2 KiB
Kotlin
120 lines
4.2 KiB
Kotlin
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<BeanWrapper>
|
|
|
|
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<BeanWrapper> = 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<BeanDetails> = 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<BeanWrapper>) {
|
|
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) {
|
|
""
|
|
}
|
|
}
|
|
|
|
|
|
|
|
} |