mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-24 03:42:15 +00:00
UPdate: Abstract Action(s) to SubEntity
This commit is contained in:
parent
c1e3d857f3
commit
ad0dc626e1
@ -1,5 +1,8 @@
|
|||||||
package com.looker.droidify.entity
|
package com.looker.droidify.entity
|
||||||
|
|
||||||
|
import androidx.annotation.DrawableRes
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import com.looker.droidify.R
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.decodeFromString
|
import kotlinx.serialization.decodeFromString
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
@ -58,3 +61,13 @@ class Screenshot(val locale: String, val type: Type, val path: String) {
|
|||||||
fun fromJson(json: String) = Json.decodeFromString<Screenshot>(json)
|
fun fromJson(json: String) = Json.decodeFromString<Screenshot>(json)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum class Action(@StringRes val titleResId: Int, @DrawableRes val iconResId: Int) {
|
||||||
|
INSTALL(R.string.install, R.drawable.ic_download),
|
||||||
|
UPDATE(R.string.update, R.drawable.ic_download),
|
||||||
|
LAUNCH(R.string.launch, R.drawable.ic_launch),
|
||||||
|
DETAILS(R.string.details, R.drawable.ic_tune),
|
||||||
|
UNINSTALL(R.string.uninstall, R.drawable.ic_delete),
|
||||||
|
CANCEL(R.string.cancel, R.drawable.ic_cancel),
|
||||||
|
SHARE(R.string.share, R.drawable.ic_share)
|
||||||
|
}
|
@ -22,8 +22,6 @@ import android.view.MotionEvent
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import androidx.annotation.DrawableRes
|
|
||||||
import androidx.annotation.StringRes
|
|
||||||
import androidx.core.content.res.ResourcesCompat
|
import androidx.core.content.res.ResourcesCompat
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import androidx.core.text.HtmlCompat
|
import androidx.core.text.HtmlCompat
|
||||||
@ -47,6 +45,7 @@ import com.looker.droidify.database.entity.Installed
|
|||||||
import com.looker.droidify.database.entity.Product
|
import com.looker.droidify.database.entity.Product
|
||||||
import com.looker.droidify.database.entity.Release
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
|
import com.looker.droidify.entity.Action
|
||||||
import com.looker.droidify.entity.ProductPreference
|
import com.looker.droidify.entity.ProductPreference
|
||||||
import com.looker.droidify.entity.Screenshot
|
import com.looker.droidify.entity.Screenshot
|
||||||
import com.looker.droidify.network.CoilDownloader
|
import com.looker.droidify.network.CoilDownloader
|
||||||
@ -86,16 +85,6 @@ class AppDetailAdapter(private val callbacks: Callbacks) :
|
|||||||
fun onUriClick(uri: Uri, shouldConfirm: Boolean): Boolean
|
fun onUriClick(uri: Uri, shouldConfirm: Boolean): Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class Action(@StringRes val titleResId: Int, @DrawableRes val iconResId: Int) {
|
|
||||||
INSTALL(R.string.install, R.drawable.ic_download),
|
|
||||||
UPDATE(R.string.update, R.drawable.ic_download),
|
|
||||||
LAUNCH(R.string.launch, R.drawable.ic_launch),
|
|
||||||
DETAILS(R.string.details, R.drawable.ic_tune),
|
|
||||||
UNINSTALL(R.string.uninstall, R.drawable.ic_delete),
|
|
||||||
CANCEL(R.string.cancel, R.drawable.ic_cancel),
|
|
||||||
SHARE(R.string.share, R.drawable.ic_share)
|
|
||||||
}
|
|
||||||
|
|
||||||
sealed class Status {
|
sealed class Status {
|
||||||
object Pending : Status()
|
object Pending : Status()
|
||||||
object Connecting : Status()
|
object Connecting : Status()
|
||||||
@ -955,7 +944,7 @@ class AppDetailAdapter(private val callbacks: Callbacks) :
|
|||||||
this@AppDetailAdapter.secondaryAction?.let(callbacks::onActionClick)
|
this@AppDetailAdapter.secondaryAction?.let(callbacks::onActionClick)
|
||||||
}
|
}
|
||||||
info.setOnClickListener {
|
info.setOnClickListener {
|
||||||
AppDetailAdapter.Action.DETAILS?.let(callbacks::onActionClick)
|
Action.DETAILS?.let(callbacks::onActionClick)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ViewType.SCREENSHOT -> ScreenShotViewHolder(parent.context)
|
ViewType.SCREENSHOT -> ScreenShotViewHolder(parent.context)
|
||||||
|
@ -21,6 +21,7 @@ import com.looker.droidify.database.entity.Product
|
|||||||
import com.looker.droidify.database.entity.Release
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.databinding.SheetAppXBinding
|
import com.looker.droidify.databinding.SheetAppXBinding
|
||||||
|
import com.looker.droidify.entity.Action
|
||||||
import com.looker.droidify.entity.ProductPreference
|
import com.looker.droidify.entity.ProductPreference
|
||||||
import com.looker.droidify.entity.Screenshot
|
import com.looker.droidify.entity.Screenshot
|
||||||
import com.looker.droidify.installer.AppInstaller
|
import com.looker.droidify.installer.AppInstaller
|
||||||
@ -224,9 +225,9 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
|||||||
|
|
||||||
launch(Dispatchers.Main) {
|
launch(Dispatchers.Main) {
|
||||||
val adapterAction =
|
val adapterAction =
|
||||||
if (downloading) AppDetailAdapter.Action.CANCEL else primaryAction?.adapterAction
|
if (downloading) Action.CANCEL else primaryAction
|
||||||
val adapterSecondaryAction =
|
val adapterSecondaryAction =
|
||||||
if (downloading) null else secondaryAction?.adapterAction
|
if (downloading) null else secondaryAction
|
||||||
(binding.recyclerView.adapter as? AppDetailAdapter)
|
(binding.recyclerView.adapter as? AppDetailAdapter)
|
||||||
?.setAction(adapterAction)
|
?.setAction(adapterAction)
|
||||||
(binding.recyclerView.adapter as? AppDetailAdapter)
|
(binding.recyclerView.adapter as? AppDetailAdapter)
|
||||||
@ -258,10 +259,10 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActionClick(action: AppDetailAdapter.Action) {
|
override fun onActionClick(action: Action) {
|
||||||
when (action) {
|
when (action) {
|
||||||
AppDetailAdapter.Action.INSTALL,
|
Action.INSTALL,
|
||||||
AppDetailAdapter.Action.UPDATE,
|
Action.UPDATE,
|
||||||
-> {
|
-> {
|
||||||
val installedItem = installed
|
val installedItem = installed
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
@ -274,7 +275,6 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
|||||||
}
|
}
|
||||||
Unit
|
Unit
|
||||||
}
|
}
|
||||||
AppDetailAdapter.Action.LAUNCH -> {
|
|
||||||
val launcherActivities = installed?.launcherActivities.orEmpty()
|
val launcherActivities = installed?.launcherActivities.orEmpty()
|
||||||
if (launcherActivities.size >= 2) {
|
if (launcherActivities.size >= 2) {
|
||||||
LaunchDialog(launcherActivities).show(
|
LaunchDialog(launcherActivities).show(
|
||||||
@ -284,27 +284,28 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
|||||||
} else {
|
} else {
|
||||||
launcherActivities.firstOrNull()?.let { startLauncherActivity(it.first) }
|
launcherActivities.firstOrNull()?.let { startLauncherActivity(it.first) }
|
||||||
}
|
}
|
||||||
|
Action.LAUNCH -> {
|
||||||
Unit
|
Unit
|
||||||
}
|
}
|
||||||
AppDetailAdapter.Action.DETAILS -> {
|
Action.DETAILS -> {
|
||||||
startActivity(
|
startActivity(
|
||||||
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
|
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
|
||||||
.setData(Uri.parse("package:$packageName"))
|
.setData(Uri.parse("package:$packageName"))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
AppDetailAdapter.Action.UNINSTALL -> {
|
Action.UNINSTALL -> {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
AppInstaller.getInstance(context)?.defaultInstaller?.uninstall(packageName)
|
AppInstaller.getInstance(context)?.defaultInstaller?.uninstall(packageName)
|
||||||
}
|
}
|
||||||
Unit
|
Unit
|
||||||
}
|
}
|
||||||
AppDetailAdapter.Action.CANCEL -> {
|
Action.CANCEL -> {
|
||||||
val binder = downloadConnection.binder
|
val binder = downloadConnection.binder
|
||||||
if (downloading && binder != null) {
|
if (downloading && binder != null) {
|
||||||
binder.cancel(packageName)
|
binder.cancel(packageName)
|
||||||
} else Unit
|
} else Unit
|
||||||
}
|
}
|
||||||
AppDetailAdapter.Action.SHARE -> {
|
Action.SHARE -> {
|
||||||
shareIntent(packageName, productRepos[0].first.label)
|
shareIntent(packageName, productRepos[0].first.label)
|
||||||
}
|
}
|
||||||
}::class
|
}::class
|
||||||
@ -442,16 +443,4 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
|||||||
.create()
|
.create()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum class Action(
|
|
||||||
val id: Int,
|
|
||||||
val adapterAction: AppDetailAdapter.Action,
|
|
||||||
) {
|
|
||||||
INSTALL(1, AppDetailAdapter.Action.INSTALL),
|
|
||||||
UPDATE(2, AppDetailAdapter.Action.UPDATE),
|
|
||||||
LAUNCH(3, AppDetailAdapter.Action.LAUNCH),
|
|
||||||
DETAILS(4, AppDetailAdapter.Action.DETAILS),
|
|
||||||
UNINSTALL(5, AppDetailAdapter.Action.UNINSTALL),
|
|
||||||
SHARE(6, AppDetailAdapter.Action.SHARE)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user