diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt
index 94610a6e2..8756e7017 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt
@@ -179,7 +179,7 @@ class Settings {
R.string.controller_axis_vertical,
R.string.controller_axis_horizontal
)
- val dpadTitles = listOf(
+ val dPadTitles = listOf(
R.string.direction_up,
R.string.direction_down,
R.string.direction_left,
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt
index 8a237a14e..99039556b 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt
@@ -4,10 +4,13 @@
package org.citra.citra_emu.features.settings.model.view
+import androidx.annotation.DrawableRes
+
class RunnableSetting(
titleId: Int,
descriptionId: Int,
val isRuntimeRunnable: Boolean,
+ @DrawableRes val iconId: Int = 0,
val runnable: () -> Unit,
val value: (() -> String)? = null
) : SettingsItem(null, titleId, descriptionId) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SubmenuSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SubmenuSetting.kt
index 08e1c6047..c47429cf8 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SubmenuSetting.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SubmenuSetting.kt
@@ -4,9 +4,13 @@
package org.citra.citra_emu.features.settings.model.view
+import androidx.annotation.DrawableRes
+import androidx.annotation.StringRes
+
class SubmenuSetting(
- titleId: Int,
- descriptionId: Int,
+ @StringRes titleId: Int,
+ @StringRes descriptionId: Int,
+ @DrawableRes val iconId: Int,
val menuKey: String
) : SettingsItem(null, titleId, descriptionId) {
override val type = TYPE_SUBMENU
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragment.kt
index 77458cd54..96568a76a 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragment.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragment.kt
@@ -51,15 +51,9 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
settingsAdapter = SettingsAdapter(this, requireActivity())
- val dividerDecoration = MaterialDividerItemDecoration(
- requireContext(),
- LinearLayoutManager.VERTICAL
- )
- dividerDecoration.isLastItemDecorated = false
binding.listSettings.apply {
adapter = settingsAdapter
layoutManager = LinearLayoutManager(activity)
- addItemDecoration(dividerDecoration)
}
fragmentPresenter.onViewCreated(settingsAdapter!!)
@@ -104,10 +98,16 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
private fun setInsets() {
ViewCompat.setOnApplyWindowInsetsListener(
- binding.listSettings
- ) { view: View, windowInsets: WindowInsetsCompat ->
- val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
- view.updatePadding(bottom = insets.bottom)
+ binding.root
+ ) { _: View, windowInsets: WindowInsetsCompat ->
+ val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout())
+
+ binding.listSettings.updatePadding(
+ left = barInsets.left + cutoutInsets.left,
+ right = barInsets.right + cutoutInsets.right,
+ bottom = barInsets.bottom
+ )
windowInsets
}
}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt
index ce10e0056..840ac5aed 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -109,6 +109,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SubmenuSetting(
R.string.preferences_general,
0,
+ R.drawable.ic_general_settings,
Settings.SECTION_CORE
)
)
@@ -116,6 +117,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SubmenuSetting(
R.string.preferences_system,
0,
+ R.drawable.ic_system_settings,
Settings.SECTION_SYSTEM
)
)
@@ -123,6 +125,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SubmenuSetting(
R.string.preferences_camera,
0,
+ R.drawable.ic_camera_settings,
Settings.SECTION_CAMERA
)
)
@@ -130,6 +133,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SubmenuSetting(
R.string.preferences_controls,
0,
+ R.drawable.ic_controls_settings,
Settings.SECTION_CONTROLS
)
)
@@ -137,6 +141,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SubmenuSetting(
R.string.preferences_graphics,
0,
+ R.drawable.ic_graphics,
Settings.SECTION_RENDERER
)
)
@@ -144,6 +149,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SubmenuSetting(
R.string.preferences_audio,
0,
+ R.drawable.ic_audio,
Settings.SECTION_AUDIO
)
)
@@ -151,6 +157,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
SubmenuSetting(
R.string.preferences_debug,
0,
+ R.drawable.ic_code,
Settings.SECTION_DEBUG
)
)
@@ -159,6 +166,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.reset_to_default,
0,
false,
+ R.drawable.ic_restore,
{
ResetSettingsDialogFragment().show(
settingsActivity.supportFragmentManager,
@@ -315,6 +323,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
R.string.console_id,
0,
false,
+ 0,
{ settingsAdapter.onClickRegenerateConsoleId() },
{ "0x${SystemSaveGame.getConsoleId().toHexString().uppercase()}" }
)
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt
index b0e0789c5..2c5743290 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt
@@ -5,6 +5,7 @@
package org.citra.citra_emu.features.settings.ui.viewholder
import android.view.View
+import androidx.core.content.res.ResourcesCompat
import org.citra.citra_emu.NativeLibrary
import org.citra.citra_emu.activities.EmulationActivity
import org.citra.citra_emu.databinding.ListItemSettingBinding
@@ -18,6 +19,19 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
override fun bind(item: SettingsItem) {
setting = item as RunnableSetting
+ if (item.iconId == 0) {
+ binding.icon.visibility = View.GONE
+ } else {
+ binding.icon.visibility = View.VISIBLE
+ binding.icon.setImageDrawable(
+ ResourcesCompat.getDrawable(
+ binding.icon.resources,
+ item.iconId,
+ binding.icon.context.theme
+ )
+ )
+ }
+
binding.textSettingName.setText(item.nameId)
if (item.descriptionId != 0) {
binding.textSettingDescription.setText(item.descriptionId)
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt
index 3098abbff..461221763 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt
@@ -5,6 +5,7 @@
package org.citra.citra_emu.features.settings.ui.viewholder
import android.view.View
+import androidx.core.content.res.ResourcesCompat
import org.citra.citra_emu.databinding.ListItemSettingBinding
import org.citra.citra_emu.features.settings.model.view.SettingsItem
import org.citra.citra_emu.features.settings.model.view.SubmenuSetting
@@ -16,6 +17,18 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd
override fun bind(item: SettingsItem) {
this.item = item as SubmenuSetting
+ if (item.iconId == 0) {
+ binding.icon.visibility = View.GONE
+ } else {
+ binding.icon.visibility = View.VISIBLE
+ binding.icon.setImageDrawable(
+ ResourcesCompat.getDrawable(
+ binding.icon.resources,
+ item.iconId,
+ binding.icon.context.theme
+ )
+ )
+ }
binding.textSettingName.setText(item.nameId)
if (item.descriptionId != 0) {
binding.textSettingDescription.setText(item.descriptionId)
@@ -23,6 +36,7 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd
} else {
binding.textSettingDescription.visibility = View.GONE
}
+ binding.textSettingValue.visibility = View.GONE
}
override fun onClick(clicked: View) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/ViewUtils.kt b/src/android/app/src/main/java/org/citra/citra_emu/utils/ViewUtils.kt
index 7eed05f72..828561579 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/ViewUtils.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/ViewUtils.kt
@@ -5,6 +5,7 @@
package org.citra.citra_emu.utils
import android.view.View
+import android.view.ViewGroup
object ViewUtils {
fun showView(view: View, length: Long = 300) {
diff --git a/src/android/app/src/main/res/drawable/ic_audio.xml b/src/android/app/src/main/res/drawable/ic_audio.xml
new file mode 100644
index 000000000..e306c3b0c
--- /dev/null
+++ b/src/android/app/src/main/res/drawable/ic_audio.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/android/app/src/main/res/drawable/ic_camera_settings.xml b/src/android/app/src/main/res/drawable/ic_camera_settings.xml
new file mode 100644
index 000000000..dcf48ac0f
--- /dev/null
+++ b/src/android/app/src/main/res/drawable/ic_camera_settings.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/src/android/app/src/main/res/drawable/ic_controls_settings.xml b/src/android/app/src/main/res/drawable/ic_controls_settings.xml
new file mode 100644
index 000000000..39dcfc81e
--- /dev/null
+++ b/src/android/app/src/main/res/drawable/ic_controls_settings.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/android/app/src/main/res/drawable/ic_general_settings.xml b/src/android/app/src/main/res/drawable/ic_general_settings.xml
new file mode 100644
index 000000000..0b0cc8700
--- /dev/null
+++ b/src/android/app/src/main/res/drawable/ic_general_settings.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/android/app/src/main/res/drawable/ic_graphics.xml b/src/android/app/src/main/res/drawable/ic_graphics.xml
new file mode 100644
index 000000000..2fdb5a4d6
--- /dev/null
+++ b/src/android/app/src/main/res/drawable/ic_graphics.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/android/app/src/main/res/drawable/ic_restore.xml b/src/android/app/src/main/res/drawable/ic_restore.xml
new file mode 100644
index 000000000..d6d9d4017
--- /dev/null
+++ b/src/android/app/src/main/res/drawable/ic_restore.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/android/app/src/main/res/drawable/ic_system_settings.xml b/src/android/app/src/main/res/drawable/ic_system_settings.xml
new file mode 100644
index 000000000..7701a2bab
--- /dev/null
+++ b/src/android/app/src/main/res/drawable/ic_system_settings.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/android/app/src/main/res/layout/activity_settings.xml b/src/android/app/src/main/res/layout/activity_settings.xml
index 14ae83b04..510c6129c 100644
--- a/src/android/app/src/main/res/layout/activity_settings.xml
+++ b/src/android/app/src/main/res/layout/activity_settings.xml
@@ -35,7 +35,7 @@
android:id="@+id/frame_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginHorizontal="12dp"
+ android:layout_marginHorizontal="0dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+ android:padding="16dp">
+ android:orientation="horizontal">
-
-
-
-
-
+ app:tint="?attr/colorOnSurface" />
+
+
+
+
+
+
+
+
+
+
diff --git a/src/android/app/src/main/res/layout/list_item_setting_switch.xml b/src/android/app/src/main/res/layout/list_item_setting_switch.xml
index cbace0e7f..dc1e82258 100644
--- a/src/android/app/src/main/res/layout/list_item_setting_switch.xml
+++ b/src/android/app/src/main/res/layout/list_item_setting_switch.xml
@@ -8,9 +8,7 @@
android:clickable="true"
android:focusable="true"
android:minHeight="72dp"
- android:paddingVertical="@dimen/spacing_large"
- android:paddingStart="@dimen/spacing_large"
- android:paddingEnd="24dp">
+ android:padding="16dp">
@@ -35,7 +33,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
- android:textSize="16sp"
+ android:textSize="17sp"
app:lineHeight="22dp"
tools:text="@string/frame_limit_enable" />