|
@@ -1,9 +1,13 @@
|
|
|
package im.angry.openeuicc.ui
|
|
package im.angry.openeuicc.ui
|
|
|
|
|
|
|
|
|
|
+import android.icu.text.SimpleDateFormat
|
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
|
|
|
+import android.view.Menu
|
|
|
|
|
+import android.view.MenuItem
|
|
|
import android.view.View
|
|
import android.view.View
|
|
|
import android.widget.ScrollView
|
|
import android.widget.ScrollView
|
|
|
import android.widget.TextView
|
|
import android.widget.TextView
|
|
|
|
|
+import androidx.activity.result.contract.ActivityResultContracts
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
|
@@ -12,12 +16,24 @@ import im.angry.openeuicc.util.*
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.launch
|
|
|
import kotlinx.coroutines.withContext
|
|
import kotlinx.coroutines.withContext
|
|
|
|
|
+import java.io.FileOutputStream
|
|
|
|
|
+import java.util.Date
|
|
|
|
|
|
|
|
class LogsActivity : AppCompatActivity() {
|
|
class LogsActivity : AppCompatActivity() {
|
|
|
private lateinit var swipeRefresh: SwipeRefreshLayout
|
|
private lateinit var swipeRefresh: SwipeRefreshLayout
|
|
|
private lateinit var scrollView: ScrollView
|
|
private lateinit var scrollView: ScrollView
|
|
|
private lateinit var logText: TextView
|
|
private lateinit var logText: TextView
|
|
|
|
|
|
|
|
|
|
+ private val saveLogs =
|
|
|
|
|
+ registerForActivityResult(ActivityResultContracts.CreateDocument("text/plain")) { uri ->
|
|
|
|
|
+ if (uri == null) return@registerForActivityResult
|
|
|
|
|
+ contentResolver.openFileDescriptor(uri, "w")?.use {
|
|
|
|
|
+ FileOutputStream(it.fileDescriptor).use { os ->
|
|
|
|
|
+ os.write(logText.text.toString().encodeToByteArray())
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
super.onCreate(savedInstanceState)
|
|
|
setContentView(R.layout.activity_logs)
|
|
setContentView(R.layout.activity_logs)
|
|
@@ -42,6 +58,21 @@ class LogsActivity : AppCompatActivity() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
|
|
|
|
+ menuInflater.inflate(R.menu.activity_logs, menu)
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
|
|
|
|
+ R.id.save -> {
|
|
|
|
|
+ saveLogs.launch(getString(R.string.logs_filename_template,
|
|
|
|
|
+ SimpleDateFormat.getDateTimeInstance().format(Date())
|
|
|
|
|
+ ))
|
|
|
|
|
+ true
|
|
|
|
|
+ }
|
|
|
|
|
+ else -> super.onOptionsItemSelected(item)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private suspend fun reload() = withContext(Dispatchers.Main) {
|
|
private suspend fun reload() = withContext(Dispatchers.Main) {
|
|
|
swipeRefresh.isRefreshing = true
|
|
swipeRefresh.isRefreshing = true
|
|
|
|
|
|