0
0
mirror of https://github.com/markusfisch/BinaryEye.git synced 2024-09-20 12:02:17 +02:00

Add an action to remove a scan from result view

So there's no need for a long tap to remove individual scans.
This commit is contained in:
Markus Fisch 2020-06-23 20:41:21 +02:00
parent 860e867ad4
commit 7116aa7278
4 changed files with 34 additions and 13 deletions

View File

@ -34,8 +34,6 @@ import de.markusfisch.android.binaryeye.widget.DetectorView
import de.markusfisch.android.binaryeye.widget.toast import de.markusfisch.android.binaryeye.widget.toast
import de.markusfisch.android.binaryeye.zxing.Zxing import de.markusfisch.android.binaryeye.zxing.Zxing
import de.markusfisch.android.cameraview.widget.CameraView import de.markusfisch.android.cameraview.widget.CameraView
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
import kotlin.math.roundToInt import kotlin.math.roundToInt
@ -679,9 +677,7 @@ fun showResult(
} }
val scan = Scan(result) val scan = Scan(result)
if (prefs.useHistory) { if (prefs.useHistory) {
GlobalScope.launch { scan.id = db.insertScan(scan)
db.insertScan(scan)
}
} }
if (!bulkMode) { if (!bulkMode) {
activity.startActivity( activity.startActivity(

View File

@ -19,7 +19,7 @@ data class Scan(
val suggestedPrice: String?, val suggestedPrice: String?,
val upcEanExtension: String?, val upcEanExtension: String?,
val timestamp: String = getDateTime(), val timestamp: String = getDateTime(),
val id: Long = 0L var id: Long = 0L
) : Parcelable { ) : Parcelable {
constructor(result: Result) : this( constructor(result: Result) : this(
result.text, result.text,

View File

@ -31,13 +31,14 @@ class DecodeFragment : Fragment() {
private lateinit var format: String private lateinit var format: String
private lateinit var fab: FloatingActionButton private lateinit var fab: FloatingActionButton
private var action = ActionRegistry.DEFAULT_ACTION private val parentJob = Job()
private var isBinary = false private val scope: CoroutineScope = CoroutineScope(Dispatchers.Main + parentJob)
private val content: String private val content: String
get() = contentView.text.toString() get() = contentView.text.toString()
private val parentJob = Job() private var action = ActionRegistry.DEFAULT_ACTION
private val scope: CoroutineScope = CoroutineScope(Dispatchers.Main + parentJob) private var isBinary = false
private var id = 0L
override fun onCreate(state: Bundle?) { override fun onCreate(state: Bundle?) {
super.onCreate(state) super.onCreate(state)
@ -59,6 +60,7 @@ class DecodeFragment : Fragment() {
val scan = arguments?.getParcelable(SCAN) as Scan? val scan = arguments?.getParcelable(SCAN) as Scan?
?: throw IllegalArgumentException("DecodeFragment needs a Scan") ?: throw IllegalArgumentException("DecodeFragment needs a Scan")
id = scan.id
val inputContent = scan.content val inputContent = scan.content
isBinary = hasNonPrintableCharacters( isBinary = hasNonPrintableCharacters(
@ -196,6 +198,9 @@ class DecodeFragment : Fragment() {
menu.findItem(R.id.copy_to_clipboard).isVisible = false menu.findItem(R.id.copy_to_clipboard).isVisible = false
menu.findItem(R.id.create).isVisible = false menu.findItem(R.id.create).isVisible = false
} }
if (id > 0L) {
menu.findItem(R.id.remove).isVisible = true
}
} }
override fun onOptionsItemSelected(item: MenuItem): Boolean { override fun onOptionsItemSelected(item: MenuItem): Boolean {
@ -215,6 +220,11 @@ class DecodeFragment : Fragment() {
) )
true true
} }
R.id.remove -> {
db.removeScan(id)
backOrFinish()
true
}
else -> super.onOptionsItemSelected(item) else -> super.onOptionsItemSelected(item)
} }
} }
@ -226,6 +236,15 @@ class DecodeFragment : Fragment() {
} }
} }
private fun backOrFinish() {
val fm = fragmentManager
if (fm != null && fm.backStackEntryCount > 0) {
fm.popBackStack()
} else {
activity?.finish()
}
}
private fun executeAction(content: ByteArray) { private fun executeAction(content: ByteArray) {
val ac = activity ?: return val ac = activity ?: return
if (content.isNotEmpty()) { if (content.isNotEmpty()) {

View File

@ -1,19 +1,25 @@
<menu <menu
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:material="http://schemas.android.com/apk/res-auto"> xmlns:material="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/remove"
android:title="@string/remove_scan"
android:icon="@drawable/ic_action_remove"
android:visible="false"
material:showAsAction="always"/>
<item <item
android:id="@+id/copy_to_clipboard" android:id="@+id/copy_to_clipboard"
android:title="@string/copy_to_clipboard" android:title="@string/copy_to_clipboard"
android:icon="@drawable/ic_action_copy" android:icon="@drawable/ic_action_copy"
material:showAsAction="ifRoom"/> material:showAsAction="always"/>
<item <item
android:id="@+id/share" android:id="@+id/share"
android:title="@string/share" android:title="@string/share"
android:icon="@drawable/ic_action_share" android:icon="@drawable/ic_action_share"
material:showAsAction="ifRoom"/> material:showAsAction="always"/>
<item <item
android:id="@+id/create" android:id="@+id/create"
android:title="@string/compose_barcode" android:title="@string/compose_barcode"
android:icon="@drawable/ic_action_create" android:icon="@drawable/ic_action_create"
material:showAsAction="ifRoom"/> material:showAsAction="always"/>
</menu> </menu>