mirror of
https://github.com/jrpie/Launcher.git
synced 2025-04-16 17:08:42 +02:00
chore: moved sharedPreferencesListener into FragementActionsRecycler. Might fix #27
This commit is contained in:
parent
25483f65ac
commit
5ab54ea1cb
3 changed files with 46 additions and 45 deletions
|
@ -1,10 +1,8 @@
|
||||||
package de.jrpie.android.launcher.list.apps
|
package de.jrpie.android.launcher.list.apps
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
import android.net.Uri
|
|
||||||
import android.os.AsyncTask
|
import android.os.AsyncTask
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
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.PREF_SEARCH_AUTO_LAUNCH
|
||||||
import de.jrpie.android.launcher.R
|
import de.jrpie.android.launcher.R
|
||||||
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
|
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.appsList
|
||||||
import de.jrpie.android.launcher.getPreferences
|
import de.jrpie.android.launcher.getPreferences
|
||||||
import de.jrpie.android.launcher.getSavedTheme
|
import de.jrpie.android.launcher.getSavedTheme
|
||||||
|
|
|
@ -2,8 +2,6 @@ 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.OnSharedPreferenceChangeListener
|
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
@ -13,7 +11,6 @@ import androidx.fragment.app.Fragment
|
||||||
import de.jrpie.android.launcher.R
|
import de.jrpie.android.launcher.R
|
||||||
import de.jrpie.android.launcher.UIObject
|
import de.jrpie.android.launcher.UIObject
|
||||||
import de.jrpie.android.launcher.databinding.SettingsActionsBinding
|
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.list.ListActivity
|
||||||
import de.jrpie.android.launcher.setButtonColor
|
import de.jrpie.android.launcher.setButtonColor
|
||||||
import de.jrpie.android.launcher.vibrantColor
|
import de.jrpie.android.launcher.vibrantColor
|
||||||
|
@ -32,15 +29,10 @@ SettingsFragmentActions : Fragment(), UIObject {
|
||||||
|
|
||||||
private var binding: SettingsActionsBinding? = null
|
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
|
||||||
}
|
}
|
||||||
|
@ -77,6 +69,5 @@ SettingsFragmentActions : Fragment(), UIObject {
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
getPreferences(requireContext()).unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@ import de.jrpie.android.launcher.*
|
||||||
import de.jrpie.android.launcher.list.ListActivity
|
import de.jrpie.android.launcher.list.ListActivity
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.util.Log
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
@ -26,8 +28,13 @@ import java.lang.Exception
|
||||||
*/
|
*/
|
||||||
class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
||||||
|
|
||||||
|
|
||||||
|
private var sharedPreferencesListener =
|
||||||
|
SharedPreferences.OnSharedPreferenceChangeListener { _, _ ->
|
||||||
|
actionViewAdapter?.updateActions()
|
||||||
|
}
|
||||||
private lateinit var binding: SettingsActionsRecyclerBinding
|
private lateinit var binding: SettingsActionsRecyclerBinding
|
||||||
var actionViewAdapter: ActionsRecyclerAdapter? = null
|
private var actionViewAdapter: ActionsRecyclerAdapter? = null
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
|
@ -49,9 +56,16 @@ class SettingsFragmentActionsRecycler : Fragment(), UIObject {
|
||||||
layoutManager = actionViewManager
|
layoutManager = actionViewManager
|
||||||
adapter = actionViewAdapter
|
adapter = actionViewAdapter
|
||||||
}
|
}
|
||||||
|
getPreferences(requireContext()).registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
|
||||||
|
|
||||||
super<UIObject>.onStart()
|
super<UIObject>.onStart()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
getPreferences(requireContext()).unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
|
||||||
|
|
||||||
|
super.onDestroy()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ActionsRecyclerAdapter(val activity: Activity):
|
class ActionsRecyclerAdapter(val activity: Activity):
|
||||||
|
@ -71,6 +85,35 @@ class ActionsRecyclerAdapter(val activity: Activity):
|
||||||
init { itemView.setOnClickListener(this) }
|
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) {
|
override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) {
|
||||||
val gesture = gesturesList[i]
|
val gesture = gesturesList[i]
|
||||||
viewHolder.textView.text = gesture.getLabel(activity)
|
viewHolder.textView.text = gesture.getLabel(activity)
|
||||||
|
@ -78,40 +121,10 @@ class ActionsRecyclerAdapter(val activity: Activity):
|
||||||
if (getSavedTheme(activity) == "dark") transformGrayscale(
|
if (getSavedTheme(activity) == "dark") transformGrayscale(
|
||||||
viewHolder.img
|
viewHolder.img
|
||||||
)
|
)
|
||||||
fun updateViewHolder() {
|
updateViewHolder(gesture, 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) {
|
|
||||||
// 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()
|
|
||||||
viewHolder.img.setOnClickListener{ chooseApp(gesture) }
|
viewHolder.img.setOnClickListener{ chooseApp(gesture) }
|
||||||
viewHolder.chooseButton.setOnClickListener{ chooseApp(gesture) }
|
viewHolder.chooseButton.setOnClickListener{ chooseApp(gesture) }
|
||||||
viewHolder.removeAction.setOnClickListener{
|
viewHolder.removeAction.setOnClickListener{ gesture.removeApp(activity) }
|
||||||
gesture.removeApp(activity)
|
|
||||||
updateViewHolder()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount(): Int { return gesturesList.size }
|
override fun getItemCount(): Int { return gesturesList.size }
|
||||||
|
|
Loading…
Add table
Reference in a new issue