-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathMainActivity.kt
87 lines (68 loc) · 2.83 KB
/
MainActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package work.upstarts
import android.content.res.AssetManager
import android.graphics.Color
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
import work.upstarts.editorjskit.environment.dp
import work.upstarts.editorjskit.models.EJBlock
import work.upstarts.editorjskit.models.HeadingLevel
import work.upstarts.editorjskit.ui.EditorJsAdapter
import work.upstarts.editorjskit.ui.theme.EJStyle
import work.upstarts.gsonparser.EJDeserializer
import work.upstarts.editorjskit.R as EditorJsR
const val DATA_JSON_PATH = "dummy_data.json"
data class EJResponse(val blocks: List<EJBlock>)
class MainActivity : AppCompatActivity() {
private val rvAdapter: EditorJsAdapter by lazy {
EditorJsAdapter(
EJStyle.builderWithDefaults(applicationContext)
.linkColor(ContextCompat.getColor(this, EditorJsR.color.link_color))
.linkColor(ContextCompat.getColor(this, EditorJsR.color.link_color))
.headingMargin(
ZERO_MARGIN,
ZERO_MARGIN,
ZERO_MARGIN,
ZERO_MARGIN,
HeadingLevel.h1
)
.headingMargin(
STANDARD_MARGIN,
ZERO_MARGIN,
ZERO_MARGIN,
ZERO_MARGIN,
HeadingLevel.h2
)
.linkColor(ContextCompat.getColor(this, EditorJsR.color.link_color))
.dividerBreakHeight(DIVIDER_HEIGHT.dp)
.dividerMargin(0.dp, 4.dp, 0.dp, 4.dp)
.dividerBreakColor(Color.parseColor("#32000000"))
.build()
)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
with(recyclerView) {
layoutManager = LinearLayoutManager(context)
adapter = rvAdapter
}
val blocksType = object : TypeToken<MutableList<EJBlock>>() {}.type
val gson = GsonBuilder()
.registerTypeAdapter(blocksType, EJDeserializer())
.create()
val dummyData = readFileFromAssets(DATA_JSON_PATH, assets)
val ejResponse = gson.fromJson(dummyData, EJResponse::class.java)
rvAdapter.items = ejResponse.blocks
}
}
fun readFileFromAssets(fname: String, assetsManager: AssetManager) =
assetsManager.open(fname).readBytes().toString(Charsets.UTF_8)
const val ZERO_MARGIN = 0
const val STANDARD_MARGIN = 16
const val DIVIDER_HEIGHT = 1