Add a setting to not save consecutive double scans

This commit is contained in:
Markus Fisch
2020-03-14 16:11:35 +01:00
parent b929df4848
commit c03abf1148
15 changed files with 80 additions and 2 deletions
@@ -7,6 +7,7 @@ import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.text.format.DateFormat
import de.markusfisch.android.binaryeye.app.hasNonPrintableCharacters
import de.markusfisch.android.binaryeye.app.prefs
class Database {
private lateinit var db: SQLiteDatabase
@@ -59,16 +60,57 @@ class Database {
timestamp
).toString()
)
if (hasNonPrintableCharacters(content)) {
val isRaw = hasNonPrintableCharacters(content)
if (isRaw) {
cv.put(SCANS_CONTENT, "")
cv.put(SCANS_RAW, if (raw != null) raw else content.toByteArray())
cv.put(SCANS_RAW, raw ?: content.toByteArray())
} else {
cv.put(SCANS_CONTENT, content)
}
cv.put(SCANS_FORMAT, format)
if (prefs.ignoreConsecutiveDuplicates) {
val id = getLastScan(
cv.get(SCANS_CONTENT) as String,
if (isRaw) cv.get(SCANS_RAW) as ByteArray else null,
format
)
if (id > 0L) {
return id
}
}
return db.insert(SCANS, null, cv)
}
private fun getLastScan(
content: String,
raw: ByteArray?,
format: String
): Long {
return db.rawQuery(
"""SELECT
$SCANS_ID,
$SCANS_CONTENT,
$SCANS_RAW,
$SCANS_FORMAT
FROM $SCANS
ORDER BY $SCANS_ID DESC
LIMIT 1
""", null
)?.use {
if (it.count > 0 &&
it.moveToFirst() &&
it.getString(it.getColumnIndex(SCANS_CONTENT)) == content &&
(raw == null || it.getBlob(it.getColumnIndex(SCANS_RAW))
?.contentEquals(raw) == true) &&
it.getString(it.getColumnIndex(SCANS_FORMAT)) == format
) {
it.getLong(it.getColumnIndex(SCANS_ID))
} else {
0L
}
} ?: 0L
}
fun removeScan(id: Long) {
db.delete(SCANS, "$SCANS_ID = ?", arrayOf("$id"))
}
@@ -15,6 +15,7 @@ import de.markusfisch.android.binaryeye.view.setPadding
class PreferencesFragment : Fragment() {
private lateinit var openImmediatelySwitch: SwitchCompat
private lateinit var useHistorySwitch: SwitchCompat
private lateinit var ignoreConsecutiveDuplicatesSwitch: SwitchCompat
private lateinit var openWithUrlInput: EditText
override fun onCreateView(
@@ -40,6 +41,13 @@ class PreferencesFragment : Fragment() {
useHistorySwitch.toggle()
}
ignoreConsecutiveDuplicatesSwitch = view.findViewById(
R.id.ignore_consecutive_duplicates
)
if (prefs.ignoreConsecutiveDuplicates) {
ignoreConsecutiveDuplicatesSwitch.toggle()
}
openWithUrlInput = view.findViewById(R.id.open_with_url)
openWithUrlInput.setText(prefs.openWithUrl)
@@ -54,6 +62,7 @@ class PreferencesFragment : Fragment() {
super.onPause()
prefs.openImmediately = openImmediatelySwitch.isChecked
prefs.useHistory = useHistorySwitch.isChecked
prefs.ignoreConsecutiveDuplicates = ignoreConsecutiveDuplicatesSwitch.isChecked
prefs.openWithUrl = openWithUrlInput.text.toString()
}
}
@@ -17,6 +17,11 @@ class Preferences {
setBoolean(USE_HISTORY, value)
field = value
}
var ignoreConsecutiveDuplicates = false
set(value) {
setBoolean(IGNORE_CONSECUTIVE_DUPLICATES, value)
field = value
}
var openWithUrl: String = ""
set(value) {
setString(OPEN_WITH_URL, value)
@@ -39,6 +44,10 @@ class Preferences {
openImmediately
)
useHistory = preferences.getBoolean(USE_HISTORY, useHistory)
ignoreConsecutiveDuplicates = preferences.getBoolean(
IGNORE_CONSECUTIVE_DUPLICATES,
ignoreConsecutiveDuplicates
)
indexOfLastSelectedFormat = preferences.getInt(
INDEX_OF_LAST_SELECTED_FORMAT,
indexOfLastSelectedFormat
@@ -69,6 +78,7 @@ class Preferences {
companion object {
const val OPEN_IMMEDIATELY = "open_immediately"
const val USE_HISTORY = "use_history"
const val IGNORE_CONSECUTIVE_DUPLICATES = "ignore_consecutive_duplicates"
const val OPEN_WITH_URL = "open_with_url"
const val INDEX_OF_LAST_SELECTED_FORMAT = "index_of_last_selected_format"
}
@@ -22,6 +22,12 @@
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:text="@string/use_history"/>
<android.support.v7.widget.SwitchCompat
android:id="@+id/ignore_consecutive_duplicates"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:text="@string/ignore_consecutive_duplicates"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
+1
View File
@@ -31,6 +31,7 @@
<string name="preferences">Einstellungen</string>
<string name="open_immediately">Inspektion überspringen und Inhalte sofort öffnen</string>
<string name="use_history">Codes speichern</string>
<string name="ignore_consecutive_duplicates">Keine aufeinanderfolgenden Duplikate speichern</string>
<string name="open_with_url">URL zum Öffnen unbekannter Daten</string>
<string name="really_remove_scan">Code wirklich entfernen?</string>
<string name="really_remove_all_scans">Alle Codes entfernen?</string>
+1
View File
@@ -31,6 +31,7 @@
<string name="preferences">Preferences</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="use_history">Sauvegarder l\'histoire des scans</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">Open unknown data with URL</string>
<string name="really_remove_scan">Supprimer le scan ?</string>
<string name="really_remove_all_scans">Supprimer tous les scans ?</string>
+1
View File
@@ -31,6 +31,7 @@
<string name="preferences">Beállítások</string>
<string name="open_immediately">Vizsgálat kihagyása és a tartalom azonnali megnyitása</string>
<string name="use_history">Beolvasási előzmények mentése</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">Ismeretlen adat megnyitása URL-lel</string>
<string name="really_remove_scan">Valóban eltávolítja a beolvasást?</string>
<string name="really_remove_all_scans">Valóban eltávolítja az összes beolvasását?</string>
+1
View File
@@ -31,6 +31,7 @@
<string name="preferences">Preferensi</string>
<string name="open_immediately">Lewati inspeksi dan segera buka konten</string>
<string name="use_history">Simpan riwayat pemindaian</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">Buka data tak dikenal dengan URL</string>
<string name="really_remove_scan">Yakin menghapus pemindaian?</string>
<string name="really_remove_all_scans">Yakin menghapus semua pemindaian?</string>
+1
View File
@@ -31,6 +31,7 @@
<string name="preferences">Preferenze</string>
<string name="open_immediately">Salta l\'analisi e apri i contenuti direttamente</string>
<string name="use_history">Salva cronologia delle scansioni</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">Apri dati sconosciuti con URL</string>
<string name="really_remove_scan">Vuoi veramente rimuovere la scansione?</string>
<string name="really_remove_all_scans">Vuoi veramente rimuovere tutte le scansioni?</string>
+1
View File
@@ -31,6 +31,7 @@
<string name="preferences">Voorkeuren</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="use_history">Scan-geschiedenis behouden</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="really_remove_scan">Scan echt verwijderen?</string>
<string name="really_remove_all_scans">Echt alle scans verwijderen?</string>
<string name="clear_history">Geschiedenis wissen</string>
@@ -31,6 +31,7 @@
<string name="preferences">Preferências</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="use_history">Salvar histórico de escaneamento</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">Abrir dados desconhecidos com URL</string>
<string name="really_remove_scan">Realmente deseja remover o escaneamento?</string>
<string name="really_remove_all_scans">Realmente deseja remover todos escaneamentos?</string>
@@ -27,6 +27,7 @@
<string name="preferences">Настройки</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="use_history">Сохранить историю сканирования</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">Открыть неизвестные данные с помощью URL</string>
<string name="really_remove_scan">Действительно удалить сканирование?</string>
<string name="really_remove_all_scans">Действительно удалить всю историю сканирования?</string>
@@ -31,6 +31,7 @@
<string name="preferences">首选项</string>
<string name="open_immediately">跳过内容展示并立即打开</string>
<string name="use_history">保存扫描历史</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">使用URL打开未知数据</string>
<string name="really_remove_scan">确定删除记录?</string>
<string name="really_remove_all_scans">确定删除全部记录?</string>
+1
View File
@@ -30,6 +30,7 @@
<string name="history">歷史</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="use_history">儲存掃描歷史</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="really_remove_scan">真的要移除掃描記錄?</string>
<string name="really_remove_all_scans">真的要移除所有掃描記錄?</string>
<string name="clear_history">清除記錄</string>
+1
View File
@@ -31,6 +31,7 @@
<string name="preferences">Preferences</string>
<string name="open_immediately">Skip inspection and open contents immediately</string>
<string name="use_history">Save scan history</string>
<string name="ignore_consecutive_duplicates">Do not save consecutive duplicates</string>
<string name="open_with_url">Open unknown data with URL</string>
<string name="really_remove_scan">Really remove scan?</string>
<string name="really_remove_all_scans">Really remove all scans?</string>