diff --git a/app/src/main/java/oppen/tva/io/GeminiDatasource.kt b/app/src/main/java/oppen/tva/io/GeminiDatasource.kt index 540dc14..f1d6f95 100644 --- a/app/src/main/java/oppen/tva/io/GeminiDatasource.kt +++ b/app/src/main/java/oppen/tva/io/GeminiDatasource.kt @@ -163,5 +163,7 @@ class GeminiDatasource: Datasource{ val content = socket?.inputStream?.bufferedReader().use { reader -> reader?.readText() } socket?.close() + + onUpdate(TvaState.ResponseText(uri, header, content ?: "Error fetching content")) } } \ No newline at end of file diff --git a/app/src/main/java/oppen/tva/ui/TvaActivity.kt b/app/src/main/java/oppen/tva/ui/TvaActivity.kt index 8140832..ea753b2 100644 --- a/app/src/main/java/oppen/tva/ui/TvaActivity.kt +++ b/app/src/main/java/oppen/tva/ui/TvaActivity.kt @@ -23,6 +23,7 @@ import oppen.tva.io.RuntimeCache import oppen.tva.io.TvaState import oppen.tva.io.history.tabs.TabHistoryInterface import oppen.tva.io.history.uris.HistoryInterface +import oppen.tva.ui.content_text.TextDialog import oppen.tva.ui.modals_menus.about.AboutDialog import oppen.tva.ui.modals_menus.history.HistoryDialog import oppen.tva.ui.modals_menus.input.InputDialog @@ -84,7 +85,7 @@ class TvaActivity : AppCompatActivity() { is TvaState.NotGeminiRequest -> externalProtocol(state) is TvaState.ResponseError -> showAlert("${GeminiResponse.getCodeString(state.header.code)}: ${state.header.meta}") is TvaState.ResponseGemtext -> renderGemtext(state) - is TvaState.ResponseText -> runOnUiThread{ showAlert("Plain text display not implemented") } + is TvaState.ResponseText -> renderText(state) is TvaState.TabChange -> binding.tabCount.text = "${state.count}" is TvaState.Blank -> { binding.addressEdit.setText("") @@ -201,6 +202,11 @@ class TvaActivity : AppCompatActivity() { history.add(state.uri.toString()) } + private fun renderText(state: TvaState.ResponseText) = runOnUiThread { + loadingView(false) + TextDialog.show(this, state) + } + private fun loadingView(visible: Boolean) = runOnUiThread { binding.progressBar.visibleRetainingSpace(visible) if(visible) binding.appBar.setExpanded(true) diff --git a/app/src/main/java/oppen/tva/ui/content_text/TextDialog.kt b/app/src/main/java/oppen/tva/ui/content_text/TextDialog.kt new file mode 100644 index 0000000..23df9f8 --- /dev/null +++ b/app/src/main/java/oppen/tva/ui/content_text/TextDialog.kt @@ -0,0 +1,27 @@ +package oppen.tva.ui.content_text + +import android.content.Context +import android.view.View +import androidx.appcompat.app.AppCompatDialog +import kotlinx.android.synthetic.main.dialog_content_text.view.* +import oppen.tva.R +import oppen.tva.io.TvaState + +object TextDialog { + + fun show(context: Context, state: TvaState.ResponseText){ + val dialog = AppCompatDialog(context, R.style.AppTheme) + + val view = View.inflate(context, R.layout.dialog_content_text, null) + dialog.setContentView(view) + + view.text_content.text = state.content + + view.close_text_content_dialog.setOnClickListener { + dialog.dismiss() + } + + + dialog.show() + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_content_text.xml b/app/src/main/res/layout/dialog_content_text.xml new file mode 100644 index 0000000..2a44e9d --- /dev/null +++ b/app/src/main/res/layout/dialog_content_text.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file