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