Compare commits
No commits in common. "ca46b578f70816b3ed28d31851823afed0f66e14" and "2d66c1f33426b369ce03d2158d8b4a7a1eac7c23" have entirely different histories.
ca46b578f7
...
2d66c1f334
9 changed files with 5 additions and 88 deletions
|
@ -1,16 +1,12 @@
|
||||||
package im.angry.openeuicc.di
|
package im.angry.openeuicc.di
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
|
||||||
import im.angry.openeuicc.ui.EuiccManagementFragment
|
import im.angry.openeuicc.ui.EuiccManagementFragment
|
||||||
import im.angry.openeuicc.ui.NoEuiccPlaceholderFragment
|
import im.angry.openeuicc.ui.NoEuiccPlaceholderFragment
|
||||||
import im.angry.openeuicc.ui.SettingsFragment
|
|
||||||
|
|
||||||
open class DefaultUiComponentFactory : UiComponentFactory {
|
open class DefaultUiComponentFactory : UiComponentFactory {
|
||||||
override fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment =
|
override fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment =
|
||||||
EuiccManagementFragment.newInstance(slotId, portId)
|
EuiccManagementFragment.newInstance(slotId, portId)
|
||||||
|
|
||||||
override fun createNoEuiccPlaceholderFragment(): Fragment = NoEuiccPlaceholderFragment()
|
override fun createNoEuiccPlaceholderFragment(): Fragment = NoEuiccPlaceholderFragment()
|
||||||
|
|
||||||
override fun createSettingsFragment(): Fragment = SettingsFragment()
|
|
||||||
}
|
}
|
|
@ -1,11 +1,9 @@
|
||||||
package im.angry.openeuicc.di
|
package im.angry.openeuicc.di
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
|
||||||
import im.angry.openeuicc.ui.EuiccManagementFragment
|
import im.angry.openeuicc.ui.EuiccManagementFragment
|
||||||
|
|
||||||
interface UiComponentFactory {
|
interface UiComponentFactory {
|
||||||
fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment
|
fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment
|
||||||
fun createNoEuiccPlaceholderFragment(): Fragment
|
fun createNoEuiccPlaceholderFragment(): Fragment
|
||||||
fun createSettingsFragment(): Fragment
|
|
||||||
}
|
}
|
|
@ -4,14 +4,10 @@ import android.os.Bundle
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import im.angry.openeuicc.OpenEuiccApplication
|
|
||||||
import im.angry.openeuicc.common.R
|
import im.angry.openeuicc.common.R
|
||||||
import im.angry.openeuicc.util.*
|
import im.angry.openeuicc.util.*
|
||||||
|
|
||||||
class SettingsActivity: AppCompatActivity() {
|
class SettingsActivity: AppCompatActivity() {
|
||||||
private val appContainer
|
|
||||||
get() = (application as OpenEuiccApplication).appContainer
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
@ -19,9 +15,8 @@ class SettingsActivity: AppCompatActivity() {
|
||||||
setSupportActionBar(requireViewById(R.id.toolbar))
|
setSupportActionBar(requireViewById(R.id.toolbar))
|
||||||
setupToolbarInsets()
|
setupToolbarInsets()
|
||||||
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
|
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
|
||||||
val settingsFragment = appContainer.uiComponentFactory.createSettingsFragment()
|
|
||||||
supportFragmentManager.beginTransaction()
|
supportFragmentManager.beginTransaction()
|
||||||
.replace(R.id.settings_container, settingsFragment)
|
.replace(R.id.settings_container, SettingsFragment())
|
||||||
.commit()
|
.commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package im.angry.openeuicc.ui
|
package im.angry.openeuicc.ui
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
@ -21,7 +20,7 @@ import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
open class SettingsFragment: PreferenceFragmentCompat() {
|
class SettingsFragment: PreferenceFragmentCompat() {
|
||||||
private lateinit var developerPref: PreferenceCategory
|
private lateinit var developerPref: PreferenceCategory
|
||||||
|
|
||||||
// Hidden developer options switch
|
// Hidden developer options switch
|
||||||
|
@ -36,9 +35,9 @@ open class SettingsFragment: PreferenceFragmentCompat() {
|
||||||
|
|
||||||
// Show / hide developer preference based on whether it is enabled
|
// Show / hide developer preference based on whether it is enabled
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
preferenceRepository.developerOptionsEnabledFlow
|
preferenceRepository.developerOptionsEnabledFlow.onEach {
|
||||||
.onEach { developerPref.isVisible = it }
|
developerPref.isVisible = it
|
||||||
.collect()
|
}.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
findPreference<Preference>("pref_info_app_version")?.apply {
|
findPreference<Preference>("pref_info_app_version")?.apply {
|
||||||
|
|
|
@ -72,7 +72,6 @@
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
app:key="pref_info"
|
|
||||||
app:title="@string/pref_info"
|
app:title="@string/pref_info"
|
||||||
app:iconSpaceReserved="false">
|
app:iconSpaceReserved="false">
|
||||||
<Preference
|
<Preference
|
||||||
|
|
|
@ -2,10 +2,8 @@ package im.angry.openeuicc.di
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import im.angry.openeuicc.ui.EuiccManagementFragment
|
import im.angry.openeuicc.ui.EuiccManagementFragment
|
||||||
import im.angry.openeuicc.ui.SettingsFragment
|
|
||||||
import im.angry.openeuicc.ui.UnprivilegedEuiccManagementFragment
|
import im.angry.openeuicc.ui.UnprivilegedEuiccManagementFragment
|
||||||
import im.angry.openeuicc.ui.UnprivilegedNoEuiccPlaceholderFragment
|
import im.angry.openeuicc.ui.UnprivilegedNoEuiccPlaceholderFragment
|
||||||
import im.angry.openeuicc.ui.UnprivilegedSettingsFragment
|
|
||||||
|
|
||||||
class UnprivilegedUiComponentFactory : DefaultUiComponentFactory() {
|
class UnprivilegedUiComponentFactory : DefaultUiComponentFactory() {
|
||||||
override fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment =
|
override fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment =
|
||||||
|
@ -13,7 +11,4 @@ class UnprivilegedUiComponentFactory : DefaultUiComponentFactory() {
|
||||||
|
|
||||||
override fun createNoEuiccPlaceholderFragment(): Fragment =
|
override fun createNoEuiccPlaceholderFragment(): Fragment =
|
||||||
UnprivilegedNoEuiccPlaceholderFragment()
|
UnprivilegedNoEuiccPlaceholderFragment()
|
||||||
|
|
||||||
override fun createSettingsFragment(): Fragment =
|
|
||||||
UnprivilegedSettingsFragment()
|
|
||||||
}
|
}
|
|
@ -1,50 +0,0 @@
|
||||||
package im.angry.openeuicc.ui
|
|
||||||
|
|
||||||
import android.content.ClipData
|
|
||||||
import android.content.ClipboardManager
|
|
||||||
import android.content.pm.PackageManager
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.preference.Preference
|
|
||||||
import androidx.preference.PreferenceCategory
|
|
||||||
import im.angry.easyeuicc.R
|
|
||||||
import im.angry.openeuicc.util.encodeHex
|
|
||||||
import java.security.MessageDigest
|
|
||||||
|
|
||||||
class UnprivilegedSettingsFragment : SettingsFragment() {
|
|
||||||
private val firstSigner by lazy {
|
|
||||||
val packageInfo = requireContext().let {
|
|
||||||
it.packageManager.getPackageInfo(
|
|
||||||
it.packageName,
|
|
||||||
PackageManager.GET_SIGNING_CERTIFICATES,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
packageInfo.signingInfo!!.apkContentsSigners.first().let {
|
|
||||||
MessageDigest.getInstance("SHA-1")
|
|
||||||
.apply { update(it.toByteArray()) }
|
|
||||||
.digest()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
|
||||||
super.onCreatePreferences(savedInstanceState, rootKey)
|
|
||||||
addPreferencesFromResource(R.xml.pref_unprivileged_settings)
|
|
||||||
findPreference<Preference>("pref_info_ara_m")?.apply {
|
|
||||||
moveCategory(this, "pref_info")
|
|
||||||
isVisible = true
|
|
||||||
summary = firstSigner.encodeHex()
|
|
||||||
setOnPreferenceClickListener {
|
|
||||||
requireContext().getSystemService(ClipboardManager::class.java)!!
|
|
||||||
.setPrimaryClip(ClipData.newPlainText("ara-m", summary))
|
|
||||||
Toast.makeText(requireContext(), R.string.toast_ara_m_copied, Toast.LENGTH_SHORT)
|
|
||||||
.show()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun moveCategory(preference: Preference, key: String) {
|
|
||||||
preference.parent!!.removePreference(preference)
|
|
||||||
findPreference<PreferenceCategory>(key)!!.addPreference(preference)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,12 +4,6 @@
|
||||||
<string name="compatibility_check">Compatibility Check</string>
|
<string name="compatibility_check">Compatibility Check</string>
|
||||||
<string name="open_sim_toolkit">Open SIM Toolkit</string>
|
<string name="open_sim_toolkit">Open SIM Toolkit</string>
|
||||||
|
|
||||||
<!-- Settings -->
|
|
||||||
<string name="pref_developer_ara_m" translatable="false">ARA-M SHA-1</string>
|
|
||||||
|
|
||||||
<!-- Toast -->
|
|
||||||
<string name="toast_ara_m_copied">ARA-M SHA-1 copied to clipboard</string>
|
|
||||||
|
|
||||||
<!-- Compatibility Check Descriptions -->
|
<!-- Compatibility Check Descriptions -->
|
||||||
<string name="compatibility_check_system_features">System Features</string>
|
<string name="compatibility_check_system_features">System Features</string>
|
||||||
<string name="compatibility_check_system_features_desc">Whether your device has all the required features for managing removable eUICC cards. For example, basic telephony and OMAPI support.</string>
|
<string name="compatibility_check_system_features_desc">Whether your device has all the required features for managing removable eUICC cards. For example, basic telephony and OMAPI support.</string>
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
|
|
||||||
<Preference
|
|
||||||
app:enableCopying="true"
|
|
||||||
app:iconSpaceReserved="false"
|
|
||||||
app:isPreferenceVisible="false"
|
|
||||||
app:key="pref_info_ara_m"
|
|
||||||
app:title="@string/pref_developer_ara_m" />
|
|
||||||
</PreferenceScreen>
|
|
Loading…
Add table
Reference in a new issue