diff --git a/app/src/main/java/oppen/tva/ui/TvaActivity.kt b/app/src/main/java/oppen/tva/ui/TvaActivity.kt index 483be20..e43e2da 100644 --- a/app/src/main/java/oppen/tva/ui/TvaActivity.kt +++ b/app/src/main/java/oppen/tva/ui/TvaActivity.kt @@ -1,9 +1,11 @@ package oppen.tva.ui -import androidx.appcompat.app.AppCompatActivity +import android.content.Intent +import android.net.Uri import android.os.Bundle import android.view.inputmethod.EditorInfo import androidx.activity.viewModels +import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.LinearLayoutManager import oppen.tva.R @@ -12,6 +14,7 @@ import oppen.tva.io.TvaState import oppen.tva.io.history.CacheInterface import oppen.tva.ui.gemtext.GemtextAdapter + class TvaActivity : AppCompatActivity() { private val model by viewModels() @@ -33,7 +36,7 @@ class TvaActivity : AppCompatActivity() { when(state){ is TvaState.AppQuery -> TODO() is TvaState.Requesting -> TODO() - is TvaState.NotGeminiRequest -> TODO() + is TvaState.NotGeminiRequest -> externalProtocol(state) is TvaState.GeminiResponse -> renderGemtext(state) TvaState.GeminiPrintWriterError -> TODO() } @@ -50,6 +53,11 @@ class TvaActivity : AppCompatActivity() { } } + private fun externalProtocol(state: TvaState.NotGeminiRequest) { + val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(state.uri.toString())) + startActivity(browserIntent) + } + private fun renderGemtext(state: TvaState.GeminiResponse) = runOnUiThread { binding.addressEdit.setText(state.uri.toString()) adapter.render(state.lines) diff --git a/app/src/main/java/oppen/tva/ui/TvaViewModel.kt b/app/src/main/java/oppen/tva/ui/TvaViewModel.kt index e2ffc91..6408df3 100644 --- a/app/src/main/java/oppen/tva/ui/TvaViewModel.kt +++ b/app/src/main/java/oppen/tva/ui/TvaViewModel.kt @@ -43,7 +43,7 @@ class TvaViewModel: ViewModel() { when(state){ is TvaState.Requesting -> {} is TvaState.AppQuery -> {} - is TvaState.NotGeminiRequest -> {} + is TvaState.NotGeminiRequest -> onState(state) is TvaState.GeminiResponse -> renderGemini(state) TvaState.GeminiPrintWriterError -> {} } diff --git a/app/src/main/java/oppen/tva/ui/gemtext/GemtextAdapter.kt b/app/src/main/java/oppen/tva/ui/gemtext/GemtextAdapter.kt index ec23e0f..cf5b21c 100644 --- a/app/src/main/java/oppen/tva/ui/gemtext/GemtextAdapter.kt +++ b/app/src/main/java/oppen/tva/ui/gemtext/GemtextAdapter.kt @@ -66,10 +66,10 @@ class GemtextAdapter(val onLink: (link: URI) -> Unit): RecyclerView.Adapter holder.itemView.gemtext_text_textview.text = line - is ViewHolder.H1 -> holder.itemView.gemtext_text_textview.text = line.drop(2).trim() - is ViewHolder.H2 -> holder.itemView.gemtext_text_textview.text = line.drop(3).trim() - is ViewHolder.H3 -> holder.itemView.gemtext_text_textview.text = line.drop(4).trim() - is ViewHolder.ListItem -> holder.itemView.gemtext_text_textview.text = "• ${line.drop(1)}".trim() + is ViewHolder.H1 -> holder.itemView.gemtext_text_textview.text = line.substring(2) + is ViewHolder.H2 -> holder.itemView.gemtext_text_textview.text = line.substring(3) + is ViewHolder.H3 -> holder.itemView.gemtext_text_textview.text = line.substring(4) + is ViewHolder.ListItem -> holder.itemView.gemtext_text_textview.text = "• ${line.substring(1)}".trim() is ViewHolder.Link -> { println("Tva: link: $line") val linkParts = line.substring(2).trim().split("\\s+".toRegex(), 2)