From 8e15f09a0ccedc1d5fac98f4b2fa9978d9a53c21 Mon Sep 17 00:00:00 2001 From: Jonathan Fisher Date: Wed, 11 Nov 2020 15:22:33 +0000 Subject: [PATCH] move set home capsule feature to settings screen --- .../main/java/oppen/ariane/ui/GemActivity.kt | 15 ++--- .../ariane/ui/bookmarks/BookmarksDialog.kt | 2 +- .../ariane/ui/settings/SettingsFragment.kt | 67 +++++++++++++++++-- app/src/main/res/menu/overflow_menu.xml | 4 -- app/src/main/res/values-night/colors.xml | 1 + app/src/main/res/values/colors.xml | 1 + 6 files changed, 69 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/oppen/ariane/ui/GemActivity.kt b/app/src/main/java/oppen/ariane/ui/GemActivity.kt index 678fc6b..ac7a216 100644 --- a/app/src/main/java/oppen/ariane/ui/GemActivity.kt +++ b/app/src/main/java/oppen/ariane/ui/GemActivity.kt @@ -3,6 +3,7 @@ package oppen.ariane.ui import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent +import android.content.SharedPreferences import android.media.MediaPlayer import android.net.Uri import android.os.Build @@ -12,6 +13,7 @@ import androidx.activity.viewModels import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil +import androidx.preference.PreferenceManager import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.snackbar.Snackbar import oppen.ariane.Ariane @@ -97,11 +99,8 @@ class GemActivity : AppCompatActivity() { history = HistoryInterface.default(this) - val prefs = getSharedPreferences("oppen.tva.ui.dialogs.set_home", Context.MODE_PRIVATE) - val home = prefs.getString("home", Ariane.DEFAULT_HOME_CAPSULE) - model.initialise( - home = home ?: Ariane.DEFAULT_HOME_CAPSULE, + home = PreferenceManager.getDefaultSharedPreferences(this).getString("home_capsule", Ariane.DEFAULT_HOME_CAPSULE) ?: Ariane.DEFAULT_HOME_CAPSULE, gemini = Datasource.factory(this), bookmarks = BookmarksDatasource.getDefault(applicationContext) ){ state -> @@ -205,11 +204,6 @@ class GemActivity : AppCompatActivity() { model.request(historyAddress) } R.id.overflow_menu_about -> AboutDialog.show(this) - R.id.overflow_menu_set_home -> { - SetHomeDialog.show(this, binding.addressEdit.text.toString()) { - showAlert("Home capsule updated") - } - } R.id.overflow_menu_settings -> { startActivity(Intent(this, SettingsActivity::class.java)) } @@ -218,8 +212,7 @@ class GemActivity : AppCompatActivity() { } binding.home.setOnClickListener { - val prefs = getSharedPreferences("oppen.tva.ui.dialogs.set_home", Context.MODE_PRIVATE) - val home = prefs.getString("home", Ariane.DEFAULT_HOME_CAPSULE) + val home = PreferenceManager.getDefaultSharedPreferences(this).getString("home_capsule", Ariane.DEFAULT_HOME_CAPSULE) model.request(home!!) } diff --git a/app/src/main/java/oppen/ariane/ui/bookmarks/BookmarksDialog.kt b/app/src/main/java/oppen/ariane/ui/bookmarks/BookmarksDialog.kt index 5f881ae..06ff9d3 100644 --- a/app/src/main/java/oppen/ariane/ui/bookmarks/BookmarksDialog.kt +++ b/app/src/main/java/oppen/ariane/ui/bookmarks/BookmarksDialog.kt @@ -35,7 +35,7 @@ class BookmarksDialog( //None as yet view.bookmarks_toolbar.inflateMenu(R.menu.add_bookmarks) - view.bookmarks_toolbar.setOnMenuItemClickListener {menuItem -> + view.bookmarks_toolbar.setOnMenuItemClickListener {_ -> true } diff --git a/app/src/main/java/oppen/ariane/ui/settings/SettingsFragment.kt b/app/src/main/java/oppen/ariane/ui/settings/SettingsFragment.kt index a6c2784..18af243 100644 --- a/app/src/main/java/oppen/ariane/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/oppen/ariane/ui/settings/SettingsFragment.kt @@ -1,16 +1,22 @@ package oppen.ariane.ui.settings import android.os.Bundle -import androidx.preference.Preference -import androidx.preference.PreferenceCategory -import androidx.preference.PreferenceFragmentCompat -import androidx.preference.SwitchPreferenceCompat +import android.text.InputType +import android.text.Spannable +import android.text.SpannableString +import android.text.style.ForegroundColorSpan +import android.view.inputmethod.EditorInfo +import android.widget.EditText +import androidx.core.content.ContextCompat +import androidx.preference.* +import oppen.ariane.Ariane import java.security.SecureRandom import java.util.* import javax.net.ssl.SSLContext import javax.net.ssl.SSLSocket import javax.net.ssl.SSLSocketFactory + class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener { lateinit var protocols: Array @@ -19,6 +25,38 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang val context = preferenceManager.context val screen = preferenceManager.createPreferenceScreen(context) + /** + * Ariane App Settings + */ + val appCategory = PreferenceCategory(context) + appCategory.key = "app_category" + appCategory.title = "Configure Ariane" + screen.addPreference(appCategory) + + //Home + val homePreference = EditTextPreference(context) + homePreference.title = "Home Capsule" + homePreference.key = "home_capsule" + + val homecapsule = preferenceManager.sharedPreferences.getString( + "home_capsule", + Ariane.DEFAULT_HOME_CAPSULE + ) + homePreference.summary = homecapsule + + homePreference.positiveButtonText = getThemedSpan("Update") + homePreference.negativeButtonText = getThemedSpan("Cancel") + homePreference.title = getThemedSpan("Home Capsule") + homePreference.setOnPreferenceChangeListener { _, newValue -> + homePreference.summary = newValue.toString() + true + } + homePreference.setOnBindEditTextListener{ editText -> + editText.imeOptions = EditorInfo.IME_ACTION_DONE + editText.setSelection(editText.text.toString().length)//Set caret position to end + } + appCategory.addPreference(homePreference) + /** * TLS Settings */ @@ -71,7 +109,9 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang protocols.forEach { protocol -> val tlsSwitchKey = "tls_${protocol.toLowerCase(Locale.getDefault())}" if (tlsSwitchKey != key) { - val otherTLSSwitch = preferenceScreen.findPreference(tlsSwitchKey) + val otherTLSSwitch = preferenceScreen.findPreference( + tlsSwitchKey + ) otherTLSSwitch?.isChecked = false } } @@ -100,4 +140,21 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang protocol ).apply() } + + /** + * Unfortunately it doesn't look like EditTextPreference supports Day/Night theme + * or else is otherwise broken. Use Spannable to set a suitable text colour for the dialog buttons + */ + private fun getThemedSpan(text: String): Spannable{ + val textSpan = SpannableString(text) + textSpan.setSpan( + ForegroundColorSpan( + ContextCompat.getColor( + requireContext(), + oppen.ariane.R.color.themed_text + ) + ), 0, text.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + return textSpan + } } diff --git a/app/src/main/res/menu/overflow_menu.xml b/app/src/main/res/menu/overflow_menu.xml index 60501fe..f6a18a6 100644 --- a/app/src/main/res/menu/overflow_menu.xml +++ b/app/src/main/res/menu/overflow_menu.xml @@ -29,10 +29,6 @@ android:icon="@drawable/vector_link"/> - #2e2e2e #ffffff + #ffffff #1d1d1d #d2d2d2 \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f33ab70..315ee35 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,6 +9,7 @@ #dfdfdf #000000 + #000000 #eeeeee #0d0d0d \ No newline at end of file