link out to web browser for non gemini links

This commit is contained in:
Öppen 2020-08-15 21:33:44 +01:00
parent 61199d91db
commit 3ee7431485
3 changed files with 15 additions and 7 deletions

View File

@ -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<TvaViewModel>()
@ -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)

View File

@ -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 -> {}
}

View File

@ -66,10 +66,10 @@ class GemtextAdapter(val onLink: (link: URI) -> Unit): RecyclerView.Adapter<Gemt
when(holder){
is ViewHolder.Text -> 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)