| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -9,7 +9,6 @@ import android.view.Menu | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.view.MenuInflater | 
					 | 
					 | 
					 | 
					import android.view.MenuInflater | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.view.MenuItem | 
					 | 
					 | 
					 | 
					import android.view.MenuItem | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import android.view.View | 
					 | 
					 | 
					 | 
					import android.view.View | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import androidx.activity.result.contract.ActivityResultContracts | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import androidx.documentfile.provider.DocumentFile | 
					 | 
					 | 
					 | 
					import androidx.documentfile.provider.DocumentFile | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import androidx.preference.Preference | 
					 | 
					 | 
					 | 
					import androidx.preference.Preference | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.R | 
					 | 
					 | 
					 | 
					import io.legado.app.R | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -26,6 +25,7 @@ import io.legado.app.lib.dialogs.selector | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.lib.permission.Permissions | 
					 | 
					 | 
					 | 
					import io.legado.app.lib.permission.Permissions | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.lib.permission.PermissionsCompat | 
					 | 
					 | 
					 | 
					import io.legado.app.lib.permission.PermissionsCompat | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.lib.theme.ATH | 
					 | 
					 | 
					 | 
					import io.legado.app.lib.theme.ATH | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import io.legado.app.ui.widget.image.CoverImageView | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.ui.widget.number.NumberPickerDialog | 
					 | 
					 | 
					 | 
					import io.legado.app.ui.widget.number.NumberPickerDialog | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.ui.widget.prefs.ColorPreference | 
					 | 
					 | 
					 | 
					import io.legado.app.ui.widget.prefs.ColorPreference | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import io.legado.app.utils.* | 
					 | 
					 | 
					 | 
					import io.legado.app.utils.* | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -35,17 +35,21 @@ import java.io.File | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					@Suppress("SameParameterValue") | 
					 | 
					 | 
					 | 
					@Suppress("SameParameterValue") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class ThemeConfigFragment : BasePreferenceFragment(), | 
					 | 
					 | 
					 | 
					class ThemeConfigFragment : BasePreferenceFragment(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    SharedPreferences.OnSharedPreferenceChangeListener { | 
					 | 
					 | 
					 | 
					    SharedPreferences.OnSharedPreferenceChangeListener { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					    private val requestCodeCover = 111 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private val selectLightBg = registerForActivityResult(ActivityResultContracts.GetContent()) { | 
					 | 
					 | 
					 | 
					    private val requestCodeCoverDark = 112 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        it ?: return@registerForActivityResult | 
					 | 
					 | 
					 | 
					    private val requestCodeBgLight = 121 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        setBgFromUri(it, PreferKey.bgImage) { | 
					 | 
					 | 
					 | 
					    private val requestCodeBgDark = 122 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            upTheme(false) | 
					 | 
					 | 
					 | 
					    private val selectImage = registerForActivityResult(ActivityResultContractUtils.SelectImage()) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        val uri = it?.second ?: return@registerForActivityResult | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					        when (it.first) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private val selectDarkBg = registerForActivityResult(ActivityResultContracts.GetContent()) { | 
					 | 
					 | 
					 | 
					            requestCodeCover -> setCoverFromUri(PreferKey.defaultCover, uri) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        it ?: return@registerForActivityResult | 
					 | 
					 | 
					 | 
					            requestCodeCoverDark -> setCoverFromUri(PreferKey.defaultCoverDark, uri) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        setBgFromUri(it, PreferKey.bgImageN) { | 
					 | 
					 | 
					 | 
					            requestCodeBgLight -> setBgFromUri(uri, PreferKey.bgImage) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            upTheme(true) | 
					 | 
					 | 
					 | 
					                upTheme(false) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            requestCodeBgDark -> setBgFromUri(uri, PreferKey.bgImageN) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                upTheme(true) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -57,6 +61,8 @@ class ThemeConfigFragment : BasePreferenceFragment(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.bgImage, getPrefString(PreferKey.bgImage)) | 
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.bgImage, getPrefString(PreferKey.bgImage)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.bgImageN, getPrefString(PreferKey.bgImageN)) | 
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.bgImageN, getPrefString(PreferKey.bgImageN)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.barElevation, AppConfig.elevation.toString()) | 
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.barElevation, AppConfig.elevation.toString()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.defaultCover, getPrefString(PreferKey.defaultCover)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        upPreferenceSummary(PreferKey.defaultCoverDark, getPrefString(PreferKey.defaultCoverDark)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        findPreference<ColorPreference>(PreferKey.cBackground)?.let { | 
					 | 
					 | 
					 | 
					        findPreference<ColorPreference>(PreferKey.cBackground)?.let { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            it.onSaveColor = { color -> | 
					 | 
					 | 
					 | 
					            it.onSaveColor = { color -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (!ColorUtils.isColorLight(color)) { | 
					 | 
					 | 
					 | 
					                if (!ColorUtils.isColorLight(color)) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -85,14 +91,14 @@ class ThemeConfigFragment : BasePreferenceFragment(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        setHasOptionsMenu(true) | 
					 | 
					 | 
					 | 
					        setHasOptionsMenu(true) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    override fun onResume() { | 
					 | 
					 | 
					 | 
					    override fun onCreate(savedInstanceState: Bundle?) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        super.onResume() | 
					 | 
					 | 
					 | 
					        super.onCreate(savedInstanceState) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(this) | 
					 | 
					 | 
					 | 
					        preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(this) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    override fun onPause() { | 
					 | 
					 | 
					 | 
					    override fun onDestroy() { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        super.onDestroy() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) | 
					 | 
					 | 
					 | 
					        preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        super.onPause() | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { | 
					 | 
					 | 
					 | 
					    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -128,6 +134,9 @@ class ThemeConfigFragment : BasePreferenceFragment(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            PreferKey.cNBBackground -> { | 
					 | 
					 | 
					 | 
					            PreferKey.cNBBackground -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                upTheme(true) | 
					 | 
					 | 
					 | 
					                upTheme(true) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PreferKey.defaultCover, PreferKey.defaultCoverDark -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                upPreferenceSummary(key, getPrefString(key)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -151,29 +160,52 @@ class ThemeConfigFragment : BasePreferenceFragment(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            "themeList" -> ThemeListDialog().show(childFragmentManager, "themeList") | 
					 | 
					 | 
					 | 
					            "themeList" -> ThemeListDialog().show(childFragmentManager, "themeList") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            "saveDayTheme", "saveNightTheme" -> saveThemeAlert(key) | 
					 | 
					 | 
					 | 
					            "saveDayTheme", "saveNightTheme" -> saveThemeAlert(key) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            PreferKey.bgImage -> if (getPrefString(PreferKey.bgImage).isNullOrEmpty()) { | 
					 | 
					 | 
					 | 
					            PreferKey.bgImage -> if (getPrefString(PreferKey.bgImage).isNullOrEmpty()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                selectLightBg.launch("image/*") | 
					 | 
					 | 
					 | 
					                selectImage.launch(requestCodeBgLight) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else { | 
					 | 
					 | 
					 | 
					            } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                selector(items = arrayListOf("删除图片", "选择图片")) { _, i -> | 
					 | 
					 | 
					 | 
					                selector(items = arrayListOf("删除图片", "选择图片")) { _, i -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (i == 0) { | 
					 | 
					 | 
					 | 
					                    if (i == 0) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        removePref(PreferKey.bgImage) | 
					 | 
					 | 
					 | 
					                        removePref(PreferKey.bgImage) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        upTheme(false) | 
					 | 
					 | 
					 | 
					                        upTheme(false) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } else { | 
					 | 
					 | 
					 | 
					                    } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        selectLightBg.launch("image/*") | 
					 | 
					 | 
					 | 
					                        selectImage.launch(requestCodeBgLight) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            PreferKey.bgImageN -> if (getPrefString(PreferKey.bgImageN).isNullOrEmpty()) { | 
					 | 
					 | 
					 | 
					            PreferKey.bgImageN -> if (getPrefString(PreferKey.bgImageN).isNullOrEmpty()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                selectDarkBg.launch("image/*") | 
					 | 
					 | 
					 | 
					                selectImage.launch(requestCodeBgDark) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else { | 
					 | 
					 | 
					 | 
					            } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                selector(items = arrayListOf("删除图片", "选择图片")) { _, i -> | 
					 | 
					 | 
					 | 
					                selector(items = arrayListOf("删除图片", "选择图片")) { _, i -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (i == 0) { | 
					 | 
					 | 
					 | 
					                    if (i == 0) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        removePref(PreferKey.bgImageN) | 
					 | 
					 | 
					 | 
					                        removePref(PreferKey.bgImageN) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        upTheme(true) | 
					 | 
					 | 
					 | 
					                        upTheme(true) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } else { | 
					 | 
					 | 
					 | 
					                    } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        selectDarkBg.launch("image/*") | 
					 | 
					 | 
					 | 
					                        selectImage.launch(requestCodeBgDark) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PreferKey.defaultCover -> if (getPrefString(PreferKey.defaultCover).isNullOrEmpty()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                selectImage.launch(requestCodeCover) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                selector(items = arrayListOf("删除图片", "选择图片")) { _, i -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    if (i == 0) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        removePref(PreferKey.defaultCover) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        selectImage.launch(requestCodeCover) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PreferKey.defaultCoverDark -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                if (getPrefString(PreferKey.defaultCoverDark).isNullOrEmpty()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    selectImage.launch(requestCodeCoverDark) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    selector(items = arrayListOf("删除图片", "选择图片")) { _, i -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        if (i == 0) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            removePref(PreferKey.defaultCoverDark) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            selectImage.launch(requestCodeCoverDark) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return super.onPreferenceTreeClick(preference) | 
					 | 
					 | 
					 | 
					        return super.onPreferenceTreeClick(preference) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -217,6 +249,14 @@ class ThemeConfigFragment : BasePreferenceFragment(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        when (preferenceKey) { | 
					 | 
					 | 
					 | 
					        when (preferenceKey) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            PreferKey.barElevation -> preference.summary = | 
					 | 
					 | 
					 | 
					            PreferKey.barElevation -> preference.summary = | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                getString(R.string.bar_elevation_s, value) | 
					 | 
					 | 
					 | 
					                getString(R.string.bar_elevation_s, value) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PreferKey.bgImage, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PreferKey.bgImageN, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PreferKey.defaultCover, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PreferKey.defaultCoverDark -> preference.summary = if (value.isNullOrBlank()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                getString(R.string.select_image) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                value | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            else -> preference.summary = value | 
					 | 
					 | 
					 | 
					            else -> preference.summary = value | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -260,4 +300,41 @@ class ThemeConfigFragment : BasePreferenceFragment(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    private fun setCoverFromUri(preferenceKey: String, uri: Uri) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        if (uri.isContentScheme()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            val doc = DocumentFile.fromSingleUri(requireContext(), uri) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            doc?.name?.let { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                var file = requireContext().externalFiles | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                file = FileUtils.createFileIfNotExist(file, "covers", it) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                kotlin.runCatching { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    DocumentUtils.readBytes(requireContext(), doc.uri) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                }.getOrNull()?.let { byteArray -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    file.writeBytes(byteArray) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    putPrefString(preferenceKey, file.absolutePath) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    CoverImageView.upDefaultCover() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } ?: toastOnUi("获取文件出错") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            PermissionsCompat.Builder(this) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                .addPermissions( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    Permissions.READ_EXTERNAL_STORAGE, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    Permissions.WRITE_EXTERNAL_STORAGE | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                ) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                .rationale(R.string.bg_image_per) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                .onGranted { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    RealPathUtil.getPath(requireContext(), uri)?.let { path -> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        val imgFile = File(path) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        if (imgFile.exists()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            var file = requireContext().externalFiles | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            file = FileUtils.createFileIfNotExist(file, "covers", imgFile.name) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            file.writeBytes(imgFile.readBytes()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            putPrefString(PreferKey.defaultCover, file.absolutePath) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            CoverImageView.upDefaultCover() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                .request() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} |