1
+ package com.drdisagree.colorblendr.ui.fragments
2
+
3
+ import android.graphics.Color
4
+ import android.os.Bundle
5
+ import android.view.LayoutInflater
6
+ import android.view.MenuItem
7
+ import android.view.View
8
+ import android.view.ViewGroup
9
+ import androidx.fragment.app.Fragment
10
+ import androidx.lifecycle.ViewModelProvider
11
+ import com.drdisagree.colorblendr.R
12
+ import com.drdisagree.colorblendr.common.Const
13
+ import com.drdisagree.colorblendr.common.Const.MONET_LAST_UPDATED
14
+ import com.drdisagree.colorblendr.common.Const.MONET_SECONDARY_COLOR
15
+ import com.drdisagree.colorblendr.common.Const.MONET_SEED_COLOR_ENABLED
16
+ import com.drdisagree.colorblendr.common.Const.MONET_TERTIARY_COLOR
17
+ import com.drdisagree.colorblendr.common.Const.workingMethod
18
+ import com.drdisagree.colorblendr.config.RPrefs.getBoolean
19
+ import com.drdisagree.colorblendr.config.RPrefs.getInt
20
+ import com.drdisagree.colorblendr.config.RPrefs.putInt
21
+ import com.drdisagree.colorblendr.config.RPrefs.putLong
22
+ import com.drdisagree.colorblendr.databinding.FragmentSettingsAdvancedBinding
23
+ import com.drdisagree.colorblendr.ui.viewmodels.SharedViewModel
24
+ import com.drdisagree.colorblendr.utils.MiscUtil.setToolbarTitle
25
+ import com.drdisagree.colorblendr.utils.OverlayManager.applyFabricatedColors
26
+ import kotlinx.coroutines.CoroutineScope
27
+ import kotlinx.coroutines.Dispatchers
28
+ import kotlinx.coroutines.delay
29
+ import kotlinx.coroutines.launch
30
+ import kotlinx.coroutines.withContext
31
+ import me.jfenn.colorpickerdialog.dialogs.ColorPickerDialog
32
+ import me.jfenn.colorpickerdialog.views.picker.ImagePickerView
33
+
34
+ class SettingsAdvancedFragment : Fragment () {
35
+
36
+ private lateinit var binding: FragmentSettingsAdvancedBinding
37
+ private var sharedViewModel: SharedViewModel ? = null
38
+ private val notShizukuMode: Boolean = workingMethod != Const .WorkMethod .SHIZUKU
39
+
40
+ override fun onCreate (savedInstanceState : Bundle ? ) {
41
+ super .onCreate(savedInstanceState)
42
+
43
+ sharedViewModel = ViewModelProvider (requireActivity())[SharedViewModel ::class .java]
44
+ }
45
+
46
+ override fun onCreateView (
47
+ inflater : LayoutInflater ,
48
+ container : ViewGroup ? ,
49
+ savedInstanceState : Bundle ?
50
+ ): View {
51
+ binding = FragmentSettingsAdvancedBinding .inflate(inflater, container, false )
52
+
53
+ setToolbarTitle(requireContext(), R .string.advanced_settings, true , binding.header.toolbar)
54
+
55
+ // Secondary color
56
+ var monetSecondaryColor = getInt(MONET_SECONDARY_COLOR , Color .WHITE )
57
+ binding.secondaryColorPicker.isEnabled =
58
+ getBoolean(MONET_SEED_COLOR_ENABLED , false ) && notShizukuMode
59
+ binding.secondaryColorPicker.previewColor =
60
+ getInt(MONET_SECONDARY_COLOR , monetSecondaryColor)
61
+ binding.secondaryColorPicker.setOnClickListener {
62
+ ColorPickerDialog ()
63
+ .withCornerRadius(10f )
64
+ .withColor(monetSecondaryColor)
65
+ .withAlphaEnabled(false )
66
+ .withPicker(ImagePickerView ::class .java)
67
+ .withListener { _: ColorPickerDialog ? , color: Int ->
68
+ if (monetSecondaryColor != color) {
69
+ monetSecondaryColor = color
70
+ binding.secondaryColorPicker.previewColor = color
71
+ putInt(MONET_SECONDARY_COLOR , monetSecondaryColor)
72
+
73
+ applyFabricatedColors()
74
+ }
75
+ }
76
+ .show(getChildFragmentManager(), " secondaryColorPicker" )
77
+ }
78
+
79
+ // Tertiary color
80
+ var monetTertiaryColor = getInt(MONET_TERTIARY_COLOR , Color .WHITE )
81
+ binding.tertiaryColorPicker.isEnabled =
82
+ getBoolean(MONET_SEED_COLOR_ENABLED , false ) && notShizukuMode
83
+ binding.tertiaryColorPicker.previewColor = monetTertiaryColor
84
+ binding.tertiaryColorPicker.setOnClickListener {
85
+ ColorPickerDialog ()
86
+ .withCornerRadius(10f )
87
+ .withColor(monetTertiaryColor)
88
+ .withAlphaEnabled(false )
89
+ .withPicker(ImagePickerView ::class .java)
90
+ .withListener { _: ColorPickerDialog ? , color: Int ->
91
+ if (monetTertiaryColor != color) {
92
+ monetTertiaryColor = color
93
+ binding.tertiaryColorPicker.previewColor = color
94
+ putInt(MONET_TERTIARY_COLOR , monetTertiaryColor)
95
+
96
+ applyFabricatedColors()
97
+ }
98
+ }
99
+ .show(getChildFragmentManager(), " tertiaryColorPicker" )
100
+ }
101
+
102
+ return binding.getRoot()
103
+ }
104
+
105
+ @Suppress(" DEPRECATION" )
106
+ @Deprecated(" Deprecated in Java" )
107
+ override fun onOptionsItemSelected (item : MenuItem ): Boolean {
108
+ if (item.itemId == android.R .id.home) {
109
+ getParentFragmentManager().popBackStackImmediate()
110
+ return true
111
+ }
112
+ return super .onOptionsItemSelected(item)
113
+ }
114
+
115
+ private fun applyFabricatedColors () {
116
+ CoroutineScope (Dispatchers .Main ).launch {
117
+ putLong(MONET_LAST_UPDATED , System .currentTimeMillis())
118
+ delay(300 )
119
+ withContext(Dispatchers .IO ) {
120
+ try {
121
+ applyFabricatedColors(requireContext())
122
+ } catch (ignored: Exception ) {
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ companion object {
129
+ private val TAG : String = SettingsAdvancedFragment ::class .java.simpleName
130
+ }
131
+ }
0 commit comments