Implements extremely basic file reading

This commit is contained in:
Dennis Schoepf 2025-04-11 22:33:22 +02:00
parent c45d852aa0
commit 04165e0068
2 changed files with 56 additions and 1 deletions

View file

@ -1,19 +1,50 @@
package com.dnsc.plaindo package com.dnsc.plaindo
import android.os.Bundle import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import com.dnsc.plaindo.data.TodoFileRepository
import com.dnsc.plaindo.ui.theme.PlaindoTheme import com.dnsc.plaindo.ui.theme.PlaindoTheme
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
private lateinit var todoFileRepository: TodoFileRepository
private lateinit var openDocumentLauncher: ActivityResultLauncher<Array<String>>
private val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
// Set up dependencies
todoFileRepository = TodoFileRepository(this)
// Draw content
enableEdgeToEdge() enableEdgeToEdge()
setContent { setContent {
PlaindoTheme { PlaindoTheme {
PlaindoApp() PlaindoApp()
} }
} }
// Handle init tasks
openDocumentLauncher = registerForActivityResult(
ActivityResultContracts.OpenDocument()
) { uri ->
if (uri != null) {
// TODO: Store uri in shared preferences
// TODO: Persist access to URI
todoFileRepository.load(uri)
} else {
// TODO: Handle user cancelled selection
Log.d(TAG, "No document selected")
} }
} }
// TODO: Move to / listen to button click for this function
openDocumentLauncher.launch(arrayOf("text/plain"))
}
}

View file

@ -0,0 +1,24 @@
package com.dnsc.plaindo.data
import android.content.Context
import android.net.Uri
import android.util.Log
import java.io.BufferedReader
import java.io.InputStreamReader
class TodoFileRepository(val context: Context) {
fun load(uri: Uri) {
context.contentResolver.openInputStream(uri)?.use { inputStream ->
BufferedReader(InputStreamReader(inputStream)).use { reader ->
var line: String? = reader.readLine()
while (line != null) {
Log.d("Plaindo", line)
// TODO: Add task to data structure
line = reader.readLine()
}
}
}
}
}