mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +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
|
||||
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.StringRes
|
||||
import com.looker.droidify.R
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
@ -57,4 +60,14 @@ class Screenshot(val locale: String, val type: Type, val path: String) {
|
||||
companion object {
|
||||
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.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.core.net.toUri
|
||||
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.Release
|
||||
import com.looker.droidify.database.entity.Repository
|
||||
import com.looker.droidify.entity.Action
|
||||
import com.looker.droidify.entity.ProductPreference
|
||||
import com.looker.droidify.entity.Screenshot
|
||||
import com.looker.droidify.network.CoilDownloader
|
||||
@ -86,16 +85,6 @@ class AppDetailAdapter(private val callbacks: Callbacks) :
|
||||
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 {
|
||||
object Pending : Status()
|
||||
object Connecting : Status()
|
||||
@ -955,7 +944,7 @@ class AppDetailAdapter(private val callbacks: Callbacks) :
|
||||
this@AppDetailAdapter.secondaryAction?.let(callbacks::onActionClick)
|
||||
}
|
||||
info.setOnClickListener {
|
||||
AppDetailAdapter.Action.DETAILS?.let(callbacks::onActionClick)
|
||||
Action.DETAILS?.let(callbacks::onActionClick)
|
||||
}
|
||||
}
|
||||
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.Repository
|
||||
import com.looker.droidify.databinding.SheetAppXBinding
|
||||
import com.looker.droidify.entity.Action
|
||||
import com.looker.droidify.entity.ProductPreference
|
||||
import com.looker.droidify.entity.Screenshot
|
||||
import com.looker.droidify.installer.AppInstaller
|
||||
@ -224,9 +225,9 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
||||
|
||||
launch(Dispatchers.Main) {
|
||||
val adapterAction =
|
||||
if (downloading) AppDetailAdapter.Action.CANCEL else primaryAction?.adapterAction
|
||||
if (downloading) Action.CANCEL else primaryAction
|
||||
val adapterSecondaryAction =
|
||||
if (downloading) null else secondaryAction?.adapterAction
|
||||
if (downloading) null else secondaryAction
|
||||
(binding.recyclerView.adapter as? AppDetailAdapter)
|
||||
?.setAction(adapterAction)
|
||||
(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) {
|
||||
AppDetailAdapter.Action.INSTALL,
|
||||
AppDetailAdapter.Action.UPDATE,
|
||||
Action.INSTALL,
|
||||
Action.UPDATE,
|
||||
-> {
|
||||
val installedItem = installed
|
||||
lifecycleScope.launch {
|
||||
@ -274,7 +275,6 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
||||
}
|
||||
Unit
|
||||
}
|
||||
AppDetailAdapter.Action.LAUNCH -> {
|
||||
val launcherActivities = installed?.launcherActivities.orEmpty()
|
||||
if (launcherActivities.size >= 2) {
|
||||
LaunchDialog(launcherActivities).show(
|
||||
@ -284,27 +284,28 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
||||
} else {
|
||||
launcherActivities.firstOrNull()?.let { startLauncherActivity(it.first) }
|
||||
}
|
||||
Action.LAUNCH -> {
|
||||
Unit
|
||||
}
|
||||
AppDetailAdapter.Action.DETAILS -> {
|
||||
Action.DETAILS -> {
|
||||
startActivity(
|
||||
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
|
||||
.setData(Uri.parse("package:$packageName"))
|
||||
)
|
||||
}
|
||||
AppDetailAdapter.Action.UNINSTALL -> {
|
||||
Action.UNINSTALL -> {
|
||||
lifecycleScope.launch {
|
||||
AppInstaller.getInstance(context)?.defaultInstaller?.uninstall(packageName)
|
||||
}
|
||||
Unit
|
||||
}
|
||||
AppDetailAdapter.Action.CANCEL -> {
|
||||
Action.CANCEL -> {
|
||||
val binder = downloadConnection.binder
|
||||
if (downloading && binder != null) {
|
||||
binder.cancel(packageName)
|
||||
} else Unit
|
||||
}
|
||||
AppDetailAdapter.Action.SHARE -> {
|
||||
Action.SHARE -> {
|
||||
shareIntent(packageName, productRepos[0].first.label)
|
||||
}
|
||||
}::class
|
||||
@ -442,16 +443,4 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call
|
||||
.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