mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 14:56:40 +08:00 
			
		
		
		
	Merge pull request #13091 from t895/device-renaming
android: Expose device name setting
This commit is contained in:
		
						commit
						4e1fcd4a63
					
				| @ -6,7 +6,8 @@ package org.yuzu.yuzu_emu.features.settings.model | |||||||
| import org.yuzu.yuzu_emu.utils.NativeConfig | import org.yuzu.yuzu_emu.utils.NativeConfig | ||||||
| 
 | 
 | ||||||
| enum class StringSetting(override val key: String) : AbstractStringSetting { | 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) |     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.IntSetting | ||||||
| import org.yuzu.yuzu_emu.features.settings.model.LongSetting | 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.ShortSetting | ||||||
|  | import org.yuzu.yuzu_emu.features.settings.model.StringSetting | ||||||
| import org.yuzu.yuzu_emu.utils.NativeConfig | import org.yuzu.yuzu_emu.utils.NativeConfig | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -90,6 +91,7 @@ abstract class SettingsItem( | |||||||
|         const val TYPE_INPUT = 8 |         const val TYPE_INPUT = 8 | ||||||
|         const val TYPE_INT_SINGLE_CHOICE = 9 |         const val TYPE_INT_SINGLE_CHOICE = 9 | ||||||
|         const val TYPE_INPUT_PROFILE = 10 |         const val TYPE_INPUT_PROFILE = 10 | ||||||
|  |         const val TYPE_STRING_INPUT = 11 | ||||||
| 
 | 
 | ||||||
|         const val FASTMEM_COMBINED = "fastmem_combined" |         const val FASTMEM_COMBINED = "fastmem_combined" | ||||||
| 
 | 
 | ||||||
| @ -108,6 +110,7 @@ abstract class SettingsItem( | |||||||
| 
 | 
 | ||||||
|         // List of all general |         // List of all general | ||||||
|         val settingsItems = HashMap<String, SettingsItem>().apply { |         val settingsItems = HashMap<String, SettingsItem>().apply { | ||||||
|  |             put(StringInputSetting(StringSetting.DEVICE_NAME, titleId = R.string.device_name)) | ||||||
|             put( |             put( | ||||||
|                 SwitchSetting( |                 SwitchSetting( | ||||||
|                     BooleanSetting.RENDERER_USE_SPEED_LIMIT, |                     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) |                 InputProfileViewHolder(ListItemSettingBinding.inflate(inflater), this) | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             SettingsItem.TYPE_STRING_INPUT -> { | ||||||
|  |                 StringInputViewHolder(ListItemSettingBinding.inflate(inflater), this) | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             else -> { |             else -> { | ||||||
|                 HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) |                 HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) | ||||||
|             } |             } | ||||||
| @ -392,6 +396,15 @@ class SettingsAdapter( | |||||||
|         popup.show() |         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 { |     fun onLongClick(item: SettingsItem, position: Int): Boolean { | ||||||
|         SettingsDialogFragment.newInstance( |         SettingsDialogFragment.newInstance( | ||||||
|             settingsViewModel, |             settingsViewModel, | ||||||
|  | |||||||
| @ -14,6 +14,7 @@ import androidx.fragment.app.activityViewModels | |||||||
| import com.google.android.material.dialog.MaterialAlertDialogBuilder | import com.google.android.material.dialog.MaterialAlertDialogBuilder | ||||||
| import com.google.android.material.slider.Slider | import com.google.android.material.slider.Slider | ||||||
| import org.yuzu.yuzu_emu.R | 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.databinding.DialogSliderBinding | ||||||
| import org.yuzu.yuzu_emu.features.input.NativeInput | import org.yuzu.yuzu_emu.features.input.NativeInput | ||||||
| import org.yuzu.yuzu_emu.features.input.model.AnalogDirection | 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.SettingsItem | ||||||
| import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting | 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.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.features.settings.model.view.StringSingleChoiceSetting | ||||||
| import org.yuzu.yuzu_emu.utils.ParamPackage | import org.yuzu.yuzu_emu.utils.ParamPackage | ||||||
| import org.yuzu.yuzu_emu.utils.collect | import org.yuzu.yuzu_emu.utils.collect | ||||||
| @ -37,6 +39,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||||||
|     private val settingsViewModel: SettingsViewModel by activityViewModels() |     private val settingsViewModel: SettingsViewModel by activityViewModels() | ||||||
| 
 | 
 | ||||||
|     private lateinit var sliderBinding: DialogSliderBinding |     private lateinit var sliderBinding: DialogSliderBinding | ||||||
|  |     private lateinit var stringInputBinding: DialogEditTextBinding | ||||||
| 
 | 
 | ||||||
|     override fun onCreate(savedInstanceState: Bundle?) { |     override fun onCreate(savedInstanceState: Bundle?) { | ||||||
|         super.onCreate(savedInstanceState) |         super.onCreate(savedInstanceState) | ||||||
| @ -131,6 +134,18 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||||||
|                     .create() |                     .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 -> { |             SettingsItem.TYPE_STRING_SINGLE_CHOICE -> { | ||||||
|                 val item = settingsViewModel.clickedItem as StringSingleChoiceSetting |                 val item = settingsViewModel.clickedItem as StringSingleChoiceSetting | ||||||
|                 MaterialAlertDialogBuilder(requireContext()) |                 MaterialAlertDialogBuilder(requireContext()) | ||||||
| @ -158,6 +173,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||||||
|     ): View? { |     ): View? { | ||||||
|         return when (type) { |         return when (type) { | ||||||
|             SettingsItem.TYPE_SLIDER -> sliderBinding.root |             SettingsItem.TYPE_SLIDER -> sliderBinding.root | ||||||
|  |             SettingsItem.TYPE_STRING_INPUT -> stringInputBinding.root | ||||||
|             else -> super.onCreateView(inflater, container, savedInstanceState) |             else -> super.onCreateView(inflater, container, savedInstanceState) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @ -200,6 +216,13 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener | |||||||
|                 val sliderSetting = settingsViewModel.clickedItem as SliderSetting |                 val sliderSetting = settingsViewModel.clickedItem as SliderSetting | ||||||
|                 sliderSetting.setSelectedValue(settingsViewModel.sliderProgress.value) |                 sliderSetting.setSelectedValue(settingsViewModel.sliderProgress.value) | ||||||
|             } |             } | ||||||
|  | 
 | ||||||
|  |             is StringInputSetting -> { | ||||||
|  |                 val stringInputSetting = settingsViewModel.clickedItem as StringInputSetting | ||||||
|  |                 stringInputSetting.setSelectedValue( | ||||||
|  |                     (stringInputBinding.editText.text ?: "").toString() | ||||||
|  |                 ) | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|         closeDialog() |         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 | ||||||
| import org.yuzu.yuzu_emu.features.settings.model.Settings.MenuTag | 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.ShortSetting | ||||||
|  | import org.yuzu.yuzu_emu.features.settings.model.StringSetting | ||||||
| import org.yuzu.yuzu_emu.features.settings.model.view.* | import org.yuzu.yuzu_emu.features.settings.model.view.* | ||||||
| import org.yuzu.yuzu_emu.utils.InputHandler | import org.yuzu.yuzu_emu.utils.InputHandler | ||||||
| import org.yuzu.yuzu_emu.utils.NativeConfig | import org.yuzu.yuzu_emu.utils.NativeConfig | ||||||
| @ -153,6 +154,7 @@ class SettingsFragmentPresenter( | |||||||
| 
 | 
 | ||||||
|     private fun addSystemSettings(sl: ArrayList<SettingsItem>) { |     private fun addSystemSettings(sl: ArrayList<SettingsItem>) { | ||||||
|         sl.apply { |         sl.apply { | ||||||
|  |             add(StringSetting.DEVICE_NAME.key) | ||||||
|             add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key) |             add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key) | ||||||
|             add(ShortSetting.RENDERER_SPEED_LIMIT.key) |             add(ShortSetting.RENDERER_SPEED_LIMIT.key) | ||||||
|             add(BooleanSetting.USE_DOCKED_MODE.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> |     <string name="value_with_units">%1$s%2$s</string> | ||||||
| 
 | 
 | ||||||
|     <!-- System settings strings --> |     <!-- System settings strings --> | ||||||
|  |     <string name="device_name">Device name</string> | ||||||
|     <string name="use_docked_mode">Docked Mode</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="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> |     <string name="emulated_region">Emulated region</string> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user