forked from penguin86/luna-tracker
		
	add signature setting
For multiple users it helps to keep track about who did what.
This commit is contained in:
		@@ -57,6 +57,7 @@ class MainActivity : AppCompatActivity() {
 | 
				
			|||||||
    lateinit var buttonsContainer: ViewGroup
 | 
					    lateinit var buttonsContainer: ViewGroup
 | 
				
			||||||
    lateinit var recyclerView: RecyclerView
 | 
					    lateinit var recyclerView: RecyclerView
 | 
				
			||||||
    lateinit var handler: Handler
 | 
					    lateinit var handler: Handler
 | 
				
			||||||
 | 
					    var signature = ""
 | 
				
			||||||
    var savingEvent = false
 | 
					    var savingEvent = false
 | 
				
			||||||
    val updateListRunnable: Runnable = Runnable {
 | 
					    val updateListRunnable: Runnable = Runnable {
 | 
				
			||||||
        if (logbook != null && !pauseLogbookUpdate)
 | 
					        if (logbook != null && !pauseLogbookUpdate)
 | 
				
			||||||
@@ -168,6 +169,8 @@ class MainActivity : AppCompatActivity() {
 | 
				
			|||||||
            logbookRepo = FileLogbookRepository()
 | 
					            logbookRepo = FileLogbookRepository()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        signature = settingsRepository.loadSignature()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        val noBreastfeeding = settingsRepository.loadNoBreastfeeding()
 | 
					        val noBreastfeeding = settingsRepository.loadNoBreastfeeding()
 | 
				
			||||||
        findViewById<View>(R.id.layout_nipples).visibility = when (noBreastfeeding) {
 | 
					        findViewById<View>(R.id.layout_nipples).visibility = when (noBreastfeeding) {
 | 
				
			||||||
            true -> View.GONE
 | 
					            true -> View.GONE
 | 
				
			||||||
@@ -406,6 +409,13 @@ class MainActivity : AppCompatActivity() {
 | 
				
			|||||||
            pauseLogbookUpdate = false
 | 
					            pauseLogbookUpdate = false
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // show optional signature
 | 
				
			||||||
 | 
					        if (event.signature.isNotEmpty()) {
 | 
				
			||||||
 | 
					            val signatureTextEdit = dialogView.findViewById<TextView>(R.id.dialog_event_detail_type_signature)
 | 
				
			||||||
 | 
					            signatureTextEdit.text =  String.format(getString(R.string.dialog_event_detail_signature), event.signature)
 | 
				
			||||||
 | 
					            signatureTextEdit.visibility = View.VISIBLE
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // create next/previous links to events of the same type
 | 
					        // create next/previous links to events of the same type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        val previousTextView = dialogView.findViewById<TextView>(R.id.dialog_event_previous)
 | 
					        val previousTextView = dialogView.findViewById<TextView>(R.id.dialog_event_previous)
 | 
				
			||||||
@@ -655,6 +665,8 @@ class MainActivity : AppCompatActivity() {
 | 
				
			|||||||
    fun logEvent(event: LunaEvent) {
 | 
					    fun logEvent(event: LunaEvent) {
 | 
				
			||||||
        savingEvent(true)
 | 
					        savingEvent(true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        event.signature = signature
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        setLoading(true)
 | 
					        setLoading(true)
 | 
				
			||||||
        logbook?.logs?.add(0, event)
 | 
					        logbook?.logs?.add(0, event)
 | 
				
			||||||
        recyclerView.adapter?.notifyItemInserted(0)
 | 
					        recyclerView.adapter?.notifyItemInserted(0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ package it.danieleverducci.lunatracker
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import android.os.Bundle
 | 
					import android.os.Bundle
 | 
				
			||||||
import android.view.View
 | 
					import android.view.View
 | 
				
			||||||
 | 
					import android.widget.EditText
 | 
				
			||||||
import android.widget.RadioButton
 | 
					import android.widget.RadioButton
 | 
				
			||||||
import android.widget.TextView
 | 
					import android.widget.TextView
 | 
				
			||||||
import android.widget.Toast
 | 
					import android.widget.Toast
 | 
				
			||||||
@@ -24,6 +25,7 @@ open class SettingsActivity : AppCompatActivity() {
 | 
				
			|||||||
    protected lateinit var textViewWebDAVPass: TextView
 | 
					    protected lateinit var textViewWebDAVPass: TextView
 | 
				
			||||||
    protected lateinit var progressIndicator: LinearProgressIndicator
 | 
					    protected lateinit var progressIndicator: LinearProgressIndicator
 | 
				
			||||||
    protected lateinit var switchNoBreastfeeding: SwitchMaterial
 | 
					    protected lateinit var switchNoBreastfeeding: SwitchMaterial
 | 
				
			||||||
 | 
					    protected lateinit var textViewSignature: EditText
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    override fun onCreate(savedInstanceState: Bundle?) {
 | 
					    override fun onCreate(savedInstanceState: Bundle?) {
 | 
				
			||||||
        super.onCreate(savedInstanceState)
 | 
					        super.onCreate(savedInstanceState)
 | 
				
			||||||
@@ -36,6 +38,7 @@ open class SettingsActivity : AppCompatActivity() {
 | 
				
			|||||||
        textViewWebDAVPass = findViewById(R.id.settings_data_webdav_pass)
 | 
					        textViewWebDAVPass = findViewById(R.id.settings_data_webdav_pass)
 | 
				
			||||||
        progressIndicator = findViewById(R.id.progress_indicator)
 | 
					        progressIndicator = findViewById(R.id.progress_indicator)
 | 
				
			||||||
        switchNoBreastfeeding = findViewById(R.id.switch_no_breastfeeding)
 | 
					        switchNoBreastfeeding = findViewById(R.id.switch_no_breastfeeding)
 | 
				
			||||||
 | 
					        textViewSignature = findViewById(R.id.settings_signature)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        findViewById<View>(R.id.settings_save).setOnClickListener({
 | 
					        findViewById<View>(R.id.settings_save).setOnClickListener({
 | 
				
			||||||
            validateAndSave()
 | 
					            validateAndSave()
 | 
				
			||||||
@@ -52,12 +55,14 @@ open class SettingsActivity : AppCompatActivity() {
 | 
				
			|||||||
        val dataRepo = settingsRepository.loadDataRepository()
 | 
					        val dataRepo = settingsRepository.loadDataRepository()
 | 
				
			||||||
        val webDavCredentials = settingsRepository.loadWebdavCredentials()
 | 
					        val webDavCredentials = settingsRepository.loadWebdavCredentials()
 | 
				
			||||||
        val noBreastfeeding = settingsRepository.loadNoBreastfeeding()
 | 
					        val noBreastfeeding = settingsRepository.loadNoBreastfeeding()
 | 
				
			||||||
 | 
					        val signature = settingsRepository.loadSignature()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when (dataRepo) {
 | 
					        when (dataRepo) {
 | 
				
			||||||
            LocalSettingsRepository.DATA_REPO.LOCAL_FILE -> radioDataLocal.isChecked = true
 | 
					            LocalSettingsRepository.DATA_REPO.LOCAL_FILE -> radioDataLocal.isChecked = true
 | 
				
			||||||
            LocalSettingsRepository.DATA_REPO.WEBDAV -> radioDataWebDAV.isChecked = true
 | 
					            LocalSettingsRepository.DATA_REPO.WEBDAV -> radioDataWebDAV.isChecked = true
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        textViewSignature.setText(signature)
 | 
				
			||||||
        switchNoBreastfeeding.isChecked = noBreastfeeding
 | 
					        switchNoBreastfeeding.isChecked = noBreastfeeding
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (webDavCredentials != null) {
 | 
					        if (webDavCredentials != null) {
 | 
				
			||||||
@@ -156,6 +161,7 @@ open class SettingsActivity : AppCompatActivity() {
 | 
				
			|||||||
            else LocalSettingsRepository.DATA_REPO.LOCAL_FILE
 | 
					            else LocalSettingsRepository.DATA_REPO.LOCAL_FILE
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        settingsRepository.saveNoBreastfeeding(switchNoBreastfeeding.isChecked)
 | 
					        settingsRepository.saveNoBreastfeeding(switchNoBreastfeeding.isChecked)
 | 
				
			||||||
 | 
					        settingsRepository.saveSignature(textViewSignature.text.toString())
 | 
				
			||||||
        settingsRepository.saveWebdavCredentials(
 | 
					        settingsRepository.saveWebdavCredentials(
 | 
				
			||||||
            textViewWebDAVUrl.text.toString(),
 | 
					            textViewWebDAVUrl.text.toString(),
 | 
				
			||||||
            textViewWebDAVUser.text.toString(),
 | 
					            textViewWebDAVUser.text.toString(),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -55,6 +55,12 @@ class LunaEvent: Comparable<LunaEvent> {
 | 
				
			|||||||
        set(value) {
 | 
					        set(value) {
 | 
				
			||||||
            jo.put("notes", 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) {
 | 
					    constructor(jo: JSONObject) {
 | 
				
			||||||
        this.jo = jo
 | 
					        this.jo = jo
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,7 @@ class LocalSettingsRepository(val context: Context) {
 | 
				
			|||||||
        const val SHARED_PREFS_DAV_USER = "webdav_user"
 | 
					        const val SHARED_PREFS_DAV_USER = "webdav_user"
 | 
				
			||||||
        const val SHARED_PREFS_DAV_PASS = "webdav_password"
 | 
					        const val SHARED_PREFS_DAV_PASS = "webdav_password"
 | 
				
			||||||
        const val SHARED_PREFS_NO_BREASTFEEDING = "no_breastfeeding"
 | 
					        const val SHARED_PREFS_NO_BREASTFEEDING = "no_breastfeeding"
 | 
				
			||||||
 | 
					        const val SHARED_PREFS_SIGNATURE = "signature"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    enum class DATA_REPO {LOCAL_FILE, WEBDAV}
 | 
					    enum class DATA_REPO {LOCAL_FILE, WEBDAV}
 | 
				
			||||||
    val sharedPreferences: SharedPreferences
 | 
					    val sharedPreferences: SharedPreferences
 | 
				
			||||||
@@ -30,6 +31,14 @@ class LocalSettingsRepository(val context: Context) {
 | 
				
			|||||||
        return sharedPreferences.getInt(SHARED_PREFS_BB_CONTENT, 1)
 | 
					        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) {
 | 
					    fun saveNoBreastfeeding(content: Boolean) {
 | 
				
			||||||
        sharedPreferences.edit { putBoolean(SHARED_PREFS_NO_BREASTFEEDING, content) }
 | 
					        sharedPreferences.edit { putBoolean(SHARED_PREFS_NO_BREASTFEEDING, content) }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -119,6 +119,28 @@
 | 
				
			|||||||
                android:visibility="invisible"/>
 | 
					                android:visibility="invisible"/>
 | 
				
			||||||
        </RadioGroup>
 | 
					        </RadioGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <TextView
 | 
				
			||||||
 | 
					            android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:textStyle="bold"
 | 
				
			||||||
 | 
					            android:text="@string/settings_signature" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <EditText
 | 
				
			||||||
 | 
					            android:id="@+id/settings_signature"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:layout_marginStart="20dp"
 | 
				
			||||||
 | 
					            android:layout_marginTop="5dp"
 | 
				
			||||||
 | 
					            android:inputType="textEmailAddress"
 | 
				
			||||||
 | 
					            android:background="@drawable/textview_background"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <TextView
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:layout_marginStart="30dp"
 | 
				
			||||||
 | 
					            android:layout_marginTop="5dp"
 | 
				
			||||||
 | 
					            android:text="@string/settings_signature_desc"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <LinearLayout
 | 
					        <LinearLayout
 | 
				
			||||||
            android:layout_width="match_parent"
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
            android:layout_height="wrap_content"
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,6 +61,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    </ScrollView>
 | 
					    </ScrollView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <TextView
 | 
				
			||||||
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_gravity="center_horizontal"
 | 
				
			||||||
 | 
					        android:id="@+id/dialog_event_detail_type_signature"
 | 
				
			||||||
 | 
					        android:layout_marginBottom="5dp"
 | 
				
			||||||
 | 
					        android:visibility="gone"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <LinearLayout
 | 
					    <LinearLayout
 | 
				
			||||||
        android:layout_width="match_parent"
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
        android:layout_height="wrap_content"
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,6 +85,8 @@
 | 
				
			|||||||
    <string name="no_connection_retry">Retry</string>
 | 
					    <string name="no_connection_retry">Retry</string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <string name="settings_title">Settings</string>
 | 
					    <string name="settings_title">Settings</string>
 | 
				
			||||||
 | 
					    <string name="settings_signature">Signature</string>
 | 
				
			||||||
 | 
					    <string name="settings_signature_desc">Attach a signature to each event you create and for others to see. Useful if multiple people add events.</string>
 | 
				
			||||||
    <string name="settings_storage">Choose where to save data</string>
 | 
					    <string name="settings_storage">Choose where to save data</string>
 | 
				
			||||||
    <string name="settings_storage_local">On device</string>
 | 
					    <string name="settings_storage_local">On device</string>
 | 
				
			||||||
    <string name="settings_storage_local_desc">Most privacy-friendly solution: data doesn\'t leave your device</string>
 | 
					    <string name="settings_storage_local_desc">Most privacy-friendly solution: data doesn\'t leave your device</string>
 | 
				
			||||||
@@ -136,6 +138,7 @@
 | 
				
			|||||||
    <string name="dialog_event_detail_delete_button">Delete</string>
 | 
					    <string name="dialog_event_detail_delete_button">Delete</string>
 | 
				
			||||||
    <string name="dialog_event_detail_quantity">Quantity</string>
 | 
					    <string name="dialog_event_detail_quantity">Quantity</string>
 | 
				
			||||||
    <string name="dialog_event_detail_notes">Notes</string>
 | 
					    <string name="dialog_event_detail_notes">Notes</string>
 | 
				
			||||||
 | 
					    <string name="dialog_event_detail_signature">by %s</string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <string name="dialog_add_logbook_title">Add logbook</string>
 | 
					    <string name="dialog_add_logbook_title">Add logbook</string>
 | 
				
			||||||
    <string name="dialog_add_logbook_logbookname">👶 Logbook name</string>
 | 
					    <string name="dialog_add_logbook_logbookname">👶 Logbook name</string>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user