From affa99e8f26a1e95b030f97496cba3d95ce0af8a Mon Sep 17 00:00:00 2001 From: Corewala Date: Sat, 9 Jul 2022 18:38:31 -0400 Subject: [PATCH] Added HTTP proxy to settings It doesn't do anything yet. Great feature I know. --- .../buran/ui/settings/SettingsFragment.kt | 44 +++++++++++++++++++ app/src/main/res/values-fr/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 3 files changed, 48 insertions(+) diff --git a/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt b/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt index 8b48bb7..e77e5c4 100644 --- a/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt @@ -191,6 +191,50 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang showInlineImages.title = getString(R.string.show_inline_images) webCategory.addPreference(showInlineImages) + val httpGeminiProxy = EditTextPreference(context) + httpGeminiProxy.title = getString(R.string.http_proxy) + httpGeminiProxy.key = "http_proxy" + httpGeminiProxy.dialogTitle = getString(R.string.http_proxy) + + val httpProxy = preferenceManager.sharedPreferences.getString( + "http_proxy", + null + )?.trim() + + httpGeminiProxy.summary = if(httpProxy.isNullOrEmpty()){ + getString(R.string.no_http_proxy_set) + }else if( + !httpProxy.startsWith("gemini://") + or httpProxy.contains(" ") + or !httpProxy.contains(".") + ){ + getString(R.string.not_valid_address) + }else{ + httpProxy + } + + httpGeminiProxy.positiveButtonText = getString(R.string.update) + httpGeminiProxy.negativeButtonText = getString(R.string.cancel) + httpGeminiProxy.setOnPreferenceChangeListener { _, newValue -> + val newHomecapsule = newValue.toString().trim() + httpGeminiProxy.summary = if(newHomecapsule.isNullOrEmpty()){ + getString(R.string.no_http_proxy_set) + }else if( + !newHomecapsule.startsWith("gemini://") + or newHomecapsule.contains(" ") + or !newHomecapsule.contains(".") + ){ + getString(R.string.not_valid_address) + }else{ + newHomecapsule + } + true + } + httpGeminiProxy.setOnBindEditTextListener{ editText -> + editText.imeOptions = EditorInfo.IME_ACTION_DONE + editText.setSelection(editText.text.toString().length)//Set caret position to end + } + webCategory.addPreference(httpGeminiProxy) } private fun buildAppearanceSection(context: Context?, appCategory: PreferenceCategory) { diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 57b597f..9235283 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -66,6 +66,8 @@ Contenu Web Ouvrir les sites web en interne en utilisant des \'Onglets Personnalisés\', plutôt que d\'utiliser le navigateur par défaut. Cela pourrait vous aider à rester dans le Geminispace plutôt que d\'être distrait·e par le vaste web. Cela requiert un navigateur par défaut compatible. Ouvrir en interne + Mandataire HTTP + Pas de mandataire HTTP Images locales en ligne Seuls les magasins de clés client PKCS12 sont actuellement supportés. Certificat Client diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2b6b161..24b2fb3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -66,6 +66,8 @@ Web Content Open websites internally using \'Custom Tabs\', instead of using the default browser. This might help you stay in Geminispace instead of being distracted by the wider web. Requires compatible default browser. Open internally + HTTP proxy + No HTTP proxy set Inline local images Only PKCS12 client keystores are currently supported. Client Certificate