mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-30 22:36:46 +08:00 
			
		
		
		
	android: Display setting value in setting list items
This commit is contained in:
		
							parent
							
								
									0d4bf53ad9
								
							
						
					
					
						commit
						89a2d308c3
					
				| @ -25,12 +25,15 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||||||
|             binding.textSettingDescription.setText(item.descriptionId) |             binding.textSettingDescription.setText(item.descriptionId) | ||||||
|             binding.textSettingDescription.visibility = View.VISIBLE |             binding.textSettingDescription.visibility = View.VISIBLE | ||||||
|         } else { |         } else { | ||||||
|             val epochTime = setting.value.toLong() |             binding.textSettingDescription.visibility = View.GONE | ||||||
|             val instant = Instant.ofEpochMilli(epochTime * 1000) |  | ||||||
|             val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) |  | ||||||
|             val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) |  | ||||||
|             binding.textSettingDescription.text = dateFormatter.format(zonedTime) |  | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         binding.textSettingValue.visibility = View.VISIBLE | ||||||
|  |         val epochTime = setting.value.toLong() | ||||||
|  |         val instant = Instant.ofEpochMilli(epochTime * 1000) | ||||||
|  |         val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) | ||||||
|  |         val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) | ||||||
|  |         binding.textSettingValue.text = dateFormatter.format(zonedTime) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     override fun onClick(clicked: View) { |     override fun onClick(clicked: View) { | ||||||
|  | |||||||
| @ -23,6 +23,7 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||||||
|         } else { |         } else { | ||||||
|             binding.textSettingDescription.visibility = View.GONE |             binding.textSettingDescription.visibility = View.GONE | ||||||
|         } |         } | ||||||
|  |         binding.textSettingValue.visibility = View.GONE | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     override fun onClick(clicked: View) { |     override fun onClick(clicked: View) { | ||||||
|  | |||||||
| @ -17,27 +17,30 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||||||
|     override fun bind(item: SettingsItem) { |     override fun bind(item: SettingsItem) { | ||||||
|         setting = item |         setting = item | ||||||
|         binding.textSettingName.setText(item.nameId) |         binding.textSettingName.setText(item.nameId) | ||||||
|         binding.textSettingDescription.visibility = View.VISIBLE |  | ||||||
|         if (item.descriptionId != 0) { |         if (item.descriptionId != 0) { | ||||||
|             binding.textSettingDescription.setText(item.descriptionId) |             binding.textSettingDescription.setText(item.descriptionId) | ||||||
|         } else if (item is SingleChoiceSetting) { |             binding.textSettingDescription.visibility = View.VISIBLE | ||||||
|             val resMgr = binding.textSettingDescription.context.resources |         } else { | ||||||
|  |             binding.textSettingDescription.visibility = View.GONE | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         binding.textSettingValue.visibility = View.VISIBLE | ||||||
|  |         if (item is SingleChoiceSetting) { | ||||||
|  |             val resMgr = binding.textSettingValue.context.resources | ||||||
|             val values = resMgr.getIntArray(item.valuesId) |             val values = resMgr.getIntArray(item.valuesId) | ||||||
|             for (i in values.indices) { |             for (i in values.indices) { | ||||||
|                 if (values[i] == item.selectedValue) { |                 if (values[i] == item.selectedValue) { | ||||||
|                     binding.textSettingDescription.text = resMgr.getStringArray(item.choicesId)[i] |                     binding.textSettingValue.text = resMgr.getStringArray(item.choicesId)[i] | ||||||
|                     return |                     return | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } else if (item is StringSingleChoiceSetting) { |         } else if (item is StringSingleChoiceSetting) { | ||||||
|             for (i in item.values!!.indices) { |             for (i in item.values!!.indices) { | ||||||
|                 if (item.values[i] == item.selectedValue) { |                 if (item.values[i] == item.selectedValue) { | ||||||
|                     binding.textSettingDescription.text = item.choices[i] |                     binding.textSettingValue.text = item.choices[i] | ||||||
|                     return |                     return | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } else { |  | ||||||
|             binding.textSettingDescription.visibility = View.GONE |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ | |||||||
| package org.yuzu.yuzu_emu.features.settings.ui.viewholder | package org.yuzu.yuzu_emu.features.settings.ui.viewholder | ||||||
| 
 | 
 | ||||||
| import android.view.View | import android.view.View | ||||||
|  | import org.yuzu.yuzu_emu.R | ||||||
| import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding | 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.SettingsItem | ||||||
| import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting | import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting | ||||||
| @ -22,6 +23,12 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda | |||||||
|         } else { |         } else { | ||||||
|             binding.textSettingDescription.visibility = View.GONE |             binding.textSettingDescription.visibility = View.GONE | ||||||
|         } |         } | ||||||
|  |         binding.textSettingValue.visibility = View.VISIBLE | ||||||
|  |         binding.textSettingValue.text = String.format( | ||||||
|  |             binding.textSettingValue.context.getString(R.string.value_with_units), | ||||||
|  |             setting.selectedValue, | ||||||
|  |             setting.units | ||||||
|  |         ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     override fun onClick(clicked: View) { |     override fun onClick(clicked: View) { | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd | |||||||
|         } else { |         } else { | ||||||
|             binding.textSettingDescription.visibility = View.GONE |             binding.textSettingDescription.visibility = View.GONE | ||||||
|         } |         } | ||||||
|  |         binding.textSettingValue.visibility = View.GONE | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     override fun onClick(clicked: View) { |     override fun onClick(clicked: View) { | ||||||
|  | |||||||
| @ -1,9 +1,10 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <RelativeLayout | ||||||
|  |     xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||||
|     xmlns:tools="http://schemas.android.com/tools" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="match_parent" |     android:layout_width="match_parent" | ||||||
|     android:layout_height="wrap_content" |     android:layout_height="wrap_content" | ||||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" |  | ||||||
|     android:background="?android:attr/selectableItemBackground" |     android:background="?android:attr/selectableItemBackground" | ||||||
|     android:clickable="true" |     android:clickable="true" | ||||||
|     android:focusable="true" |     android:focusable="true" | ||||||
| @ -11,31 +12,40 @@ | |||||||
|     android:minHeight="72dp" |     android:minHeight="72dp" | ||||||
|     android:padding="@dimen/spacing_large"> |     android:padding="@dimen/spacing_large"> | ||||||
| 
 | 
 | ||||||
|     <com.google.android.material.textview.MaterialTextView |     <LinearLayout | ||||||
|         style="@style/TextAppearance.Material3.HeadlineMedium" |         android:layout_width="match_parent" | ||||||
|         android:id="@+id/text_setting_name" |  | ||||||
|         android:layout_width="0dp" |  | ||||||
|         android:layout_height="wrap_content" |         android:layout_height="wrap_content" | ||||||
|         android:layout_alignParentEnd="true" |         android:orientation="vertical"> | ||||||
|         android:layout_alignParentStart="true" |  | ||||||
|         android:layout_alignParentTop="true" |  | ||||||
|         android:textSize="16sp" |  | ||||||
|         android:textAlignment="viewStart" |  | ||||||
|         app:lineHeight="28dp" |  | ||||||
|         tools:text="Setting Name" /> |  | ||||||
| 
 | 
 | ||||||
|     <TextView |         <com.google.android.material.textview.MaterialTextView | ||||||
|         style="@style/TextAppearance.Material3.BodySmall" |             android:id="@+id/text_setting_name" | ||||||
|         android:id="@+id/text_setting_description" |             style="@style/TextAppearance.Material3.HeadlineMedium" | ||||||
|         android:layout_width="wrap_content" |             android:layout_width="match_parent" | ||||||
|         android:layout_height="wrap_content" |             android:layout_height="wrap_content" | ||||||
|         android:layout_alignParentEnd="true" |             android:textAlignment="viewStart" | ||||||
|         android:layout_alignParentStart="true" |             android:textSize="16sp" | ||||||
|         android:layout_alignStart="@+id/text_setting_name" |             app:lineHeight="22dp" | ||||||
|         android:layout_below="@+id/text_setting_name" |             tools:text="Setting Name" /> | ||||||
|         android:layout_marginTop="@dimen/spacing_small" | 
 | ||||||
|         android:visibility="visible" |         <com.google.android.material.textview.MaterialTextView | ||||||
|         android:textAlignment="viewStart" |             android:id="@+id/text_setting_description" | ||||||
|         tools:text="@string/app_disclaimer" /> |             style="@style/TextAppearance.Material3.BodySmall" | ||||||
|  |             android:layout_width="match_parent" | ||||||
|  |             android:layout_height="wrap_content" | ||||||
|  |             android:layout_marginTop="@dimen/spacing_small" | ||||||
|  |             android:textAlignment="viewStart" | ||||||
|  |             tools:text="@string/app_disclaimer" /> | ||||||
|  | 
 | ||||||
|  |         <com.google.android.material.textview.MaterialTextView | ||||||
|  |             android:id="@+id/text_setting_value" | ||||||
|  |             style="@style/TextAppearance.Material3.LabelMedium" | ||||||
|  |             android:layout_width="match_parent" | ||||||
|  |             android:layout_height="wrap_content" | ||||||
|  |             android:layout_marginTop="@dimen/spacing_small" | ||||||
|  |             android:textAlignment="viewStart" | ||||||
|  |             android:textStyle="bold" | ||||||
|  |             tools:text="1x" /> | ||||||
|  | 
 | ||||||
|  |     </LinearLayout> | ||||||
| 
 | 
 | ||||||
| </RelativeLayout> | </RelativeLayout> | ||||||
|  | |||||||
| @ -149,6 +149,7 @@ | |||||||
|     <string name="frame_limit_slider">Limit speed percent</string> |     <string name="frame_limit_slider">Limit speed percent</string> | ||||||
|     <string name="frame_limit_slider_description">Specifies the percentage to limit emulation speed. 100% is the normal speed. Values higher or lower will increase or decrease the speed limit.</string> |     <string name="frame_limit_slider_description">Specifies the percentage to limit emulation speed. 100% is the normal speed. Values higher or lower will increase or decrease the speed limit.</string> | ||||||
|     <string name="cpu_accuracy">CPU accuracy</string> |     <string name="cpu_accuracy">CPU accuracy</string> | ||||||
|  |     <string name="value_with_units">%1$s%2$s</string> | ||||||
| 
 | 
 | ||||||
|     <!-- System settings strings --> |     <!-- System settings strings --> | ||||||
|     <string name="use_docked_mode">Docked Mode</string> |     <string name="use_docked_mode">Docked Mode</string> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user