@@ -7,31 +7,37 @@ import android.util.Log
77import android.view.Menu
88import android.view.MenuInflater
99import android.view.MenuItem
10+ import android.view.View
11+ import androidx.core.view.isVisible
1012import androidx.fragment.app.FragmentActivity
11- import androidx.preference.Preference
12- import androidx.preference.PreferenceCategory
1313import androidx.preference.PreferenceFragmentCompat
1414import androidx.preference.children
1515import com.programminghoch10.CodecMod.CodecStore.Companion.DEFAULT_VALUE
16+ import com.programminghoch10.CodecMod.databinding.SettingsActivityBinding
1617
1718class SettingsActivity : FragmentActivity () {
19+ private lateinit var binding: SettingsActivityBinding
20+ val allHiddenByFiltersView get() = binding.allHiddenByFilters
21+ val buttonCategoryDecoders get() = binding.buttonCategoryDecoders
22+ val buttonCategoryEncoders get() = binding.buttonCategoryEncoders
23+
1824 override fun onCreate (savedInstanceState : Bundle ? ) {
1925 super .onCreate(savedInstanceState)
20- setContentView(R .layout.settings_activity)
26+ binding = SettingsActivityBinding .inflate(layoutInflater, null , false )
27+ setContentView(binding.root)
2128 if (savedInstanceState == null ) {
2229 supportFragmentManager.beginTransaction().replace(R .id.settings, SettingsFragment ()).commit()
2330 }
2431 actionBar?.setDisplayHomeAsUpEnabled(supportFragmentManager.backStackEntryCount > 0 )
32+ buttonCategoryDecoders.isActivated = true
33+ buttonCategoryEncoders.isActivated = false
2534 }
2635
2736 class SettingsFragment : PreferenceFragmentCompat () {
2837 lateinit var menu: Menu
38+ val activity get() = requireActivity() as SettingsActivity
2939
30- val decodersPreferenceCategory get() = findPreference<PreferenceCategory >(" category_decoders" )!!
31- val encodersPreferenceCategory get() = findPreference<PreferenceCategory >(" category_encoders" )!!
32- val allHiddenByFiltersPreference get() = findPreference<Preference >(" allHiddenByFilters" )!!
33-
34- val allPreferences get() = (encodersPreferenceCategory.children + decodersPreferenceCategory.children).filterIsInstance(MediaCodecPreference ::class .java)
40+ val allMediaCodecPreferences get() = preferenceScreen.children.filterIsInstance(MediaCodecPreference ::class .java)
3541
3642 override fun onCreateOptionsMenu (menu : Menu , inflater : MenuInflater ) {
3743 inflater.inflate(R .menu.settings_options, menu)
@@ -55,35 +61,45 @@ class SettingsActivity : FragmentActivity() {
5561 }
5662 if (item.itemId in listOf (R .id.enable_all_visible, R .id.disable_all_visible)) {
5763 val checked = item.itemId == R .id.enable_all_visible
58- allPreferences .forEach { it.isChecked = checked }
64+ allMediaCodecPreferences.filter { it.isVisible } .forEach { it.isChecked = checked }
5965 return true
6066 }
6167 if (item.itemId == R .id.reset_configuration) {
62- allPreferences .forEach { it.isChecked = DEFAULT_VALUE }
68+ allMediaCodecPreferences .forEach { it.isChecked = DEFAULT_VALUE }
6369 return true
6470 }
6571 return super .onOptionsItemSelected(item)
6672 }
6773
6874 fun reevaluateFilters () {
6975 val filterSpec = MediaCodecPreference .FilterSpec (
76+ activity.buttonCategoryEncoders.isActivated,
77+ activity.buttonCategoryDecoders.isActivated,
7078 menu.findItem(R .id.show_aliases).isChecked,
7179 menu.findItem(R .id.show_video_codecs).isChecked,
7280 menu.findItem(R .id.show_audio_codecs).isChecked,
7381 menu.findItem(R .id.show_hardware_codecs).isChecked,
7482 menu.findItem(R .id.show_software_codecs).isChecked,
7583 )
7684 Log .d(this ::class .java.simpleName, " reevaluateFilters: $filterSpec " )
77- allPreferences .forEach { it.setFilterSpec(filterSpec) }
78- allHiddenByFiltersPreference. isVisible = allPreferences .all { ! it.isVisible }
85+ allMediaCodecPreferences .forEach { it.setFilterSpec(filterSpec) }
86+ activity.allHiddenByFiltersView. isVisible = allMediaCodecPreferences .all { ! it.isVisible }
7987 }
8088
8189 override fun onCreatePreferences (savedInstanceState : Bundle ? , rootKey : String? ) {
82- setPreferencesFromResource( R .xml.root_preferences, rootKey )
90+ preferenceScreen = preferenceManager.createPreferenceScreen(requireContext() )
8391 setHasOptionsMenu(true )
84- // getPreferenceManager().setSharedPreferencesName("codecs");
8592 val codecStore = CodecStore (requireContext())
8693
94+ val onCategoryChangeListener = View .OnClickListener {
95+ activity.buttonCategoryDecoders.isActivated = false
96+ activity.buttonCategoryEncoders.isActivated = false
97+ it.isActivated = true
98+ reevaluateFilters()
99+ }
100+ activity.buttonCategoryDecoders.setOnClickListener(onCategoryChangeListener)
101+ activity.buttonCategoryEncoders.setOnClickListener(onCategoryChangeListener)
102+
87103 var mediaCodecs: List <MediaCodecInfoWrapper >
88104 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .LOLLIPOP ) {
89105 val mediaCodecList = MediaCodecList (MediaCodecList .ALL_CODECS )
@@ -101,8 +117,7 @@ class SettingsActivity : FragmentActivity() {
101117 for (mediaCodecInfo in mediaCodecs) {
102118 val preference = MediaCodecPreference (requireContext(), codecStore, mediaCodecInfo)
103119 preference.isIconSpaceReserved = false
104- val preferenceCategory = if (mediaCodecInfo.isEncoder) encodersPreferenceCategory else decodersPreferenceCategory
105- preferenceCategory.addPreference(preference)
120+ preferenceScreen.addPreference(preference)
106121 }
107122 }
108123 }
0 commit comments