| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package im.angry.openeuicc.ui
- import android.icu.text.SimpleDateFormat
- import android.os.Bundle
- import android.view.Menu
- import android.view.MenuItem
- import android.view.View
- import android.widget.ScrollView
- import android.widget.TextView
- import androidx.activity.enableEdgeToEdge
- import androidx.appcompat.app.AppCompatActivity
- import androidx.lifecycle.lifecycleScope
- import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
- import im.angry.openeuicc.common.R
- import im.angry.openeuicc.util.*
- import kotlinx.coroutines.Dispatchers
- import kotlinx.coroutines.launch
- import kotlinx.coroutines.withContext
- import java.util.Date
- class LogsActivity : AppCompatActivity() {
- private lateinit var swipeRefresh: SwipeRefreshLayout
- private lateinit var scrollView: ScrollView
- private lateinit var logText: TextView
- private lateinit var logStr: String
- private val saveLogs =
- setupLogSaving(
- getLogFileName = {
- getString(
- R.string.logs_filename_template,
- SimpleDateFormat.getDateTimeInstance().format(Date())
- )
- },
- getLogText = { logStr }
- )
- override fun onCreate(savedInstanceState: Bundle?) {
- enableEdgeToEdge()
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_logs)
- setSupportActionBar(requireViewById(R.id.toolbar))
- setupToolbarInsets()
- supportActionBar!!.setDisplayHomeAsUpEnabled(true)
- swipeRefresh = requireViewById(R.id.swipe_refresh)
- scrollView = requireViewById(R.id.scroll_view)
- logText = requireViewById(R.id.log_text)
- setupRootViewInsets(scrollView)
- swipeRefresh.setOnRefreshListener {
- lifecycleScope.launch {
- reload()
- }
- }
- }
- override fun onStart() {
- super.onStart()
- lifecycleScope.launch {
- reload()
- }
- }
- override fun onCreateOptionsMenu(menu: Menu?): Boolean {
- menuInflater.inflate(R.menu.activity_logs, menu)
- return true
- }
- override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
- android.R.id.home -> {
- finish()
- true
- }
- R.id.save -> {
- saveLogs()
- true
- }
- else -> super.onOptionsItemSelected(item)
- }
- private suspend fun reload() = withContext(Dispatchers.Main) {
- swipeRefresh.isRefreshing = true
- logStr = intent.extras?.getString("log") ?: readSelfLog()
- logText.text = withContext(Dispatchers.IO) {
- // Limit the UI to display only 256 lines
- logStr.lines().takeLast(256).joinToString("\n")
- }
- swipeRefresh.isRefreshing = false
- scrollView.post {
- scrollView.fullScroll(View.FOCUS_DOWN)
- }
- }
- }
|