mirror of
https://github.com/jrpie/Launcher.git
synced 2025-02-23 06:21:31 +01:00
fix: update SettingsFragmentActions when preferences change
This commit is contained in:
parent
178865c6cf
commit
977c4618ef
4 changed files with 41 additions and 23 deletions
|
@ -2,6 +2,8 @@ package de.jrpie.android.launcher.settings.actions
|
|||
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
|
@ -10,9 +12,9 @@ import android.view.ViewGroup
|
|||
import android.widget.Toast
|
||||
import androidx.fragment.app.Fragment
|
||||
import de.jrpie.android.launcher.*
|
||||
import de.jrpie.android.launcher.databinding.SettingsActionsBinding
|
||||
import de.jrpie.android.launcher.list.ListActivity
|
||||
import de.jrpie.android.launcher.settings.intendedSettingsPause
|
||||
import de.jrpie.android.launcher.databinding.SettingsActionsBinding
|
||||
|
||||
|
||||
/**
|
||||
|
@ -25,35 +27,42 @@ import de.jrpie.android.launcher.databinding.SettingsActionsBinding
|
|||
|
||||
class SettingsFragmentActions : Fragment(), UIObject {
|
||||
|
||||
private lateinit var binding: SettingsActionsBinding
|
||||
private var binding: SettingsActionsBinding? = null
|
||||
|
||||
private val sharedPreferencesListener =
|
||||
OnSharedPreferenceChangeListener { _, _ ->
|
||||
binding?.let { it.settingsActionsRviewFragment.getFragment<SettingsFragmentActionsRecycler>().actionViewAdapter?.updateActions() }
|
||||
}
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
getPreferences(requireContext()).registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
|
||||
binding = SettingsActionsBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
return binding!!.root
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super<Fragment>.onStart()
|
||||
super<UIObject>.onStart()
|
||||
|
||||
}
|
||||
|
||||
override fun applyTheme() {
|
||||
setButtonColor(binding.settingsActionsButtonViewApps, vibrantColor)
|
||||
setButtonColor(binding.settingsActionsButtonInstallApps, vibrantColor)
|
||||
setButtonColor(binding!!.settingsActionsButtonViewApps, vibrantColor)
|
||||
setButtonColor(binding!!.settingsActionsButtonInstallApps, vibrantColor)
|
||||
}
|
||||
|
||||
override fun setOnClicks() {
|
||||
|
||||
// App management buttons
|
||||
binding.settingsActionsButtonViewApps.setOnClickListener{
|
||||
binding!!.settingsActionsButtonViewApps.setOnClickListener{
|
||||
val intent = Intent(this.context, ListActivity::class.java)
|
||||
intent.putExtra("intention", ListActivity.ListActivityIntention.VIEW.toString())
|
||||
intendedSettingsPause = true
|
||||
startActivity(intent)
|
||||
}
|
||||
binding.settingsActionsButtonInstallApps.setOnClickListener{
|
||||
binding!!.settingsActionsButtonInstallApps.setOnClickListener{
|
||||
try {
|
||||
val rateIntent = Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
|
@ -67,4 +76,9 @@ class SettingsFragmentActions : Fragment(), UIObject {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
getPreferences(requireContext()).unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.lang.Exception
|
|||
class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
||||
|
||||
private lateinit var binding: SettingsActionsRecyclerBinding
|
||||
public var actionViewAdapter: ActionsRecyclerAdapter? = null
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
|
@ -41,7 +42,7 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
|||
|
||||
// set up the list / recycler
|
||||
val actionViewManager = LinearLayoutManager(context)
|
||||
val actionViewAdapter = ActionsRecyclerAdapter( requireActivity() )
|
||||
actionViewAdapter = ActionsRecyclerAdapter( requireActivity() )
|
||||
|
||||
binding.settingsActionsRview.apply {
|
||||
// improve performance (since content changes don't change the layout size)
|
||||
|
@ -57,7 +58,7 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
|||
class ActionsRecyclerAdapter(val activity: Activity):
|
||||
RecyclerView.Adapter<ActionsRecyclerAdapter.ViewHolder>() {
|
||||
|
||||
private val gesturesList: List<Gesture>
|
||||
private val gesturesList: ArrayList<Gesture>
|
||||
|
||||
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
|
||||
View.OnClickListener {
|
||||
|
@ -123,7 +124,18 @@ class ActionsRecyclerAdapter(val activity: Activity):
|
|||
val edgeActions = getPreferences(activity).getBoolean(PREF_EDGE_ACTIONS_ENABLED, false)
|
||||
gesturesList = Gesture.values().filter {
|
||||
(doubleActions || !it.isDoubleVariant())
|
||||
&& (edgeActions || !it.isEdgeVariant())}
|
||||
&& (edgeActions || !it.isEdgeVariant())} as ArrayList<Gesture>
|
||||
}
|
||||
|
||||
public fun updateActions() {
|
||||
val doubleActions = getPreferences(activity).getBoolean(PREF_DOUBLE_ACTIONS_ENABLED, false)
|
||||
val edgeActions = getPreferences(activity).getBoolean(PREF_EDGE_ACTIONS_ENABLED, false)
|
||||
this.gesturesList.clear()
|
||||
gesturesList.addAll(Gesture.values().filter {
|
||||
(doubleActions || !it.isDoubleVariant())
|
||||
&& (edgeActions || !it.isEdgeVariant())})
|
||||
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
/* */
|
||||
|
|
|
@ -102,16 +102,8 @@ class SettingsFragmentLauncher : Fragment(), UIObject {
|
|||
}
|
||||
bindSwitchToPref(binding.settingsLauncherSwitchAutoLaunch, PREF_SEARCH_AUTO_LAUNCH, false) {}
|
||||
bindSwitchToPref(binding.settingsLauncherSwitchAutoKeyboard, PREF_SEARCH_AUTO_KEYBOARD, true) {}
|
||||
bindSwitchToPref(binding.settingsLauncherSwitchEnableDouble, PREF_DOUBLE_ACTIONS_ENABLED, false) {
|
||||
//intendedSettingsPause = true
|
||||
// TODO fixme: This causes the app to crash on some devices.
|
||||
//activity?.recreate()
|
||||
}
|
||||
bindSwitchToPref(binding.settingsLauncherSwitchEnableEdge, PREF_EDGE_ACTIONS_ENABLED, false) {
|
||||
//intendedSettingsPause = true
|
||||
// TODO fixme
|
||||
//activity?.recreate()
|
||||
}
|
||||
bindSwitchToPref(binding.settingsLauncherSwitchEnableDouble, PREF_DOUBLE_ACTIONS_ENABLED, false) {}
|
||||
bindSwitchToPref(binding.settingsLauncherSwitchEnableEdge, PREF_EDGE_ACTIONS_ENABLED, false) {}
|
||||
|
||||
binding.settingsSeekbarSensitivity.setOnSeekBarChangeListener(
|
||||
object : SeekBar.OnSeekBarChangeListener {
|
||||
|
@ -151,13 +143,13 @@ class SettingsFragmentLauncher : Fragment(), UIObject {
|
|||
|
||||
// Load values into the theme spinner
|
||||
val staticThemeAdapter = ArrayAdapter.createFromResource(
|
||||
activity!!, R.array.settings_launcher_theme_spinner_items,
|
||||
requireActivity(), R.array.settings_launcher_theme_spinner_items,
|
||||
android.R.layout.simple_spinner_item )
|
||||
|
||||
staticThemeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
binding.settingsLauncherThemeSpinner.adapter = staticThemeAdapter
|
||||
|
||||
val themeInt = when (getSavedTheme(activity!!)) {
|
||||
val themeInt = when (getSavedTheme(requireActivity())) {
|
||||
"finn" -> 0
|
||||
"dark" -> 1
|
||||
else -> 0
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
android:paddingTop="16sp"
|
||||
android:paddingRight="32sp">
|
||||
|
||||
<fragment
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/settings_actions_rview_fragment"
|
||||
android:name="de.jrpie.android.launcher.settings.actions.SettingsFragmentActionsRecycler"
|
||||
android:layout_width="match_parent"
|
||||
|
|
Loading…
Add table
Reference in a new issue