diff --git a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt index d8f4efc..cae0f34 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt @@ -13,6 +13,7 @@ import android.view.ViewGroup import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.EditText +import android.widget.LinearLayout import android.widget.NumberPicker import android.widget.PopupWindow import android.widget.Spinner @@ -57,6 +58,7 @@ class MainActivity : AppCompatActivity() { lateinit var buttonsContainer: ViewGroup lateinit var recyclerView: RecyclerView lateinit var handler: Handler + var signature = "" var savingEvent = false val updateListRunnable: Runnable = Runnable { if (logbook != null && !pauseLogbookUpdate) @@ -168,6 +170,8 @@ class MainActivity : AppCompatActivity() { logbookRepo = FileLogbookRepository() } + signature = settingsRepository.loadSignature() + val noBreastfeeding = settingsRepository.loadNoBreastfeeding() findViewById(R.id.layout_nipples).visibility = when (noBreastfeeding) { true -> View.GONE @@ -386,6 +390,14 @@ class MainActivity : AppCompatActivity() { pauseLogbookUpdate = false }) + // show optional signature + dialogView.findViewById(R.id.dialog_event_detail_type_signature).text = event.signature + dialogView.findViewById(R.id.dialog_event_signature_layout).visibility = if (event.signature.isNotEmpty()) { + View.VISIBLE + } else { + View.GONE + } + // create next/previous links to events of the same type val previousTextView = dialogView.findViewById(R.id.dialog_event_previous) @@ -635,6 +647,8 @@ class MainActivity : AppCompatActivity() { fun logEvent(event: LunaEvent) { savingEvent(true) + event.signature = signature + setLoading(true) logbook?.logs?.add(0, event) recyclerView.adapter?.notifyItemInserted(0) diff --git a/app/src/main/java/it/danieleverducci/lunatracker/SettingsActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/SettingsActivity.kt index 7d03b4e..8006986 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/SettingsActivity.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/SettingsActivity.kt @@ -2,6 +2,7 @@ package it.danieleverducci.lunatracker import android.os.Bundle import android.view.View +import android.widget.EditText import android.widget.RadioButton import android.widget.TextView import android.widget.Toast @@ -24,6 +25,7 @@ open class SettingsActivity : AppCompatActivity() { protected lateinit var textViewWebDAVPass: TextView protected lateinit var progressIndicator: LinearProgressIndicator protected lateinit var switchNoBreastfeeding: SwitchMaterial + protected lateinit var textViewSignature: EditText override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -36,6 +38,7 @@ open class SettingsActivity : AppCompatActivity() { textViewWebDAVPass = findViewById(R.id.settings_data_webdav_pass) progressIndicator = findViewById(R.id.progress_indicator) switchNoBreastfeeding = findViewById(R.id.switch_no_breastfeeding) + textViewSignature = findViewById(R.id.settings_signature) findViewById(R.id.settings_save).setOnClickListener({ validateAndSave() @@ -52,12 +55,14 @@ open class SettingsActivity : AppCompatActivity() { val dataRepo = settingsRepository.loadDataRepository() val webDavCredentials = settingsRepository.loadWebdavCredentials() val noBreastfeeding = settingsRepository.loadNoBreastfeeding() + val signature = settingsRepository.loadSignature() when (dataRepo) { LocalSettingsRepository.DATA_REPO.LOCAL_FILE -> radioDataLocal.isChecked = true LocalSettingsRepository.DATA_REPO.WEBDAV -> radioDataWebDAV.isChecked = true } + textViewSignature.setText(signature) switchNoBreastfeeding.isChecked = noBreastfeeding if (webDavCredentials != null) { @@ -156,6 +161,7 @@ open class SettingsActivity : AppCompatActivity() { else LocalSettingsRepository.DATA_REPO.LOCAL_FILE ) settingsRepository.saveNoBreastfeeding(switchNoBreastfeeding.isChecked) + settingsRepository.saveSignature(textViewSignature.text.toString()) settingsRepository.saveWebdavCredentials( textViewWebDAVUrl.text.toString(), textViewWebDAVUser.text.toString(), diff --git a/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt b/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt index f00f64a..e46ab25 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/entities/LunaEvent.kt @@ -55,6 +55,12 @@ class LunaEvent: Comparable { set(value) { jo.put("notes", value) } + var signature: String + get(): String = jo.optString("signature") + set(value) { + if (value.isNotEmpty()) + jo.put("signature", value) + } constructor(jo: JSONObject) { this.jo = jo diff --git a/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt b/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt index 577d8f5..1462820 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt @@ -14,6 +14,7 @@ class LocalSettingsRepository(val context: Context) { const val SHARED_PREFS_DAV_USER = "webdav_user" const val SHARED_PREFS_DAV_PASS = "webdav_password" const val SHARED_PREFS_NO_BREASTFEEDING = "no_breastfeeding" + const val SHARED_PREFS_SIGNATURE = "signature" } enum class DATA_REPO {LOCAL_FILE, WEBDAV} val sharedPreferences: SharedPreferences @@ -30,6 +31,14 @@ class LocalSettingsRepository(val context: Context) { return sharedPreferences.getInt(SHARED_PREFS_BB_CONTENT, 1) } + fun saveSignature(content: String) { + sharedPreferences.edit { putString(SHARED_PREFS_SIGNATURE, content) } + } + + fun loadSignature(): String { + return sharedPreferences.getString(SHARED_PREFS_SIGNATURE, "") ?: "" + } + fun saveNoBreastfeeding(content: Boolean) { sharedPreferences.edit { putBoolean(SHARED_PREFS_NO_BREASTFEEDING, content) } } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index a4cfb2d..4e84cbb 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -119,6 +119,28 @@ android:visibility="invisible"/> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9240807..e422478 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -78,6 +78,8 @@ Retry Settings + Signature + Attach a signature to each event you create and for others to see. Useful if multiple people add events. Choose where to save data On device Most privacy-friendly solution: data doesn\'t leave your device @@ -129,6 +131,7 @@ Delete Quantity Notes + Created By Add logbook 👶 Logbook name