167 lines
7.2 KiB
Kotlin
167 lines
7.2 KiB
Kotlin
/*
|
|
* Copyright (c) 2019 Hemanth Savarala.
|
|
*
|
|
* Licensed under the GNU General Public License v3
|
|
*
|
|
* This is free software: you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details.
|
|
*/
|
|
|
|
package code.name.monkey.retromusic.fragments.settings
|
|
|
|
import android.graphics.Color
|
|
import android.graphics.Color.BLUE
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import androidx.core.content.ContextCompat
|
|
import androidx.preference.Preference
|
|
import androidx.preference.TwoStatePreference
|
|
import code.name.monkey.appthemehelper.*
|
|
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference
|
|
import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory
|
|
import code.name.monkey.appthemehelper.util.ColorUtil
|
|
import code.name.monkey.appthemehelper.util.VersionUtils
|
|
import code.name.monkey.retromusic.App
|
|
import code.name.monkey.retromusic.R
|
|
import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager
|
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
|
import com.afollestad.materialdialogs.MaterialDialog
|
|
import com.afollestad.materialdialogs.bottomsheets.BottomSheet
|
|
import com.afollestad.materialdialogs.color.colorChooser
|
|
|
|
|
|
/**
|
|
* @author Hemanth S (h4h13).
|
|
*/
|
|
|
|
class ThemeSettingsFragment : AbsSettingsFragment() {
|
|
private var materialDialog: MaterialDialog? = null
|
|
|
|
override fun onDestroyView() {
|
|
super.onDestroyView()
|
|
materialDialog?.dismiss()
|
|
}
|
|
|
|
override fun invalidateSettings() {
|
|
|
|
val categoryColor: ATEPreferenceCategory? = findPreference("category_color")
|
|
val primaryColorPref = ATEColorPreference(preferenceScreen.context)
|
|
val primaryColor = ThemeStore.primaryColor(requireContext())
|
|
|
|
primaryColorPref.apply {
|
|
key = "primary_color"
|
|
isPersistent = false
|
|
setSummary(R.string.primary_color_desc)
|
|
setTitle(R.string.primary_color)
|
|
isCopyingEnabled = true
|
|
setIcon(R.drawable.ic_colorize_white_24dp)
|
|
setColor(primaryColor, ColorUtil.darkenColor(primaryColor))
|
|
setOnPreferenceClickListener {
|
|
materialDialog = MaterialDialog(requireContext(), BottomSheet()).show {
|
|
title(R.string.primary_color)
|
|
positiveButton(R.string.set)
|
|
colorChooser(initialSelection = BLUE,
|
|
allowCustomArgb = true,
|
|
colors = PRIMARY_COLORS,
|
|
subColors = PRIMARY_COLORS_SUB) { _, color ->
|
|
|
|
val theme = if (ColorUtil.isColorLight(color))
|
|
PreferenceUtil.getThemeResFromPrefValue("light")
|
|
else
|
|
PreferenceUtil.getThemeResFromPrefValue("dark")
|
|
|
|
ThemeStore.editTheme(requireContext()).activityTheme(theme).primaryColor(color).commit()
|
|
|
|
if (VersionUtils.hasNougatMR())
|
|
DynamicShortcutManager(context).updateDynamicShortcuts()
|
|
requireActivity().recreate()
|
|
}
|
|
}
|
|
true
|
|
}
|
|
}
|
|
|
|
val generalTheme: Preference? = findPreference("general_theme")
|
|
|
|
generalTheme?.let {
|
|
setSummary(it)
|
|
it.setOnPreferenceChangeListener { _, newValue ->
|
|
val theme = newValue as String
|
|
println(newValue)
|
|
if (theme == "color" && !App.isProVersion) {
|
|
showProToastAndNavigate("Color theme")
|
|
return@setOnPreferenceChangeListener false
|
|
}
|
|
|
|
setSummary(generalTheme, newValue)
|
|
|
|
when (theme) {
|
|
"light" -> ThemeStore.editTheme(requireContext()).primaryColor(Color.WHITE).commit()
|
|
"black" -> ThemeStore.editTheme(requireContext()).primaryColor(Color.BLACK).commit()
|
|
"dark" -> ThemeStore.editTheme(requireContext()).primaryColor(ContextCompat.getColor(requireContext(), R.color.md_grey_900)).commit()
|
|
"color" -> ThemeStore.editTheme(requireContext()).primaryColor(ContextCompat.getColor(requireContext(), R.color.md_blue_grey_800)).commit()
|
|
}
|
|
|
|
ThemeStore.editTheme(requireContext())
|
|
.activityTheme(PreferenceUtil.getThemeResFromPrefValue(theme))
|
|
.commit()
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
|
|
requireActivity().setTheme(PreferenceUtil.getThemeResFromPrefValue(theme))
|
|
DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
|
|
}
|
|
requireActivity().recreate()
|
|
true
|
|
}
|
|
}
|
|
|
|
val accentColorPref: ATEColorPreference = findPreference("accent_color")!!
|
|
val accentColor = ThemeStore.accentColor(requireContext())
|
|
accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor))
|
|
|
|
accentColorPref.setOnPreferenceClickListener {
|
|
materialDialog = MaterialDialog(requireContext(), BottomSheet()).show {
|
|
title(R.string.accent_color)
|
|
positiveButton(R.string.set)
|
|
colorChooser(colors = ACCENT_COLORS, allowCustomArgb = true, subColors = ACCENT_COLORS_SUB) { _, color ->
|
|
/*var colorFinal = Color.BLACK;
|
|
if (!ColorUtil.isColorSaturated(color)) {
|
|
colorFinal = color
|
|
}*/
|
|
ThemeStore.editTheme(requireContext()).accentColor(color).commit()
|
|
if (VersionUtils.hasNougatMR())
|
|
DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
|
|
requireActivity().recreate()
|
|
}
|
|
}
|
|
return@setOnPreferenceClickListener true
|
|
}
|
|
|
|
val colorAppShortcuts: TwoStatePreference = findPreference("should_color_app_shortcuts")!!
|
|
if (!VersionUtils.hasNougatMR()) {
|
|
colorAppShortcuts.isVisible = false
|
|
} else {
|
|
colorAppShortcuts.isChecked = PreferenceUtil.getInstance().coloredAppShortcuts()
|
|
colorAppShortcuts.setOnPreferenceChangeListener { _, newValue ->
|
|
// Save preference
|
|
PreferenceUtil.getInstance().setColoredAppShortcuts(newValue as Boolean)
|
|
DynamicShortcutManager(requireContext()).updateDynamicShortcuts()
|
|
true
|
|
}
|
|
}
|
|
|
|
if (PreferenceUtil.getInstance().generalTheme == R.style.Theme_RetroMusic_Color && App.isProVersion) {
|
|
categoryColor?.addPreference(primaryColorPref)
|
|
}
|
|
}
|
|
|
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
|
addPreferencesFromResource(R.xml.pref_general)
|
|
}
|
|
}
|