@@ -11,6 +11,7 @@ import android.view.ViewGroup
1111import android.view.inputmethod.EditorInfo
1212import androidx.activity.result.contract.ActivityResultContracts
1313import androidx.fragment.app.DialogFragment
14+ import dev.arkbuilders.core.FileStorage
1415import dev.arkbuilders.sample.R
1516import dev.arkbuilders.sample.databinding.FragmentStorageDemoBinding
1617import dev.arkbuilders.sample.extension.getAbsolutePath
@@ -21,8 +22,8 @@ class StorageDemoFragment: DialogFragment() {
2122 private val TAG = StorageDemoFragment ::class .java.name
2223
2324 private lateinit var binding: FragmentStorageDemoBinding
24- private val map by lazy { mutableMapOf<String , String >() }
2525 private var workingDir: String = " /"
26+ private var storage: FileStorage ? = null
2627
2728 private val selectDirRequest = registerForActivityResult(ActivityResultContracts .OpenDocumentTree ()) { uri ->
2829 uri?.let {
@@ -61,29 +62,38 @@ class StorageDemoFragment: DialogFragment() {
6162
6263 binding.edtStoragePath.setOnEditorActionListener { v, actionId, event ->
6364 if (actionId == EditorInfo .IME_ACTION_DONE ) {
64- refreshFilesTree()
65+ val relativeStoragePath = v.text
66+ storage = FileStorage (relativeStoragePath.toString(),
67+ " $workingDir /$relativeStoragePath "
68+ )
6569 return @setOnEditorActionListener true
6670 }
6771 false
6872 }
6973
7074 binding.btnNewMapEntry.setOnClickListener {
7175 MapEntryDialog (isDelete = false , onDone = { key, value ->
72- map[key] = value ? : " "
73- refreshMap()
76+ if (storage != null ) {
77+ storage!! .set(key, value)
78+ }
79+ refreshStorage()
7480 }).show(parentFragmentManager, MapEntryDialog ::class .java.name)
7581 }
7682
7783 binding.btnDeleteEntry.setOnClickListener {
78- MapEntryDialog (isDelete = true , onDone = { key, value ->
79- map.remove(key)
80- refreshMap()
84+ MapEntryDialog (isDelete = true , onDone = { key, _ ->
85+ if (storage != null ) {
86+ storage!! .remove(key)
87+ }
88+ refreshStorage()
8189 }).show(parentFragmentManager, MapEntryDialog ::class .java.name)
8290 }
8391
8492 binding.btnClearMap.setOnClickListener {
85- map.clear()
86- refreshMap()
93+ if (storage != null ) {
94+ storage!! .erase()
95+ }
96+ refreshStorage()
8797 }
8898 }
8999
@@ -105,13 +115,14 @@ class StorageDemoFragment: DialogFragment() {
105115 }
106116 }
107117
108- private fun refreshMap () {
109- if (map.isEmpty() ) {
118+ private fun refreshStorage () {
119+ if (storage == null ) {
110120 binding.tvMapValues.text = getString(R .string.empty_map)
111121 return
112122 }
123+ storage!! .writeFS()
113124 val mapEntries = StringBuilder ()
114- for (entry in map ) {
125+ for (entry in storage !! ) {
115126 mapEntries.append(entry.key).append(" -> " ).append(entry.value).append(" \n " )
116127 }
117128 binding.tvMapValues.text = mapEntries.toString()
0 commit comments