From 62cb2043906d7e67dfb6d625c9555c622de95698 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Fri, 13 May 2022 11:20:30 +0200 Subject: [PATCH] Update: Abstract LaunchDialog --- .../looker/droidify/ui/dialog/LaunchDialog.kt | 36 +++++++++++++++++++ .../looker/droidify/ui/fragments/AppSheetX.kt | 27 -------------- .../com/looker/droidify/utility/Utils.kt | 1 + 3 files changed, 37 insertions(+), 27 deletions(-) create mode 100644 src/main/kotlin/com/looker/droidify/ui/dialog/LaunchDialog.kt diff --git a/src/main/kotlin/com/looker/droidify/ui/dialog/LaunchDialog.kt b/src/main/kotlin/com/looker/droidify/ui/dialog/LaunchDialog.kt new file mode 100644 index 00000000..9be37930 --- /dev/null +++ b/src/main/kotlin/com/looker/droidify/ui/dialog/LaunchDialog.kt @@ -0,0 +1,36 @@ +package com.looker.droidify.ui.dialog + +import android.os.Bundle +import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.looker.droidify.R +import com.looker.droidify.utility.startLauncherActivity + +class LaunchDialog(val packageName: String) : DialogFragment() { + companion object { + private const val EXTRA_NAMES = "names" + private const val EXTRA_LABELS = "labels" + } + + constructor(packageName: String, launcherActivities: List>) : this( + packageName + ) { + arguments = Bundle().apply { + putStringArrayList(EXTRA_NAMES, ArrayList(launcherActivities.map { it.first })) + putStringArrayList(EXTRA_LABELS, ArrayList(launcherActivities.map { it.second })) + } + } + + override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { + val names = requireArguments().getStringArrayList(EXTRA_NAMES)!! + val labels = requireArguments().getStringArrayList(EXTRA_LABELS)!! + return MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.launch) + .setItems(labels.toTypedArray()) { _, position -> + requireContext().startLauncherActivity(packageName, names[position]) + } + .setNegativeButton(R.string.cancel, null) + .create() + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/AppSheetX.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/AppSheetX.kt index 9ef54783..e6bed57c 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/AppSheetX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/AppSheetX.kt @@ -390,31 +390,4 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), AppDetailAdapter.Call } } } - - class LaunchDialog() : DialogFragment() { - companion object { - private const val EXTRA_NAMES = "names" - private const val EXTRA_LABELS = "labels" - } - - constructor(launcherActivities: List>) : this() { - arguments = Bundle().apply { - putStringArrayList(EXTRA_NAMES, ArrayList(launcherActivities.map { it.first })) - putStringArrayList(EXTRA_LABELS, ArrayList(launcherActivities.map { it.second })) - } - } - - override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog { - val names = requireArguments().getStringArrayList(EXTRA_NAMES)!! - val labels = requireArguments().getStringArrayList(EXTRA_LABELS)!! - return MaterialAlertDialogBuilder(requireContext()) - .setTitle(R.string.launch) - .setItems(labels.toTypedArray()) { _, position -> - (parentFragment as AppSheetX) - .startLauncherActivity(names[position]) - } - .setNegativeButton(R.string.cancel, null) - .create() - } - } } diff --git a/src/main/kotlin/com/looker/droidify/utility/Utils.kt b/src/main/kotlin/com/looker/droidify/utility/Utils.kt index cef58b1e..500c244d 100644 --- a/src/main/kotlin/com/looker/droidify/utility/Utils.kt +++ b/src/main/kotlin/com/looker/droidify/utility/Utils.kt @@ -27,6 +27,7 @@ import com.looker.droidify.database.entity.Product import com.looker.droidify.database.entity.Repository import com.looker.droidify.service.Connection import com.looker.droidify.service.DownloadService +import com.looker.droidify.ui.dialog.LaunchDialog import com.looker.droidify.utility.extension.android.Android import com.looker.droidify.utility.extension.android.singleSignature import com.looker.droidify.utility.extension.android.versionCodeCompat