diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/FxButtonSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/FxButtonSetting.kt new file mode 100644 index 0000000000..3fc999e267 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/FxButtonSetting.kt @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.model.view + +import androidx.annotation.StringRes + +class FxButtonSetting( + @StringRes titleId: Int, + val onClick: () -> Unit +) : SettingsItem(emptySetting, titleId, "", 0, "") { + override val type = TYPE_FX_BUTTON +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/FxShaderCardSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/FxShaderCardSetting.kt index 7e79b902cf..e54ac3b5a0 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/FxShaderCardSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/FxShaderCardSetting.kt @@ -11,12 +11,8 @@ class FxShaderCardSetting( val index: Int, val expanded: Boolean, val uniforms: List, - val canMoveUp: Boolean, - val canMoveDown: Boolean, val onToggle: () -> Unit, val onRemove: () -> Unit, - val onMoveUp: () -> Unit, - val onMoveDown: () -> Unit, val onReset: () -> Unit ) : SettingsItem(emptySetting, 0, titleString, 0, descriptionString) { override val type = TYPE_FX_SHADER diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 45e30bc655..ab2ac7eb42 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -147,6 +147,7 @@ abstract class SettingsItem( const val TYPE_FX_TOOLBAR = 16 const val TYPE_FX_PRESET = 17 const val TYPE_FX_SHADER = 18 + const val TYPE_FX_BUTTON = 19 const val FASTMEM_COMBINED = "fastmem_combined" const val GPU_UNSWIZZLE_COMBINED = "gpu_unswizzle_combined" diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt index fea8d8a2d9..8d47db94e0 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt @@ -23,6 +23,7 @@ import com.google.android.material.timepicker.TimeFormat import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.SettingsNavigationDirections import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding +import org.yuzu.yuzu_emu.databinding.ListItemSettingFxButtonBinding import org.yuzu.yuzu_emu.databinding.ListItemSettingFxPresetBinding import org.yuzu.yuzu_emu.databinding.ListItemSettingFxShaderBinding import org.yuzu.yuzu_emu.databinding.ListItemSettingFxToolbarBinding @@ -130,6 +131,13 @@ class SettingsAdapter( ) } + SettingsItem.TYPE_FX_BUTTON -> { + FxButtonViewHolder( + ListItemSettingFxButtonBinding.inflate(inflater, parent, false), + this + ) + } + else -> { HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index a8193b1fc3..89e0084df0 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -345,10 +345,7 @@ class SettingsFragmentPresenter( if (active.isNotEmpty()) { add( - RunnableSetting( - titleId = R.string.post_processing_preset_reset, - isRunnable = true - ) { + FxButtonSetting(titleId = R.string.post_processing_preset_reset) { NativePostProcessing.applyPreset(active) NativePostProcessing.store() expandedShaderSlots.clear() @@ -382,8 +379,6 @@ class SettingsFragmentPresenter( index = index, expanded = isOpen, uniforms = uniforms, - canMoveUp = index > 0, - canMoveDown = index < chain.size - 1, onToggle = { if (isOpen) { expandedShaderSlots.remove(index) @@ -398,18 +393,6 @@ class SettingsFragmentPresenter( expandedShaderSlots.clear() settingsViewModel.setReloadListAndNotifyDataset(true) }, - onMoveUp = { - NativePostProcessing.move(index, -1) - NativePostProcessing.store() - expandedShaderSlots.clear() - settingsViewModel.setReloadListAndNotifyDataset(true) - }, - onMoveDown = { - NativePostProcessing.move(index, 1) - NativePostProcessing.store() - expandedShaderSlots.clear() - settingsViewModel.setReloadListAndNotifyDataset(true) - }, onReset = { NativePostProcessing.resetValues(index) NativePostProcessing.store() diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/FxButtonViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/FxButtonViewHolder.kt new file mode 100644 index 0000000000..914f96085a --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/FxButtonViewHolder.kt @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.ui.viewholder + +import android.view.View +import org.yuzu.yuzu_emu.databinding.ListItemSettingFxButtonBinding +import org.yuzu.yuzu_emu.features.settings.model.view.FxButtonSetting +import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem +import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter + +class FxButtonViewHolder( + val binding: ListItemSettingFxButtonBinding, + adapter: SettingsAdapter +) : SettingViewHolder(binding.root, adapter) { + private lateinit var setting: FxButtonSetting + + override fun bind(item: SettingsItem) { + setting = item as FxButtonSetting + + binding.fxButton.text = item.title + binding.fxButton.setOnClickListener { setting.onClick.invoke() } + } + + override fun onClick(clicked: View) {} + + override fun onLongClick(clicked: View): Boolean = true +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/FxShaderCardViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/FxShaderCardViewHolder.kt index 4ba003d8a3..fc72f04225 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/FxShaderCardViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/FxShaderCardViewHolder.kt @@ -89,12 +89,6 @@ class FxShaderCardViewHolder( private fun addActions(inflater: LayoutInflater) { val row = ItemSettingFxActionsBinding.inflate(inflater, binding.shaderBody, false) - row.fxMoveUp.isEnabled = setting.canMoveUp - row.fxMoveUp.setOnClickListener { setting.onMoveUp.invoke() } - - row.fxMoveDown.isEnabled = setting.canMoveDown - row.fxMoveDown.setOnClickListener { setting.onMoveDown.invoke() } - row.fxReset.setOnClickListener { setting.onReset.invoke() } binding.shaderBody.addView(row.root) diff --git a/src/android/app/src/main/res/layout/item_setting_fx_actions.xml b/src/android/app/src/main/res/layout/item_setting_fx_actions.xml index d61704eba7..c7df946416 100644 --- a/src/android/app/src/main/res/layout/item_setting_fx_actions.xml +++ b/src/android/app/src/main/res/layout/item_setting_fx_actions.xml @@ -1,41 +1,18 @@ - - - - diff --git a/src/android/app/src/main/res/layout/list_item_setting_fx_button.xml b/src/android/app/src/main/res/layout/list_item_setting_fx_button.xml new file mode 100644 index 0000000000..8d207888cb --- /dev/null +++ b/src/android/app/src/main/res/layout/list_item_setting_fx_button.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index ffabcb85c4..bb00612b07 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -315,9 +315,7 @@ No preset Delete preset Reset preset values - Move up - Move down - Reset to defaults + Reset to default No effects found. Place .fx files in this folder: Frame generation Configure frame generation for this game