1
0
Fork 0
mirror of https://github.com/jrpie/Launcher.git synced 2025-04-08 05:14:38 +02:00

chore: moved sharedPreferencesListener into FragementActionsRecycler. Might fix

This commit is contained in:
Josia Pietsch 2024-09-06 14:46:36 +02:00
parent 25483f65ac
commit 5ab54ea1cb
Signed by: jrpie
GPG key ID: E70B571D66986A2D
3 changed files with 46 additions and 45 deletions
app/src/main/java/de/jrpie/android/launcher

View file

@ -1,10 +1,8 @@
package de.jrpie.android.launcher.list.apps
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Rect
import android.net.Uri
import android.os.AsyncTask
import android.view.LayoutInflater
import android.view.View
@ -17,7 +15,6 @@ import androidx.recyclerview.widget.RecyclerView
import de.jrpie.android.launcher.PREF_SEARCH_AUTO_LAUNCH
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
import de.jrpie.android.launcher.REQUEST_UNINSTALL
import de.jrpie.android.launcher.appsList
import de.jrpie.android.launcher.getPreferences
import de.jrpie.android.launcher.getSavedTheme

View file

@ -2,8 +2,6 @@ package de.jrpie.android.launcher.settings.actions
import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -13,7 +11,6 @@ import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.UIObject
import de.jrpie.android.launcher.databinding.SettingsActionsBinding
import de.jrpie.android.launcher.getPreferences
import de.jrpie.android.launcher.list.ListActivity
import de.jrpie.android.launcher.setButtonColor
import de.jrpie.android.launcher.vibrantColor
@ -32,15 +29,10 @@ SettingsFragmentActions : Fragment(), UIObject {
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
}
@ -77,6 +69,5 @@ SettingsFragmentActions : Fragment(), UIObject {
override fun onDestroy() {
super.onDestroy()
getPreferences(requireContext()).unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
}
}

View file

@ -10,6 +10,8 @@ import de.jrpie.android.launcher.*
import de.jrpie.android.launcher.list.ListActivity
import android.app.Activity
import android.content.Intent
import android.content.SharedPreferences
import android.util.Log
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
@ -26,8 +28,13 @@ import java.lang.Exception
*/
class SettingsFragmentActionsRecycler : Fragment(), UIObject {
private var sharedPreferencesListener =
SharedPreferences.OnSharedPreferenceChangeListener { _, _ ->
actionViewAdapter?.updateActions()
}
private lateinit var binding: SettingsActionsRecyclerBinding
var actionViewAdapter: ActionsRecyclerAdapter? = null
private var actionViewAdapter: ActionsRecyclerAdapter? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@ -49,9 +56,16 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
layoutManager = actionViewManager
adapter = actionViewAdapter
}
getPreferences(requireContext()).registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
super<UIObject>.onStart()
}
override fun onDestroy() {
getPreferences(requireContext()).unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
super.onDestroy()
}
}
class ActionsRecyclerAdapter(val activity: Activity):
@ -71,6 +85,35 @@ class ActionsRecyclerAdapter(val activity: Activity):
init { itemView.setOnClickListener(this) }
}
private fun updateViewHolder(gesture: Gesture, viewHolder: ViewHolder) {
val app = gesture.getApp(activity)
val content = app.first
viewHolder.img.visibility = View.VISIBLE
viewHolder.removeAction.visibility = View.VISIBLE
viewHolder.chooseButton.visibility = View.INVISIBLE
if (content.isEmpty()){
viewHolder.img.visibility = View.INVISIBLE
viewHolder.removeAction.visibility = View.GONE
viewHolder.chooseButton.visibility = View.VISIBLE
}
else if (LauncherAction.isOtherAction(content)) {
LauncherAction.byId(content)?.let {
viewHolder.img.setImageResource(it.icon)
}
} else {
// Set image icon (by packageName)
try {
viewHolder.img.setImageDrawable(getAppIcon(activity, content, app.second))
} catch (e : Exception) {
// Probably the app was uninstalled
// the button is shown, user asked to select an action
viewHolder.img.visibility = View.INVISIBLE
viewHolder.removeAction.visibility = View.GONE
viewHolder.chooseButton.visibility = View.VISIBLE
}
}
}
override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) {
val gesture = gesturesList[i]
viewHolder.textView.text = gesture.getLabel(activity)
@ -78,40 +121,10 @@ class ActionsRecyclerAdapter(val activity: Activity):
if (getSavedTheme(activity) == "dark") transformGrayscale(
viewHolder.img
)
fun updateViewHolder() {
val app = gesture.getApp(activity)
val content = app.first
viewHolder.img.visibility = View.VISIBLE
viewHolder.removeAction.visibility = View.VISIBLE
viewHolder.chooseButton.visibility = View.INVISIBLE
if (content.isEmpty()){
viewHolder.img.visibility = View.INVISIBLE
viewHolder.removeAction.visibility = View.GONE
viewHolder.chooseButton.visibility = View.VISIBLE
}
else if (LauncherAction.isOtherAction(content)) {
LauncherAction.byId(content)?.let {
viewHolder.img.setImageResource(it.icon)
}
} else {
// Set image icon (by packageName)
try {
viewHolder.img.setImageDrawable(getAppIcon(activity, content, app.second))
} catch (e : Exception) {
// the button is shown, user asked to select an action
viewHolder.img.visibility = View.INVISIBLE
viewHolder.removeAction.visibility = View.GONE
viewHolder.chooseButton.visibility = View.VISIBLE
}
}
}
updateViewHolder()
updateViewHolder(gesture, viewHolder)
viewHolder.img.setOnClickListener{ chooseApp(gesture) }
viewHolder.chooseButton.setOnClickListener{ chooseApp(gesture) }
viewHolder.removeAction.setOnClickListener{
gesture.removeApp(activity)
updateViewHolder()
}
viewHolder.removeAction.setOnClickListener{ gesture.removeApp(activity) }
}
override fun getItemCount(): Int { return gesturesList.size }