From 21e2a282b80f4af64affd358e5f430ec9fd0449f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 9 Dec 2018 20:08:44 +0100 Subject: [PATCH] do not allow syncing checklist files with the note itself --- .../notes/pro/activities/MainActivity.kt | 17 ++++++++++++++--- .../notes/pro/extensions/String.kt | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/notes/pro/extensions/String.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt index 2e972d2f..c1032e40 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/activities/MainActivity.kt @@ -349,9 +349,20 @@ class MainActivity : SimpleActivity() { private fun openFile() { FilePickerDialog(this, canAddShowHiddenButton = true) { openFile(it, true) { - OpenFileDialog(this, it.path) { - addNewNote(it) - } + Thread { + val fileText = it.readText().trim() + val checklistItems = fileText.parseChecklistItems() + if (checklistItems != null) { + val note = Note(null, it.absolutePath.getFilenameFromPath(), fileText, TYPE_CHECKLIST) + addNewNote(note) + } else { + runOnUiThread { + OpenFileDialog(this, it.path) { + addNewNote(it) + } + } + } + }.start() } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/extensions/String.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/extensions/String.kt new file mode 100644 index 00000000..a7be6176 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/extensions/String.kt @@ -0,0 +1,16 @@ +package com.simplemobiletools.notes.pro.extensions + +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.simplemobiletools.notes.pro.models.ChecklistItem + +fun String.parseChecklistItems(): ArrayList? { + if (startsWith("[{") && endsWith("}]")) { + try { + val checklistItemType = object : TypeToken>() {}.type + return Gson().fromJson>(this, checklistItemType) ?: ArrayList(1) + } catch (e: Exception) { + } + } + return null +}