search implemented...

This commit is contained in:
Öppen 2020-08-20 15:57:38 +01:00
parent 42013a5fd6
commit 32fcd7c293
7 changed files with 117 additions and 5 deletions

View File

@ -6,5 +6,6 @@ class Tva: Application() {
companion object{
const val DEFAULT_HOME_CAPSULE = "gemini://gemini.circumlunar.space/~oppen/tva/index.gmi"
const val GEMINI_USER_SEARCH_BASE = "gemini://gus.guru/search/2?"
}
}

View File

@ -33,6 +33,8 @@ import oppen.visibleRetainingSpace
class TvaActivity : AppCompatActivity() {
private var inSearch = false
private val model by viewModels<TvaViewModel>()
private lateinit var binding: ActivityTvaBinding
private lateinit var history: HistoryInterface
@ -46,6 +48,11 @@ class TvaActivity : AppCompatActivity() {
}
}
}else{
//Reset input text hint after user has been searching
if(inSearch) {
binding.addressEdit.hint = getString(R.string.main_input_hint)
inSearch = false
}
model.request(uri)
}
}
@ -64,7 +71,9 @@ 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 ->
is TvaState.ResponseInput -> runOnUiThread {
loadingView(false)
InputDialog.show(this, state){ queryAddress ->
model.request(queryAddress)
}
}
@ -84,7 +93,14 @@ class TvaActivity : AppCompatActivity() {
binding.addressEdit.setOnEditorActionListener { _, actionId, _ ->
when (actionId) {
EditorInfo.IME_ACTION_GO -> {
model.request(binding.addressEdit.text.toString())
val input = binding.addressEdit.text.toString()
if(input.startsWith("gemini://")){
model.request(input)
}else{
model.request("${Tva.GEMINI_USER_SEARCH_BASE}$input")
}
return@setOnEditorActionListener true
}
else -> return@setOnEditorActionListener false
@ -94,6 +110,12 @@ class TvaActivity : AppCompatActivity() {
binding.more.setOnClickListener {
OverflowPopup.show(binding.more){menuId ->
when (menuId) {
R.id.overflow_menu_search -> {
binding.addressEdit.hint = getString(R.string.main_input_search_hint)
binding.addressEdit.text?.clear()
binding.addressEdit.requestFocus()
inSearch = true
}
R.id.overflow_menu_share -> {
Intent().apply {
action = Intent.ACTION_SEND

View File

@ -1,11 +1,31 @@
package oppen.tva.ui.modals_menus.input
import android.content.Context
import android.view.View
import androidx.appcompat.app.AppCompatDialog
import kotlinx.android.synthetic.main.dialog_input_query.view.*
import oppen.tva.R
import oppen.tva.io.TvaState
import oppen.tva.ui.TvaActivity
object InputDialog {
fun show(tvaActivity: TvaActivity, state: TvaState.ResponseInput, onQuery: (queryAddress: String) -> Unit) {
fun show(context: Context, state: TvaState.ResponseInput, onQuery: (queryAddress: String) -> Unit) {
val dialog = AppCompatDialog(context, R.style.AppTheme)
val view = View.inflate(context, R.layout.dialog_input_query, null)
dialog.setContentView(view)
view.close_input_query_dialog.setOnClickListener {
dialog.dismiss()
}
view.query_text.text = state.header.meta
view.query_submit_button.setOnClickListener {
onQuery("${state.uri}?${view.query_input.text.toString()}")
dialog.dismiss()
}
dialog.show()
}
}

View File

@ -56,7 +56,7 @@
android:singleLine="true"
android:textSize="14sp"
android:imeOptions="actionGo"
android:hint="@string/gemini_protocol"/>
android:hint="@string/main_input_hint"/>
<FrameLayout

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
<RelativeLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/default_margin">
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/close_input_query_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentStart="true"
android:layout_margin="@dimen/button_margin"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/vector_close" />
</RelativeLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/header">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/default_margin_big"
android:paddingRight="@dimen/default_margin_big"
android:paddingBottom="@dimen/default_margin_big"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/query_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/default_margin"
tools:text="Type your query"/>
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/query_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/default_margin"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/query_submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/submit"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</RelativeLayout>

View File

@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/app" >
<item
android:id="@+id/overflow_menu_search"
android:title="@string/search" />
<item
android:id="@+id/overflow_menu_share"
android:title="@string/share" />

View File

@ -1,6 +1,8 @@
<resources>
<string name="app_name">Två</string>
<string name="gemini_protocol">gemini://</string>
<string name="main_input_hint">Enter gemini:// address</string>
<string name="main_input_search_hint">Enter search term</string>
<string name="open_in_new_tab">Open in new tab</string>
<string name="copy_address">Copy address</string>
<string name="about">About</string>
@ -20,4 +22,6 @@
<string name="history">History</string>
<string name="clear_history">Clear history</string>
<string name="reload">Reload</string>
<string name="submit">Submit</string>
<string name="search">Search</string>
</resources>