mirror of https://git.sr.ht/~oppen/ariane
move set home capsule feature to settings screen
This commit is contained in:
parent
ab6635af69
commit
8e15f09a0c
|
@ -3,6 +3,7 @@ package oppen.ariane.ui
|
||||||
import android.content.ActivityNotFoundException
|
import android.content.ActivityNotFoundException
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.SharedPreferences
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
@ -12,6 +13,7 @@ import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import oppen.ariane.Ariane
|
import oppen.ariane.Ariane
|
||||||
|
@ -97,11 +99,8 @@ class GemActivity : AppCompatActivity() {
|
||||||
|
|
||||||
history = HistoryInterface.default(this)
|
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(
|
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),
|
gemini = Datasource.factory(this),
|
||||||
bookmarks = BookmarksDatasource.getDefault(applicationContext)
|
bookmarks = BookmarksDatasource.getDefault(applicationContext)
|
||||||
){ state ->
|
){ state ->
|
||||||
|
@ -205,11 +204,6 @@ class GemActivity : AppCompatActivity() {
|
||||||
model.request(historyAddress)
|
model.request(historyAddress)
|
||||||
}
|
}
|
||||||
R.id.overflow_menu_about -> AboutDialog.show(this)
|
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 -> {
|
R.id.overflow_menu_settings -> {
|
||||||
startActivity(Intent(this, SettingsActivity::class.java))
|
startActivity(Intent(this, SettingsActivity::class.java))
|
||||||
}
|
}
|
||||||
|
@ -218,8 +212,7 @@ class GemActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.home.setOnClickListener {
|
binding.home.setOnClickListener {
|
||||||
val prefs = getSharedPreferences("oppen.tva.ui.dialogs.set_home", Context.MODE_PRIVATE)
|
val home = PreferenceManager.getDefaultSharedPreferences(this).getString("home_capsule", Ariane.DEFAULT_HOME_CAPSULE)
|
||||||
val home = prefs.getString("home", Ariane.DEFAULT_HOME_CAPSULE)
|
|
||||||
model.request(home!!)
|
model.request(home!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ class BookmarksDialog(
|
||||||
|
|
||||||
//None as yet
|
//None as yet
|
||||||
view.bookmarks_toolbar.inflateMenu(R.menu.add_bookmarks)
|
view.bookmarks_toolbar.inflateMenu(R.menu.add_bookmarks)
|
||||||
view.bookmarks_toolbar.setOnMenuItemClickListener {menuItem ->
|
view.bookmarks_toolbar.setOnMenuItemClickListener {_ ->
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
package oppen.ariane.ui.settings
|
package oppen.ariane.ui.settings
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.preference.Preference
|
import android.text.InputType
|
||||||
import androidx.preference.PreferenceCategory
|
import android.text.Spannable
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import android.text.SpannableString
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
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.security.SecureRandom
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.net.ssl.SSLContext
|
import javax.net.ssl.SSLContext
|
||||||
import javax.net.ssl.SSLSocket
|
import javax.net.ssl.SSLSocket
|
||||||
import javax.net.ssl.SSLSocketFactory
|
import javax.net.ssl.SSLSocketFactory
|
||||||
|
|
||||||
|
|
||||||
class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener {
|
class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener {
|
||||||
|
|
||||||
lateinit var protocols: Array<String>
|
lateinit var protocols: Array<String>
|
||||||
|
@ -19,6 +25,38 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
|
||||||
val context = preferenceManager.context
|
val context = preferenceManager.context
|
||||||
val screen = preferenceManager.createPreferenceScreen(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
|
* TLS Settings
|
||||||
*/
|
*/
|
||||||
|
@ -71,7 +109,9 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
|
||||||
protocols.forEach { protocol ->
|
protocols.forEach { protocol ->
|
||||||
val tlsSwitchKey = "tls_${protocol.toLowerCase(Locale.getDefault())}"
|
val tlsSwitchKey = "tls_${protocol.toLowerCase(Locale.getDefault())}"
|
||||||
if (tlsSwitchKey != key) {
|
if (tlsSwitchKey != key) {
|
||||||
val otherTLSSwitch = preferenceScreen.findPreference<SwitchPreferenceCompat>(tlsSwitchKey)
|
val otherTLSSwitch = preferenceScreen.findPreference<SwitchPreferenceCompat>(
|
||||||
|
tlsSwitchKey
|
||||||
|
)
|
||||||
otherTLSSwitch?.isChecked = false
|
otherTLSSwitch?.isChecked = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,4 +140,21 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
|
||||||
protocol
|
protocol
|
||||||
).apply()
|
).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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,10 +29,6 @@
|
||||||
android:icon="@drawable/vector_link"/>
|
android:icon="@drawable/vector_link"/>
|
||||||
</group>
|
</group>
|
||||||
<group android:id="@+id/other" >
|
<group android:id="@+id/other" >
|
||||||
<item
|
|
||||||
android:id="@+id/overflow_menu_set_home"
|
|
||||||
android:title="@string/set_home"
|
|
||||||
android:icon="@drawable/vector_set_home"/>
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/overflow_menu_settings"
|
android:id="@+id/overflow_menu_settings"
|
||||||
android:title="@string/settings"
|
android:title="@string/settings"
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
<color name="address_background">#2e2e2e</color>
|
<color name="address_background">#2e2e2e</color>
|
||||||
|
|
||||||
<color name="vibrant_stroke">#ffffff</color>
|
<color name="vibrant_stroke">#ffffff</color>
|
||||||
|
<color name="themed_text">#ffffff</color>
|
||||||
<color name="header_background">#1d1d1d</color>
|
<color name="header_background">#1d1d1d</color>
|
||||||
<color name="stroke">#d2d2d2</color>
|
<color name="stroke">#d2d2d2</color>
|
||||||
</resources>
|
</resources>
|
|
@ -9,6 +9,7 @@
|
||||||
<color name="address_background">#dfdfdf</color>
|
<color name="address_background">#dfdfdf</color>
|
||||||
|
|
||||||
<color name="vibrant_stroke">#000000</color>
|
<color name="vibrant_stroke">#000000</color>
|
||||||
|
<color name="themed_text">#000000</color>
|
||||||
<color name="header_background">#eeeeee</color>
|
<color name="header_background">#eeeeee</color>
|
||||||
<color name="stroke">#0d0d0d</color>
|
<color name="stroke">#0d0d0d</color>
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in New Issue