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{
const val DEFAULT_HOME_CAPSULE = "gemini://tlgs.one"
const val DEFAULT_SEARCH_BASE = "gemini://tlgs.one/search?"
const val FEATURE_CLIENT_CERTS = true

View File

@ -4,7 +4,6 @@ import android.net.Uri
import java.util.*
const val GEM_SCHEME = "gemini://"
const val SEARCH_BASE = "gemini://tlgs.one/search?"
class OmniTerm(private val listener: Listener) {
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
* @param term - User-inputted term
*/
fun input(term: String){
fun input(term: String, searchbase: String?){
when {
term.startsWith(GEM_SCHEME) && term != GEM_SCHEME -> {
listener.request(term)
@ -26,14 +25,14 @@ class OmniTerm(private val listener: Listener) {
}
else -> {
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)
listener.request("$SEARCH_BASE$encoded")
listener.request("$searchbase$encoded")
}

View File

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

View File

@ -65,6 +65,31 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
}
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 ---------------------------------------------
val checkForUpdates = SwitchPreferenceCompat(context)
checkForUpdates.setDefaultValue(true)

View File

@ -46,6 +46,8 @@
<string name="file_saved_to_device">Fichier sauvegardé dans l\'appareil</string>
<string name="configure_buran">Configurer Buran</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="appearance">Apparence</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="configure_buran">Configure Buran</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="appearance">Appearance</string>
<string name="theme">Theme</string>