Bring the user to app system settings when long tapping apps

This commit is contained in:
Torsten Grote 2020-09-18 16:45:25 -03:00 committed by Chirayu Desai
parent 9f85a66235
commit db0721cd8d
2 changed files with 13 additions and 5 deletions

View file

@ -1,12 +1,16 @@
package com.stevesoltys.seedvault.settings
import android.content.Intent
import android.graphics.drawable.Drawable
import android.net.Uri
import android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS
import android.view.LayoutInflater
import android.view.View
import android.view.View.GONE
import android.view.View.INVISIBLE
import android.view.View.VISIBLE
import android.view.ViewGroup
import androidx.core.content.ContextCompat.startActivity
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.DiffUtil.DiffResult
import androidx.recyclerview.widget.RecyclerView.Adapter
@ -54,8 +58,8 @@ internal class AppStatusAdapter(private val toggleListener: AppStatusToggleListe
fun bind(item: AppStatus) {
appName.text = item.name
appIcon.setImageDrawable(item.icon)
if (editMode) {
v.background = clickableBackground
if (editMode) {
v.setOnClickListener {
switchView.toggle()
item.enabled = switchView.isChecked
@ -67,8 +71,14 @@ internal class AppStatusAdapter(private val toggleListener: AppStatusToggleListe
switchView.visibility = VISIBLE
switchView.isChecked = item.enabled
} else {
v.background = null
v.setOnClickListener(null)
v.setOnLongClickListener {
val intent = Intent(ACTION_APPLICATION_DETAILS_SETTINGS).apply {
data = Uri.fromParts("package", item.packageName, null)
}
startActivity(context, intent, null)
true
}
setStatus(item.status)
if (item.status == SUCCEEDED) {
appInfo.text = item.time.toRelativeTime(context)

View file

@ -23,8 +23,7 @@ import com.stevesoltys.seedvault.restore.AppRestoreStatus.IN_PROGRESS
import com.stevesoltys.seedvault.restore.AppRestoreStatus.NOT_YET_BACKED_UP
import com.stevesoltys.seedvault.restore.AppRestoreStatus.SUCCEEDED
internal open class AppViewHolder(protected val v: View) : RecyclerView.ViewHolder(v) {
internal abstract class AppViewHolder(protected val v: View) : RecyclerView.ViewHolder(v) {
protected val context: Context = v.context
protected val pm: PackageManager = context.packageManager
@ -43,7 +42,6 @@ internal open class AppViewHolder(protected val v: View) : RecyclerView.ViewHold
}
protected fun setStatus(status: AppRestoreStatus) {
v.background = null
if (status == IN_PROGRESS) {
appInfo.visibility = GONE
appStatus.visibility = INVISIBLE