mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Merge pull request #13091 from t895/device-renaming
android: Expose device name setting
This commit is contained in:
		@@ -6,7 +6,8 @@ package org.yuzu.yuzu_emu.features.settings.model
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.NativeConfig
 | 
			
		||||
 | 
			
		||||
enum class StringSetting(override val key: String) : AbstractStringSetting {
 | 
			
		||||
    DRIVER_PATH("driver_path");
 | 
			
		||||
    DRIVER_PATH("driver_path"),
 | 
			
		||||
    DEVICE_NAME("device_name");
 | 
			
		||||
 | 
			
		||||
    override fun getString(needsGlobal: Boolean): String = NativeConfig.getString(key, needsGlobal)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ import org.yuzu.yuzu_emu.features.settings.model.ByteSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.IntSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.LongSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.NativeConfig
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -90,6 +91,7 @@ abstract class SettingsItem(
 | 
			
		||||
        const val TYPE_INPUT = 8
 | 
			
		||||
        const val TYPE_INT_SINGLE_CHOICE = 9
 | 
			
		||||
        const val TYPE_INPUT_PROFILE = 10
 | 
			
		||||
        const val TYPE_STRING_INPUT = 11
 | 
			
		||||
 | 
			
		||||
        const val FASTMEM_COMBINED = "fastmem_combined"
 | 
			
		||||
 | 
			
		||||
@@ -108,6 +110,7 @@ abstract class SettingsItem(
 | 
			
		||||
 | 
			
		||||
        // List of all general
 | 
			
		||||
        val settingsItems = HashMap<String, SettingsItem>().apply {
 | 
			
		||||
            put(StringInputSetting(StringSetting.DEVICE_NAME, titleId = R.string.device_name))
 | 
			
		||||
            put(
 | 
			
		||||
                SwitchSetting(
 | 
			
		||||
                    BooleanSetting.RENDERER_USE_SPEED_LIMIT,
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,22 @@
 | 
			
		||||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
package org.yuzu.yuzu_emu.features.settings.model.view
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.StringRes
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting
 | 
			
		||||
 | 
			
		||||
class StringInputSetting(
 | 
			
		||||
    setting: AbstractStringSetting,
 | 
			
		||||
    @StringRes titleId: Int = 0,
 | 
			
		||||
    titleString: String = "",
 | 
			
		||||
    @StringRes descriptionId: Int = 0,
 | 
			
		||||
    descriptionString: String = ""
 | 
			
		||||
) : SettingsItem(setting, titleId, titleString, descriptionId, descriptionString) {
 | 
			
		||||
    override val type = TYPE_STRING_INPUT
 | 
			
		||||
 | 
			
		||||
    fun getSelectedValue(needsGlobal: Boolean = false) = setting.getValueAsString(needsGlobal)
 | 
			
		||||
 | 
			
		||||
    fun setSelectedValue(selection: String) =
 | 
			
		||||
        (setting as AbstractStringSetting).setString(selection)
 | 
			
		||||
}
 | 
			
		||||
@@ -85,6 +85,10 @@ class SettingsAdapter(
 | 
			
		||||
                InputProfileViewHolder(ListItemSettingBinding.inflate(inflater), this)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            SettingsItem.TYPE_STRING_INPUT -> {
 | 
			
		||||
                StringInputViewHolder(ListItemSettingBinding.inflate(inflater), this)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            else -> {
 | 
			
		||||
                HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this)
 | 
			
		||||
            }
 | 
			
		||||
@@ -392,6 +396,15 @@ class SettingsAdapter(
 | 
			
		||||
        popup.show()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun onStringInputClick(item: StringInputSetting, position: Int) {
 | 
			
		||||
        SettingsDialogFragment.newInstance(
 | 
			
		||||
            settingsViewModel,
 | 
			
		||||
            item,
 | 
			
		||||
            SettingsItem.TYPE_STRING_INPUT,
 | 
			
		||||
            position
 | 
			
		||||
        ).show(fragment.childFragmentManager, SettingsDialogFragment.TAG)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun onLongClick(item: SettingsItem, position: Int): Boolean {
 | 
			
		||||
        SettingsDialogFragment.newInstance(
 | 
			
		||||
            settingsViewModel,
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ import androidx.fragment.app.activityViewModels
 | 
			
		||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
 | 
			
		||||
import com.google.android.material.slider.Slider
 | 
			
		||||
import org.yuzu.yuzu_emu.R
 | 
			
		||||
import org.yuzu.yuzu_emu.databinding.DialogEditTextBinding
 | 
			
		||||
import org.yuzu.yuzu_emu.databinding.DialogSliderBinding
 | 
			
		||||
import org.yuzu.yuzu_emu.features.input.NativeInput
 | 
			
		||||
import org.yuzu.yuzu_emu.features.input.model.AnalogDirection
 | 
			
		||||
@@ -23,6 +24,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.IntSingleChoiceSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.StringInputSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.ParamPackage
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.collect
 | 
			
		||||
@@ -37,6 +39,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
 | 
			
		||||
    private val settingsViewModel: SettingsViewModel by activityViewModels()
 | 
			
		||||
 | 
			
		||||
    private lateinit var sliderBinding: DialogSliderBinding
 | 
			
		||||
    private lateinit var stringInputBinding: DialogEditTextBinding
 | 
			
		||||
 | 
			
		||||
    override fun onCreate(savedInstanceState: Bundle?) {
 | 
			
		||||
        super.onCreate(savedInstanceState)
 | 
			
		||||
@@ -131,6 +134,18 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
 | 
			
		||||
                    .create()
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            SettingsItem.TYPE_STRING_INPUT -> {
 | 
			
		||||
                stringInputBinding = DialogEditTextBinding.inflate(layoutInflater)
 | 
			
		||||
                val item = settingsViewModel.clickedItem as StringInputSetting
 | 
			
		||||
                stringInputBinding.editText.setText(item.getSelectedValue())
 | 
			
		||||
                MaterialAlertDialogBuilder(requireContext())
 | 
			
		||||
                    .setTitle(item.title)
 | 
			
		||||
                    .setView(stringInputBinding.root)
 | 
			
		||||
                    .setPositiveButton(android.R.string.ok, this)
 | 
			
		||||
                    .setNegativeButton(android.R.string.cancel, defaultCancelListener)
 | 
			
		||||
                    .create()
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            SettingsItem.TYPE_STRING_SINGLE_CHOICE -> {
 | 
			
		||||
                val item = settingsViewModel.clickedItem as StringSingleChoiceSetting
 | 
			
		||||
                MaterialAlertDialogBuilder(requireContext())
 | 
			
		||||
@@ -158,6 +173,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
 | 
			
		||||
    ): View? {
 | 
			
		||||
        return when (type) {
 | 
			
		||||
            SettingsItem.TYPE_SLIDER -> sliderBinding.root
 | 
			
		||||
            SettingsItem.TYPE_STRING_INPUT -> stringInputBinding.root
 | 
			
		||||
            else -> super.onCreateView(inflater, container, savedInstanceState)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -200,6 +216,13 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
 | 
			
		||||
                val sliderSetting = settingsViewModel.clickedItem as SliderSetting
 | 
			
		||||
                sliderSetting.setSelectedValue(settingsViewModel.sliderProgress.value)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            is StringInputSetting -> {
 | 
			
		||||
                val stringInputSetting = settingsViewModel.clickedItem as StringInputSetting
 | 
			
		||||
                stringInputSetting.setSelectedValue(
 | 
			
		||||
                    (stringInputBinding.editText.text ?: "").toString()
 | 
			
		||||
                )
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        closeDialog()
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ import org.yuzu.yuzu_emu.features.settings.model.LongSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.Settings
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.Settings.MenuTag
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.*
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.InputHandler
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.NativeConfig
 | 
			
		||||
@@ -153,6 +154,7 @@ class SettingsFragmentPresenter(
 | 
			
		||||
 | 
			
		||||
    private fun addSystemSettings(sl: ArrayList<SettingsItem>) {
 | 
			
		||||
        sl.apply {
 | 
			
		||||
            add(StringSetting.DEVICE_NAME.key)
 | 
			
		||||
            add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key)
 | 
			
		||||
            add(ShortSetting.RENDERER_SPEED_LIMIT.key)
 | 
			
		||||
            add(BooleanSetting.USE_DOCKED_MODE.key)
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,45 @@
 | 
			
		||||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
package org.yuzu.yuzu_emu.features.settings.ui.viewholder
 | 
			
		||||
 | 
			
		||||
import android.view.View
 | 
			
		||||
import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.view.StringInputSetting
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
 | 
			
		||||
 | 
			
		||||
class StringInputViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
 | 
			
		||||
    SettingViewHolder(binding.root, adapter) {
 | 
			
		||||
    private lateinit var setting: StringInputSetting
 | 
			
		||||
 | 
			
		||||
    override fun bind(item: SettingsItem) {
 | 
			
		||||
        setting = item as StringInputSetting
 | 
			
		||||
        binding.textSettingName.text = setting.title
 | 
			
		||||
        binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
 | 
			
		||||
        binding.textSettingDescription.text = setting.description
 | 
			
		||||
        binding.textSettingValue.setVisible(true)
 | 
			
		||||
        binding.textSettingValue.text = setting.getSelectedValue()
 | 
			
		||||
 | 
			
		||||
        binding.buttonClear.setVisible(setting.clearable)
 | 
			
		||||
        binding.buttonClear.setOnClickListener {
 | 
			
		||||
            adapter.onClearClick(setting, bindingAdapterPosition)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        setStyle(setting.isEditable, binding)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onClick(clicked: View) {
 | 
			
		||||
        if (setting.isEditable) {
 | 
			
		||||
            adapter.onStringInputClick(setting, bindingAdapterPosition)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onLongClick(clicked: View): Boolean {
 | 
			
		||||
        if (setting.isEditable) {
 | 
			
		||||
            return adapter.onLongClick(setting, bindingAdapterPosition)
 | 
			
		||||
        }
 | 
			
		||||
        return false
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -209,6 +209,7 @@
 | 
			
		||||
    <string name="value_with_units">%1$s%2$s</string>
 | 
			
		||||
 | 
			
		||||
    <!-- System settings strings -->
 | 
			
		||||
    <string name="device_name">Device name</string>
 | 
			
		||||
    <string name="use_docked_mode">Docked Mode</string>
 | 
			
		||||
    <string name="use_docked_mode_description">Increases resolution, decreasing performance. Handheld Mode is used when disabled, lowering resolution and increasing performance.</string>
 | 
			
		||||
    <string name="emulated_region">Emulated region</string>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user