From 32fcd7c293bcf9f10412c081a4bd1ef1da12058b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96ppen?= Date: Thu, 20 Aug 2020 15:57:38 +0100 Subject: [PATCH] search implemented... --- app/src/main/java/oppen/tva/Tva.kt | 1 + app/src/main/java/oppen/tva/ui/TvaActivity.kt | 26 +++++++- .../tva/ui/modals_menus/input/InputDialog.kt | 24 ++++++- app/src/main/res/layout/activity_tva.xml | 2 +- .../main/res/layout/dialog_input_query.xml | 62 +++++++++++++++++++ app/src/main/res/menu/overflow_menu.xml | 3 + app/src/main/res/values/strings.xml | 4 ++ 7 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/layout/dialog_input_query.xml diff --git a/app/src/main/java/oppen/tva/Tva.kt b/app/src/main/java/oppen/tva/Tva.kt index bc9c46c..8e54276 100644 --- a/app/src/main/java/oppen/tva/Tva.kt +++ b/app/src/main/java/oppen/tva/Tva.kt @@ -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?" } } \ 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 e99931a..3a307f1 100644 --- a/app/src/main/java/oppen/tva/ui/TvaActivity.kt +++ b/app/src/main/java/oppen/tva/ui/TvaActivity.kt @@ -33,6 +33,8 @@ import oppen.visibleRetainingSpace class TvaActivity : AppCompatActivity() { + private var inSearch = false + private val model by viewModels() 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 diff --git a/app/src/main/java/oppen/tva/ui/modals_menus/input/InputDialog.kt b/app/src/main/java/oppen/tva/ui/modals_menus/input/InputDialog.kt index 96a981a..cd0b1b0 100644 --- a/app/src/main/java/oppen/tva/ui/modals_menus/input/InputDialog.kt +++ b/app/src/main/java/oppen/tva/ui/modals_menus/input/InputDialog.kt @@ -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() } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_tva.xml b/app/src/main/res/layout/activity_tva.xml index 1c7b80b..c5a4020 100644 --- a/app/src/main/res/layout/activity_tva.xml +++ b/app/src/main/res/layout/activity_tva.xml @@ -56,7 +56,7 @@ android:singleLine="true" android:textSize="14sp" android:imeOptions="actionGo" - android:hint="@string/gemini_protocol"/> + android:hint="@string/main_input_hint"/> + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/overflow_menu.xml b/app/src/main/res/menu/overflow_menu.xml index 25bcec9..41c31d7 100644 --- a/app/src/main/res/menu/overflow_menu.xml +++ b/app/src/main/res/menu/overflow_menu.xml @@ -1,6 +1,9 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0bf5f10..0b87e1b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,8 @@ TvÄ gemini:// + Enter gemini:// address + Enter search term Open in new tab Copy address About @@ -20,4 +22,6 @@ History Clear history Reload + Submit + Search \ No newline at end of file