mirror of
https://github.com/jrpie/Launcher.git
synced 2025-04-08 05:14:38 +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
app/src/main/java/de/jrpie/android/launcher
list/apps
settings/actions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 }
|
||||
|
|
Loading…
Add table
Reference in a new issue