improved AppListAdapter
This commit is contained in:
parent
537e76499a
commit
8c4b8332e8
|
@ -4,7 +4,6 @@ import android.view.LayoutInflater
|
|||
import android.view.ViewGroup
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.florent37.viewtooltip.ViewTooltip
|
||||
|
@ -17,16 +16,15 @@ import com.vanced.manager.ui.viewmodels.HomeViewModel
|
|||
import com.vanced.manager.utils.*
|
||||
|
||||
class AppListAdapter(
|
||||
private val context: FragmentActivity,
|
||||
private val activity: FragmentActivity,
|
||||
private val viewModel: HomeViewModel,
|
||||
private val lifecycleOwner: LifecycleOwner,
|
||||
private val tooltip: ViewTooltip
|
||||
private val tooltip: ViewTooltip?
|
||||
) : RecyclerView.Adapter<AppListAdapter.ListViewHolder>() {
|
||||
|
||||
private val apps = mutableListOf<String>()
|
||||
private val dataModels = mutableListOf<DataModel?>()
|
||||
private val rootDataModels = mutableListOf<RootDataModel?>()
|
||||
private val prefs = getDefaultSharedPreferences(context)
|
||||
private val prefs = getDefaultSharedPreferences(activity)
|
||||
|
||||
private val isRoot = prefs.managerVariant == "root"
|
||||
|
||||
|
@ -36,11 +34,11 @@ class AppListAdapter(
|
|||
val dataModel = if (isRoot) rootDataModels[position] else dataModels[position]
|
||||
with(binding) {
|
||||
appName.text = dataModel?.appName
|
||||
dataModel?.buttonTxt?.observe(lifecycleOwner) {
|
||||
dataModel?.buttonTxt?.observe(activity) {
|
||||
appInstallButton.text = it
|
||||
}
|
||||
appInstallButton.setOnClickListener {
|
||||
if (vanced.value != null) {
|
||||
if (dataModel?.versionName?.value != activity.getString(R.string.unavailable)) {
|
||||
viewModel.openInstallDialog(it, apps[position])
|
||||
} else {
|
||||
return@setOnClickListener
|
||||
|
@ -52,14 +50,14 @@ class AppListAdapter(
|
|||
appLaunch.setOnClickListener {
|
||||
viewModel.launchApp(apps[position], isRoot)
|
||||
}
|
||||
dataModel?.isAppInstalled?.observe(lifecycleOwner) {
|
||||
dataModel?.isAppInstalled?.observe(activity) {
|
||||
appUninstall.isVisible = it
|
||||
appLaunch.isVisible = it
|
||||
}
|
||||
dataModel?.versionName?.observe(lifecycleOwner) {
|
||||
dataModel?.versionName?.observe(activity) {
|
||||
appRemoteVersion.text = it
|
||||
}
|
||||
dataModel?.installedVersionName?.observe(lifecycleOwner) {
|
||||
dataModel?.installedVersionName?.observe(activity) {
|
||||
appInstalledVersion.text = it
|
||||
}
|
||||
}
|
||||
|
@ -67,7 +65,7 @@ class AppListAdapter(
|
|||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListViewHolder {
|
||||
val view = ViewAppBinding.inflate(LayoutInflater.from(context), parent, false)
|
||||
val view = ViewAppBinding.inflate(LayoutInflater.from(activity), parent, false)
|
||||
return ListViewHolder(view)
|
||||
}
|
||||
|
||||
|
@ -75,12 +73,12 @@ class AppListAdapter(
|
|||
holder.bind(position)
|
||||
val dataModel = if (isRoot) rootDataModels[position] else dataModels[position]
|
||||
holder.appCard.setOnClickListener {
|
||||
tooltip.close()
|
||||
tooltip?.close()
|
||||
AppInfoDialog.newInstance(
|
||||
appName = apps[position],
|
||||
appIcon = dataModel?.appIcon,
|
||||
changelog = dataModel?.changelog?.value
|
||||
).show(context.supportFragmentManager, "info")
|
||||
).show(activity.supportFragmentManager, "info")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,7 +92,7 @@ class AppListAdapter(
|
|||
} else {
|
||||
dataModels.add(viewModel.vancedModel.value)
|
||||
}
|
||||
apps.add(context.getString(R.string.vanced))
|
||||
apps.add(activity.getString(R.string.vanced))
|
||||
}
|
||||
|
||||
if (prefs.enableMusic) {
|
||||
|
@ -103,12 +101,12 @@ class AppListAdapter(
|
|||
} else {
|
||||
dataModels.add(viewModel.musicModel.value)
|
||||
}
|
||||
apps.add(context.getString(R.string.music))
|
||||
apps.add(activity.getString(R.string.music))
|
||||
}
|
||||
|
||||
if (!isRoot) {
|
||||
dataModels.add(viewModel.microgModel.value)
|
||||
apps.add(context.getString(R.string.microg))
|
||||
apps.add(activity.getString(R.string.microg))
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ import com.vanced.manager.ui.viewmodels.HomeViewModel
|
|||
import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
|
||||
import com.vanced.manager.utils.isFetching
|
||||
|
||||
open class HomeFragment : BindingFragment<FragmentHomeBinding>() {
|
||||
class HomeFragment : BindingFragment<FragmentHomeBinding>() {
|
||||
|
||||
companion object {
|
||||
const val INSTALL_FAILED = "INSTALL_FAILED"
|
||||
|
@ -43,7 +43,7 @@ open class HomeFragment : BindingFragment<FragmentHomeBinding>() {
|
|||
|
||||
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
|
||||
private val prefs by lazy { PreferenceManager.getDefaultSharedPreferences(requireActivity()) }
|
||||
private lateinit var tooltip: ViewTooltip
|
||||
private var tooltip: ViewTooltip? = null
|
||||
|
||||
override fun binding(
|
||||
inflater: LayoutInflater,
|
||||
|
@ -61,25 +61,26 @@ open class HomeFragment : BindingFragment<FragmentHomeBinding>() {
|
|||
with (binding) {
|
||||
homeRefresh.setOnRefreshListener { viewModel.fetchData() }
|
||||
isFetching.observe(viewLifecycleOwner) { homeRefresh.isRefreshing = it }
|
||||
tooltip = ViewTooltip
|
||||
.on(recyclerAppList)
|
||||
.position(ViewTooltip.Position.TOP)
|
||||
.autoHide(false, 0)
|
||||
.color(ResourcesCompat.getColor(requireActivity().resources, R.color.Twitter, null))
|
||||
.withShadow(false)
|
||||
.corner(25)
|
||||
.onHide {
|
||||
prefs.edit { putBoolean("show_changelog_tooltip", false) }
|
||||
}
|
||||
.text(requireActivity().getString(R.string.app_changelog_tooltip))
|
||||
|
||||
if (prefs.getBoolean("show_changelog_tooltip", true)) {
|
||||
tooltip.show()
|
||||
tooltip = ViewTooltip
|
||||
.on(recyclerAppList)
|
||||
.position(ViewTooltip.Position.TOP)
|
||||
.autoHide(false, 0)
|
||||
.color(ResourcesCompat.getColor(requireActivity().resources, R.color.Twitter, null))
|
||||
.withShadow(false)
|
||||
.corner(25)
|
||||
.onHide {
|
||||
prefs.edit { putBoolean("show_changelog_tooltip", false) }
|
||||
}
|
||||
.text(requireActivity().getString(R.string.app_changelog_tooltip))
|
||||
|
||||
tooltip?.show()
|
||||
}
|
||||
|
||||
recyclerAppList.apply {
|
||||
layoutManager = LinearLayoutManager(requireActivity())
|
||||
adapter = AppListAdapter(requireActivity(), viewModel, viewLifecycleOwner, tooltip)
|
||||
adapter = AppListAdapter(requireActivity(), viewModel, tooltip)
|
||||
setHasFixedSize(true)
|
||||
}
|
||||
|
||||
|
@ -109,7 +110,7 @@ open class HomeFragment : BindingFragment<FragmentHomeBinding>() {
|
|||
override fun onPause() {
|
||||
super.onPause()
|
||||
localBroadcastManager.unregisterReceiver(broadcastReceiver)
|
||||
tooltip.close()
|
||||
tooltip?.close()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
|
Loading…
Reference in New Issue