LAFAlwaysOnLookActivity.kt raw
1 package io.github.domi04151309.alwayson.activities
2
3 import android.os.Bundle
4 import android.widget.ImageView
5 import androidx.core.content.edit
6 import androidx.recyclerview.widget.LinearLayoutManager
7 import androidx.recyclerview.widget.RecyclerView
8 import io.github.domi04151309.alwayson.R
9 import io.github.domi04151309.alwayson.actions.alwayson.AlwaysOn
10 import io.github.domi04151309.alwayson.adapters.LayoutListAdapter
11 import io.github.domi04151309.alwayson.helpers.P
12
13 class LAFAlwaysOnLookActivity : BaseActivity(), LayoutListAdapter.OnItemClickListener {
14 internal var value: String = P.USER_THEME_DEFAULT
15 private lateinit var preview: ImageView
16 private lateinit var layoutList: RecyclerView
17
18 private val drawables =
19 arrayOf(
20 R.drawable.always_on_google,
21 R.drawable.always_on_oneplus,
22 R.drawable.always_on_samsung,
23 R.drawable.always_on_samsung2,
24 R.drawable.always_on_samsung3,
25 R.drawable.always_on_80s,
26 R.drawable.always_on_fast,
27 R.drawable.always_on_flower,
28 R.drawable.always_on_game,
29 R.drawable.always_on_handwritten,
30 R.drawable.always_on_jungle,
31 R.drawable.always_on_western,
32 R.drawable.always_on_analog,
33 R.drawable.always_on_analog,
34 )
35
36 @Suppress("CyclomaticComplexMethod")
37 private fun positionToString(position: Int): String =
38 when (position) {
39 ITEM_GOOGLE -> P.USER_THEME_GOOGLE
40 ITEM_ONEPLUS -> P.USER_THEME_ONEPLUS
41 ITEM_SAMSUNG -> P.USER_THEME_SAMSUNG
42 ITEM_SAMSUNG2 -> P.USER_THEME_SAMSUNG2
43 ITEM_SAMSUNG3 -> P.USER_THEME_SAMSUNG3
44 ITEM_80S -> P.USER_THEME_80S
45 ITEM_FAST -> P.USER_THEME_FAST
46 ITEM_FLOWER -> P.USER_THEME_FLOWER
47 ITEM_GAME -> P.USER_THEME_GAME
48 ITEM_HANDWRITTEN -> P.USER_THEME_HANDWRITTEN
49 ITEM_JUNGLE -> P.USER_THEME_JUNGLE
50 ITEM_WESTERN -> P.USER_THEME_WESTERN
51 ITEM_ANALOG -> P.USER_THEME_ANALOG
52 ITEM_RUSSIAN -> P.USER_THEME_RUSSIAN
53 else -> P.USER_THEME_DEFAULT
54 }
55
56 @Suppress("CyclomaticComplexMethod")
57 private fun stringToPosition(string: String): Int =
58 when (string) {
59 P.USER_THEME_GOOGLE -> ITEM_GOOGLE
60 P.USER_THEME_ONEPLUS -> ITEM_ONEPLUS
61 P.USER_THEME_SAMSUNG -> ITEM_SAMSUNG
62 P.USER_THEME_SAMSUNG2 -> ITEM_SAMSUNG2
63 P.USER_THEME_SAMSUNG3 -> ITEM_SAMSUNG3
64 P.USER_THEME_80S -> ITEM_80S
65 P.USER_THEME_FAST -> ITEM_FAST
66 P.USER_THEME_FLOWER -> ITEM_FLOWER
67 P.USER_THEME_GAME -> ITEM_GAME
68 P.USER_THEME_HANDWRITTEN -> ITEM_HANDWRITTEN
69 P.USER_THEME_JUNGLE -> ITEM_JUNGLE
70 P.USER_THEME_WESTERN -> ITEM_WESTERN
71 P.USER_THEME_ANALOG -> ITEM_ANALOG
72 P.USER_THEME_RUSSIAN -> ITEM_RUSSIAN
73 else -> ITEM_GOOGLE
74 }
75
76 private fun setSelectedItem(
77 adapter: LayoutListAdapter,
78 position: Int,
79 ) {
80 preview.setImageResource(drawables[position])
81 adapter.setSelectedItem(position)
82 }
83
84 override fun onCreate(savedInstanceState: Bundle?) {
85 super.onCreate(savedInstanceState)
86 setContentView(R.layout.activity_layout_list)
87
88 preview = findViewById(R.id.preview)
89 layoutList = findViewById(R.id.layout_list)
90
91 layoutList.layoutManager =
92 LinearLayoutManager(this).apply {
93 orientation = LinearLayoutManager.HORIZONTAL
94 }
95 layoutList.adapter =
96 LayoutListAdapter(
97 drawables,
98 resources.getStringArray(R.array.pref_look_and_feel_ao_array_display),
99 this,
100 )
101 }
102
103 override fun onStart() {
104 super.onStart()
105 value = P.getPreferences(this).getString(P.USER_THEME, P.USER_THEME_DEFAULT) ?: P.USER_THEME_DEFAULT
106 setSelectedItem(layoutList.adapter as LayoutListAdapter, stringToPosition(value))
107 }
108
109 override fun onStop() {
110 super.onStop()
111 P.getPreferences(this).edit { putString(P.USER_THEME, value) }
112 }
113
114 override fun onItemClick(position: Int) {
115 preview.setImageResource(drawables[position])
116 value = positionToString(position)
117 AlwaysOn.finish()
118 }
119
120 companion object {
121 private const val ITEM_GOOGLE = 0
122 private const val ITEM_ONEPLUS = 1
123 private const val ITEM_SAMSUNG = 2
124 private const val ITEM_SAMSUNG2 = 3
125 private const val ITEM_SAMSUNG3 = 4
126 private const val ITEM_80S = 5
127 private const val ITEM_FAST = 6
128 private const val ITEM_FLOWER = 7
129 private const val ITEM_GAME = 8
130 private const val ITEM_HANDWRITTEN = 9
131 private const val ITEM_JUNGLE = 10
132 private const val ITEM_WESTERN = 11
133 private const val ITEM_ANALOG = 12
134 private const val ITEM_RUSSIAN = 13
135 }
136 }
137