mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 06:46: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 | ||||
| 
 | ||||
| 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> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user