new color picker

This commit is contained in:
Finnley Somdahl 2023-12-09 21:20:19 -06:00
parent 0a2ecdd190
commit 6c310713d6
3 changed files with 33 additions and 45 deletions

View file

@ -100,7 +100,7 @@ dependencies {
implementation 'com.alexvasilkov:gesture-views:2.8.3' implementation 'com.alexvasilkov:gesture-views:2.8.3'
implementation 'com.github.VipulOG:ebook-reader:0.1.6' implementation 'com.github.VipulOG:ebook-reader:0.1.6'
implementation 'androidx.paging:paging-runtime-ktx:3.2.1' implementation 'androidx.paging:paging-runtime-ktx:3.2.1'
implementation "com.github.skydoves:colorpickerview:2.3.0" implementation 'com.github.eltos:simpledialogfragments:v3.7'
// string matching // string matching
implementation 'me.xdrop:fuzzywuzzy:1.4.0' implementation 'me.xdrop:fuzzywuzzy:1.4.0'

View file

@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.app.AlertDialog import android.app.AlertDialog
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.Animatable import android.graphics.drawable.Animatable
import android.os.Build.* import android.os.Build.*
import android.os.Build.VERSION.* import android.os.Build.VERSION.*
@ -11,7 +12,6 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
@ -37,7 +37,9 @@ import ani.dantotsu.subcriptions.Subscription.Companion.timeMinutes
import ani.dantotsu.themes.ThemeManager import ani.dantotsu.themes.ThemeManager
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
import com.skydoves.colorpickerview.listeners.ColorListener import eltos.simpledialogfragment.SimpleDialog
import eltos.simpledialogfragment.SimpleDialog.OnDialogResultListener.BUTTON_POSITIVE
import eltos.simpledialogfragment.color.SimpleColorDialog
import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.base.BasePreferences
import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.network.NetworkPreferences
import io.noties.markwon.Markwon import io.noties.markwon.Markwon
@ -50,7 +52,7 @@ import uy.kohesive.injekt.api.get
import kotlin.random.Random import kotlin.random.Random
class SettingsActivity : AppCompatActivity() { class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListener {
private val restartMainActivity = object : OnBackPressedCallback(false) { private val restartMainActivity = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() = startMainActivity(this@SettingsActivity) override fun handleOnBackPressed() = startMainActivity(this@SettingsActivity)
} }
@ -176,31 +178,21 @@ class SettingsActivity : AppCompatActivity() {
binding.customTheme.setOnClickListener { binding.customTheme.setOnClickListener {
var passedColor: Int = 0 val originalColor = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getInt(
val dialogView = layoutInflater.inflate(R.layout.dialog_color_picker, null) "custom_theme_int",
val alertDialog = AlertDialog.Builder(this, R.style.MyPopup) Color.parseColor("#6200EE")
.setTitle("Custom Theme") )
.setView(dialogView) val tag = "colorPicker"
.setPositiveButton("OK") { dialog, _ -> SimpleColorDialog.build()
getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit() .title("Custom Theme")
.putInt("custom_theme_int", passedColor).apply() .colorPreset(originalColor)
logger("Custom Theme: $passedColor") .colors(this, SimpleColorDialog.BEIGE_COLOR_PALLET)
dialog.dismiss() .allowCustom(true)
restartApp() .showOutline(0x46000000)
} .gridNumColumn(5)
.setNegativeButton("Cancel") { dialog, _ -> .choiceMode(SimpleColorDialog.SINGLE_CHOICE)
dialog.dismiss() .neg()
} .show(this, tag)
.create()
val colorPickerView =
dialogView.findViewById<com.skydoves.colorpickerview.ColorPickerView>(R.id.colorPickerView)
colorPickerView.setColorListener(ColorListener { color, fromUser ->
val linearLayout = dialogView.findViewById<LinearLayout>(R.id.linear)
passedColor = color
linearLayout.setBackgroundColor(color)
})
alertDialog.show()
alertDialog.window?.setDimAmount(0.8f)
} }
//val animeSource = loadData<Int>("settings_def_anime_source_s")?.let { if (it >= AnimeSources.names.size) 0 else it } ?: 0 //val animeSource = loadData<Int>("settings_def_anime_source_s")?.let { if (it >= AnimeSources.names.size) 0 else it } ?: 0
@ -770,6 +762,18 @@ class SettingsActivity : AppCompatActivity() {
} }
} }
override fun onResult(dialogTag: String, which: Int, extras: Bundle): Boolean {
if (which == BUTTON_POSITIVE) {
if (dialogTag == "colorPicker") {
val color = extras.getInt(SimpleColorDialog.COLOR)
getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit()
.putInt("custom_theme_int", color).apply()
logger("Custom Theme: $color")
}
}
return true
}
private fun restartApp() { private fun restartApp() {
Snackbar.make( Snackbar.make(
binding.root, binding.root,

View file

@ -1,16 +0,0 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<com.skydoves.colorpickerview.ColorPickerView
android:id="@+id/colorPickerView"
app:initialColor="?attr/colorPrimary"
app:debounceDuration="200"
android:layout_width="300dp"
android:layout_height="300dp" />
</LinearLayout>