move all modals to new package, wip input handling

This commit is contained in:
Öppen 2020-08-20 15:16:22 +01:00
parent 7c47f2eb32
commit 42013a5fd6
14 changed files with 36 additions and 18 deletions

View File

@ -132,6 +132,7 @@ class GeminiDatasource: Datasource{
val header = GeminiResponse.parseHeader(headerLine)
when {
header.code == GeminiResponse.INPUT -> onUpdate(TvaState.ResponseInput(uri, header))
header.code == GeminiResponse.REDIRECT -> request(URI.create(header.meta), onUpdate)
header.code != GeminiResponse.SUCCESS -> onUpdate(TvaState.ResponseError(header))
header.meta.startsWith("text/gemini") -> getGemtext(socket, uri, header, onUpdate)

View File

@ -8,6 +8,7 @@ sealed class TvaState {
data class NotGeminiRequest(val uri: URI) : TvaState()
data class ResponseGemtext(val uri: URI, val header: GeminiResponse.Header, val lines: List<String>) : TvaState()
data class ResponseInput(val uri: URI, val header: GeminiResponse.Header) : TvaState()
data class ResponseText(val uri: URI, val header: GeminiResponse.Header, val content: String) : TvaState()
data class ResponseError(val header: GeminiResponse.Header): TvaState()

View File

@ -71,7 +71,7 @@ class GemtextAdapter(val onLink: (link: URI, longTap: Boolean, view: View?) -> U
when(holder){
is ViewHolder.Text -> holder.itemView.gemtext_text_textview.text = line
is ViewHolder.Code-> holder.itemView.gemtext_text_monospace_textview.text = line.substring(3).trim()
is ViewHolder.Code-> holder.itemView.gemtext_text_monospace_textview.text = line.substring(3)
is ViewHolder.H1 -> holder.itemView.gemtext_text_textview.text = line.substring(2).trim()
is ViewHolder.H2 -> holder.itemView.gemtext_text_textview.text = line.substring(3).trim()
is ViewHolder.H3 -> holder.itemView.gemtext_text_textview.text = line.substring(4).trim()

View File

@ -21,12 +21,13 @@ 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.about.AboutDialog
import oppen.tva.ui.history.HistoryDialog
import oppen.tva.ui.overflow.OverflowPopup
import oppen.tva.ui.set_home.SetHomeDialog
import oppen.tva.ui.tabs.NewTabPopup
import oppen.tva.ui.tabs.TabsDialog
import oppen.tva.ui.modals_menus.about.AboutDialog
import oppen.tva.ui.modals_menus.history.HistoryDialog
import oppen.tva.ui.modals_menus.input.InputDialog
import oppen.tva.ui.modals_menus.overflow.OverflowPopup
import oppen.tva.ui.modals_menus.set_home.SetHomeDialog
import oppen.tva.ui.modals_menus.tabs.NewTabPopup
import oppen.tva.ui.modals_menus.tabs.TabsDialog
import oppen.visibleRetainingSpace
@ -63,6 +64,10 @@ class TvaActivity : AppCompatActivity() {
model.initialise(TabHistoryInterface.default(this)){ state ->
when(state){
is TvaState.AppQuery -> runOnUiThread{ showAlert("App backdoor/query not implemented yet") }
is TvaState.ResponseInput -> runOnUiThread { InputDialog.show(this, state){ queryAddress ->
model.request(queryAddress)
}
}
is TvaState.Requesting -> loadingView(true)
is TvaState.NotGeminiRequest -> externalProtocol(state)
is TvaState.ResponseError -> showAlert("${GeminiResponse.getCodeString(state.header.code)}: ${state.header.meta}")
@ -128,7 +133,7 @@ class TvaActivity : AppCompatActivity() {
}
}
binding.home.setOnClickListener {
val prefs = getSharedPreferences("oppen.tva.ui.set_home", Context.MODE_PRIVATE)
val prefs = getSharedPreferences("oppen.tva.ui.dialogs.set_home", Context.MODE_PRIVATE)
val home = prefs.getString("home", Tva.DEFAULT_HOME_CAPSULE)
model.request(home!!)
}

View File

@ -52,6 +52,7 @@ class TvaViewModel: ViewModel() {
gemini.request(uri){ state ->
when(state){
is TvaState.AppQuery -> {}
is TvaState.ResponseInput -> onState(state)
is TvaState.ResponseGemtext -> renderGemini(state)
is TvaState.Requesting -> onState(state)
is TvaState.ResponseError -> onState(state)

View File

@ -1,4 +1,4 @@
package oppen.tva.ui.about
package oppen.tva.ui.modals_menus.about
import android.content.Context
import android.content.Intent

View File

@ -1,4 +1,4 @@
package oppen.tva.ui.history
package oppen.tva.ui.modals_menus.history
import android.view.LayoutInflater
import android.view.View

View File

@ -1,4 +1,4 @@
package oppen.tva.ui.history
package oppen.tva.ui.modals_menus.history
import android.content.Context
import android.view.MenuInflater

View File

@ -0,0 +1,11 @@
package oppen.tva.ui.modals_menus.input
import oppen.tva.io.TvaState
import oppen.tva.ui.TvaActivity
object InputDialog {
fun show(tvaActivity: TvaActivity, state: TvaState.ResponseInput, onQuery: (queryAddress: String) -> Unit) {
}
}

View File

@ -1,4 +1,4 @@
package oppen.tva.ui.overflow
package oppen.tva.ui.modals_menus.overflow
import android.view.MenuInflater
import android.view.View

View File

@ -1,4 +1,4 @@
package oppen.tva.ui.set_home
package oppen.tva.ui.modals_menus.set_home
import android.content.Context
import android.view.View
@ -9,7 +9,7 @@ import oppen.tva.R
object SetHomeDialog {
fun show(context: Context, currentAddress: String, onUpdate: () -> Unit){
val prefs = context.getSharedPreferences("oppen.tva.ui.set_home", Context.MODE_PRIVATE)
val prefs = context.getSharedPreferences("oppen.tva.ui.dialogs.set_home", Context.MODE_PRIVATE)
val home = prefs.getString("home", "")

View File

@ -1,10 +1,9 @@
package oppen.tva.ui.tabs
package oppen.tva.ui.modals_menus.tabs
import android.view.MenuInflater
import android.view.View
import androidx.appcompat.widget.PopupMenu
import oppen.tva.R
import java.net.URI
object NewTabPopup {

View File

@ -1,4 +1,4 @@
package oppen.tva.ui.tabs
package oppen.tva.ui.modals_menus.tabs
import android.view.LayoutInflater
import android.view.View

View File

@ -1,4 +1,4 @@
package oppen.tva.ui.tabs
package oppen.tva.ui.modals_menus.tabs
import android.content.Context
import android.view.View