/* * Copyright (c) 2020 Hemanth Savarla. * * 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.os.Build import android.os.Bundle import androidx.preference.Preference import androidx.preference.TwoStatePreference import code.name.monkey.appthemehelper.ACCENT_COLORS import code.name.monkey.appthemehelper.ACCENT_COLORS_SUB import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.common.prefs.supportv7.ATEColorPreference import code.name.monkey.appthemehelper.common.prefs.supportv7.ATESwitchPreference import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.* import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager import code.name.monkey.retromusic.util.PreferenceUtil import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.color.colorChooser import com.google.android.material.color.DynamicColors /** * @author Hemanth S (h4h13). */ class ThemeSettingsFragment : AbsSettingsFragment() { override fun invalidateSettings() { val generalTheme: Preference? = findPreference(GENERAL_THEME) generalTheme?.let { setSummary(it) it.setOnPreferenceChangeListener { _, newValue -> val theme = newValue as String setSummary(it, newValue) ThemeStore.markChanged(requireContext()) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { requireActivity().setTheme(PreferenceUtil.themeResFromPrefValue(theme)) DynamicShortcutManager(requireContext()).updateDynamicShortcuts() } restartActivity() true } } val accentColorPref: ATEColorPreference? = findPreference(ACCENT_COLOR) val accentColor = ThemeStore.accentColor(requireContext()) accentColorPref?.setColor(accentColor, ColorUtil.darkenColor(accentColor)) accentColorPref?.setOnPreferenceClickListener { MaterialDialog(requireContext()).show { colorChooser( initialSelection = accentColor, showAlphaSelector = false, colors = ACCENT_COLORS, subColors = ACCENT_COLORS_SUB, allowCustomArgb = true ) { _, color -> ThemeStore.editTheme(requireContext()).accentColor(color).commit() if (VersionUtils.hasNougatMR()) DynamicShortcutManager(requireContext()).updateDynamicShortcuts() restartActivity() } } return@setOnPreferenceClickListener true } val blackTheme: ATESwitchPreference? = findPreference(BLACK_THEME) blackTheme?.setOnPreferenceChangeListener { _, _ -> if (!App.isProVersion()) { showProToastAndNavigate("Just Black theme") return@setOnPreferenceChangeListener false } ThemeStore.markChanged(requireContext()) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { requireActivity().setTheme(PreferenceUtil.themeResFromPrefValue("black")) DynamicShortcutManager(requireContext()).updateDynamicShortcuts() } restartActivity() true } val desaturatedColor: ATESwitchPreference? = findPreference(DESATURATED_COLOR) desaturatedColor?.setOnPreferenceChangeListener { _, value -> val desaturated = value as Boolean ThemeStore.prefs(requireContext()) .edit() .putBoolean("desaturated_color", desaturated) .apply() PreferenceUtil.isDesaturatedColor = desaturated restartActivity() true } val colorAppShortcuts: TwoStatePreference? = findPreference(SHOULD_COLOR_APP_SHORTCUTS) if (!VersionUtils.hasNougatMR()) { colorAppShortcuts?.isVisible = false } else { colorAppShortcuts?.isChecked = PreferenceUtil.isColoredAppShortcuts colorAppShortcuts?.setOnPreferenceChangeListener { _, newValue -> PreferenceUtil.isColoredAppShortcuts = newValue as Boolean DynamicShortcutManager(requireContext()).updateDynamicShortcuts() true } } val materialYou: ATESwitchPreference? = findPreference(MATERIAL_YOU) materialYou?.setOnPreferenceChangeListener { _, newValue -> if (newValue as Boolean) { DynamicColors.applyToActivitiesIfAvailable(App.getContext()) } restartActivity() true } } override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.pref_general) } }