Search engine select

This commit is contained in:
Corewala 2022-04-20 15:28:11 -04:00
parent f0c85315a1
commit 3661c134c4
6 changed files with 44 additions and 7 deletions

View File

@ -6,6 +6,7 @@ class Buran: Application() {
companion object{ companion object{
const val DEFAULT_HOME_CAPSULE = "gemini://tlgs.one" const val DEFAULT_HOME_CAPSULE = "gemini://tlgs.one"
const val DEFAULT_SEARCH_BASE = "gemini://tlgs.one/search?"
const val FEATURE_CLIENT_CERTS = true const val FEATURE_CLIENT_CERTS = true

View File

@ -4,7 +4,6 @@ import android.net.Uri
import java.util.* import java.util.*
const val GEM_SCHEME = "gemini://" const val GEM_SCHEME = "gemini://"
const val SEARCH_BASE = "gemini://tlgs.one/search?"
class OmniTerm(private val listener: Listener) { class OmniTerm(private val listener: Listener) {
val history = ArrayList<OppenURI>() val history = ArrayList<OppenURI>()
@ -15,7 +14,7 @@ class OmniTerm(private val listener: Listener) {
* User input to the 'omni bar' - could be an address or a search term * User input to the 'omni bar' - could be an address or a search term
* @param term - User-inputted term * @param term - User-inputted term
*/ */
fun input(term: String){ fun input(term: String, searchbase: String?){
when { when {
term.startsWith(GEM_SCHEME) && term != GEM_SCHEME -> { term.startsWith(GEM_SCHEME) && term != GEM_SCHEME -> {
listener.request(term) listener.request(term)
@ -26,14 +25,14 @@ class OmniTerm(private val listener: Listener) {
} }
else -> { else -> {
val encoded = Uri.encode(term) val encoded = Uri.encode(term)
listener.request("$SEARCH_BASE$encoded") listener.request("$searchbase$encoded")
} }
} }
} }
fun search(term: String){ fun search(term: String, searchbase: String?){
val encoded = Uri.encode(term) val encoded = Uri.encode(term)
listener.request("$SEARCH_BASE$encoded") listener.request("$searchbase$encoded")
} }

View File

@ -176,7 +176,11 @@ class GemActivity : AppCompatActivity() {
binding.addressEdit.setOnEditorActionListener { _, actionId, _ -> binding.addressEdit.setOnEditorActionListener { _, actionId, _ ->
when (actionId) { when (actionId) {
EditorInfo.IME_ACTION_GO -> { EditorInfo.IME_ACTION_GO -> {
omniTerm.input(binding.addressEdit.text.toString().trim()) val searchbase = prefs.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
)
omniTerm.input(binding.addressEdit.text.toString().trim(), searchbase)
binding.addressEdit.clearFocus() binding.addressEdit.clearFocus()
return@setOnEditorActionListener true return@setOnEditorActionListener true
} }
@ -395,13 +399,17 @@ class GemActivity : AppCompatActivity() {
} }
is GemState.ResponseUnknownHost -> { is GemState.ResponseUnknownHost -> {
runOnUiThread { runOnUiThread {
val searchbase = prefs.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
)
loadingView(false) loadingView(false)
AlertDialog.Builder(this, R.style.AppDialogTheme) AlertDialog.Builder(this, R.style.AppDialogTheme)
.setTitle(R.string.unknown_host_dialog_title) .setTitle(R.string.unknown_host_dialog_title)
.setMessage("Host not found: ${state.uri}\n\nSearch with TLGS instead?") .setMessage("Host not found: ${state.uri}\n\nSearch with TLGS instead?")
.setPositiveButton(getString(R.string.search)) { _, _ -> .setPositiveButton(getString(R.string.search)) { _, _ ->
loadingView(true) loadingView(true)
omniTerm.search(state.uri.toString()) omniTerm.search(state.uri.toString(), searchbase)
} }
.setNegativeButton(getString(R.string.cancel)) { _, _ -> } .setNegativeButton(getString(R.string.cancel)) { _, _ -> }
.show() .show()

View File

@ -65,6 +65,31 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
} }
appCategory.addPreference(homePreference) appCategory.addPreference(homePreference)
//Search ---------------------------------------------
val searchPreference = EditTextPreference(context)
searchPreference.title = getString(R.string.search_engine)
searchPreference.key = "search_base"
searchPreference.dialogTitle = getString(R.string.search_base)
val searchengine = preferenceManager.sharedPreferences.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
)
searchPreference.summary = searchengine
searchPreference.positiveButtonText = getString(R.string.update)
searchPreference.negativeButtonText = getString(R.string.cancel)
searchPreference.title = getString(R.string.search_engine)
searchPreference.setOnPreferenceChangeListener { _, newValue ->
searchPreference.summary = newValue.toString()
true
}
searchPreference.setOnBindEditTextListener{ editText ->
editText.imeOptions = EditorInfo.IME_ACTION_DONE
editText.setSelection(editText.text.toString().length)//Set caret position to end
}
appCategory.addPreference(searchPreference)
//Updates --------------------------------------------- //Updates ---------------------------------------------
val checkForUpdates = SwitchPreferenceCompat(context) val checkForUpdates = SwitchPreferenceCompat(context)
checkForUpdates.setDefaultValue(true) checkForUpdates.setDefaultValue(true)

View File

@ -46,6 +46,8 @@
<string name="file_saved_to_device">Fichier sauvegardé dans l\'appareil</string> <string name="file_saved_to_device">Fichier sauvegardé dans l\'appareil</string>
<string name="configure_buran">Configurer Buran</string> <string name="configure_buran">Configurer Buran</string>
<string name="home_capsule">Capsule d\'accueil</string> <string name="home_capsule">Capsule d\'accueil</string>
<string name="search_engine">Moteur de recherche</string>
<string name="search_base">Base de recherche</string>
<string name="update">Mettre à jour</string> <string name="update">Mettre à jour</string>
<string name="appearance">Apparence</string> <string name="appearance">Apparence</string>
<string name="theme">Thème</string> <string name="theme">Thème</string>

View File

@ -46,6 +46,8 @@
<string name="file_saved_to_device">File saved to device</string> <string name="file_saved_to_device">File saved to device</string>
<string name="configure_buran">Configure Buran</string> <string name="configure_buran">Configure Buran</string>
<string name="home_capsule">Home Capsule</string> <string name="home_capsule">Home Capsule</string>
<string name="search_engine">Search Engine</string>
<string name="search_base">Search Base</string>
<string name="update">Update</string> <string name="update">Update</string>
<string name="appearance">Appearance</string> <string name="appearance">Appearance</string>
<string name="theme">Theme</string> <string name="theme">Theme</string>