mirror of
https://github.com/jrpie/Launcher.git
synced 2025-02-23 14:31:30 +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.ActivityNotFoundException
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -10,9 +12,9 @@ import android.view.ViewGroup
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import de.jrpie.android.launcher.*
|
import de.jrpie.android.launcher.*
|
||||||
|
import de.jrpie.android.launcher.databinding.SettingsActionsBinding
|
||||||
import de.jrpie.android.launcher.list.ListActivity
|
import de.jrpie.android.launcher.list.ListActivity
|
||||||
import de.jrpie.android.launcher.settings.intendedSettingsPause
|
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 {
|
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(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
|
getPreferences(requireContext()).registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
|
||||||
binding = SettingsActionsBinding.inflate(inflater, container, false)
|
binding = SettingsActionsBinding.inflate(inflater, container, false)
|
||||||
return binding.root
|
return binding!!.root
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super<Fragment>.onStart()
|
super<Fragment>.onStart()
|
||||||
super<UIObject>.onStart()
|
super<UIObject>.onStart()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun applyTheme() {
|
override fun applyTheme() {
|
||||||
setButtonColor(binding.settingsActionsButtonViewApps, vibrantColor)
|
setButtonColor(binding!!.settingsActionsButtonViewApps, vibrantColor)
|
||||||
setButtonColor(binding.settingsActionsButtonInstallApps, vibrantColor)
|
setButtonColor(binding!!.settingsActionsButtonInstallApps, vibrantColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setOnClicks() {
|
override fun setOnClicks() {
|
||||||
|
|
||||||
// App management buttons
|
// App management buttons
|
||||||
binding.settingsActionsButtonViewApps.setOnClickListener{
|
binding!!.settingsActionsButtonViewApps.setOnClickListener{
|
||||||
val intent = Intent(this.context, ListActivity::class.java)
|
val intent = Intent(this.context, ListActivity::class.java)
|
||||||
intent.putExtra("intention", ListActivity.ListActivityIntention.VIEW.toString())
|
intent.putExtra("intention", ListActivity.ListActivityIntention.VIEW.toString())
|
||||||
intendedSettingsPause = true
|
intendedSettingsPause = true
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
binding.settingsActionsButtonInstallApps.setOnClickListener{
|
binding!!.settingsActionsButtonInstallApps.setOnClickListener{
|
||||||
try {
|
try {
|
||||||
val rateIntent = Intent(
|
val rateIntent = Intent(
|
||||||
Intent.ACTION_VIEW,
|
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 {
|
class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
||||||
|
|
||||||
private lateinit var binding: SettingsActionsRecyclerBinding
|
private lateinit var binding: SettingsActionsRecyclerBinding
|
||||||
|
public var actionViewAdapter: ActionsRecyclerAdapter? = null
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
|
@ -41,7 +42,7 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
||||||
|
|
||||||
// set up the list / recycler
|
// set up the list / recycler
|
||||||
val actionViewManager = LinearLayoutManager(context)
|
val actionViewManager = LinearLayoutManager(context)
|
||||||
val actionViewAdapter = ActionsRecyclerAdapter( requireActivity() )
|
actionViewAdapter = ActionsRecyclerAdapter( requireActivity() )
|
||||||
|
|
||||||
binding.settingsActionsRview.apply {
|
binding.settingsActionsRview.apply {
|
||||||
// improve performance (since content changes don't change the layout size)
|
// improve performance (since content changes don't change the layout size)
|
||||||
|
@ -57,7 +58,7 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
||||||
class ActionsRecyclerAdapter(val activity: Activity):
|
class ActionsRecyclerAdapter(val activity: Activity):
|
||||||
RecyclerView.Adapter<ActionsRecyclerAdapter.ViewHolder>() {
|
RecyclerView.Adapter<ActionsRecyclerAdapter.ViewHolder>() {
|
||||||
|
|
||||||
private val gesturesList: List<Gesture>
|
private val gesturesList: ArrayList<Gesture>
|
||||||
|
|
||||||
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
|
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
|
||||||
View.OnClickListener {
|
View.OnClickListener {
|
||||||
|
@ -123,7 +124,18 @@ class ActionsRecyclerAdapter(val activity: Activity):
|
||||||
val edgeActions = getPreferences(activity).getBoolean(PREF_EDGE_ACTIONS_ENABLED, false)
|
val edgeActions = getPreferences(activity).getBoolean(PREF_EDGE_ACTIONS_ENABLED, false)
|
||||||
gesturesList = Gesture.values().filter {
|
gesturesList = Gesture.values().filter {
|
||||||
(doubleActions || !it.isDoubleVariant())
|
(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.settingsLauncherSwitchAutoLaunch, PREF_SEARCH_AUTO_LAUNCH, false) {}
|
||||||
bindSwitchToPref(binding.settingsLauncherSwitchAutoKeyboard, PREF_SEARCH_AUTO_KEYBOARD, true) {}
|
bindSwitchToPref(binding.settingsLauncherSwitchAutoKeyboard, PREF_SEARCH_AUTO_KEYBOARD, true) {}
|
||||||
bindSwitchToPref(binding.settingsLauncherSwitchEnableDouble, PREF_DOUBLE_ACTIONS_ENABLED, false) {
|
bindSwitchToPref(binding.settingsLauncherSwitchEnableDouble, PREF_DOUBLE_ACTIONS_ENABLED, false) {}
|
||||||
//intendedSettingsPause = true
|
bindSwitchToPref(binding.settingsLauncherSwitchEnableEdge, PREF_EDGE_ACTIONS_ENABLED, false) {}
|
||||||
// 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()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.settingsSeekbarSensitivity.setOnSeekBarChangeListener(
|
binding.settingsSeekbarSensitivity.setOnSeekBarChangeListener(
|
||||||
object : SeekBar.OnSeekBarChangeListener {
|
object : SeekBar.OnSeekBarChangeListener {
|
||||||
|
@ -151,13 +143,13 @@ class SettingsFragmentLauncher : Fragment(), UIObject {
|
||||||
|
|
||||||
// Load values into the theme spinner
|
// Load values into the theme spinner
|
||||||
val staticThemeAdapter = ArrayAdapter.createFromResource(
|
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 )
|
android.R.layout.simple_spinner_item )
|
||||||
|
|
||||||
staticThemeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
staticThemeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||||
binding.settingsLauncherThemeSpinner.adapter = staticThemeAdapter
|
binding.settingsLauncherThemeSpinner.adapter = staticThemeAdapter
|
||||||
|
|
||||||
val themeInt = when (getSavedTheme(activity!!)) {
|
val themeInt = when (getSavedTheme(requireActivity())) {
|
||||||
"finn" -> 0
|
"finn" -> 0
|
||||||
"dark" -> 1
|
"dark" -> 1
|
||||||
else -> 0
|
else -> 0
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
android:paddingTop="16sp"
|
android:paddingTop="16sp"
|
||||||
android:paddingRight="32sp">
|
android:paddingRight="32sp">
|
||||||
|
|
||||||
<fragment
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/settings_actions_rview_fragment"
|
android:id="@+id/settings_actions_rview_fragment"
|
||||||
android:name="de.jrpie.android.launcher.settings.actions.SettingsFragmentActionsRecycler"
|
android:name="de.jrpie.android.launcher.settings.actions.SettingsFragmentActionsRecycler"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
Loading…
Add table
Reference in a new issue