mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 18:54:14 +01:00 
			
		
		
		
	android: Add button to use global driver value
This commit is contained in:
		
							parent
							
								
									9e974d4c7e
								
							
						
					
					
						commit
						dac8c4ce4d
					
				| @ -8,6 +8,7 @@ import android.view.LayoutInflater | ||||
| import android.view.View | ||||
| import android.view.ViewGroup | ||||
| import org.yuzu.yuzu_emu.databinding.CardDriverOptionBinding | ||||
| import org.yuzu.yuzu_emu.features.settings.model.StringSetting | ||||
| import org.yuzu.yuzu_emu.model.Driver | ||||
| import org.yuzu.yuzu_emu.model.DriverViewModel | ||||
| import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | ||||
| @ -27,13 +28,17 @@ class DriverAdapter(private val driverViewModel: DriverViewModel) : | ||||
|             binding.apply { | ||||
|                 radioButton.isChecked = model.selected | ||||
|                 root.setOnClickListener { | ||||
|                     selectItem(bindingAdapterPosition) { driverViewModel.onDriverSelected(it) } | ||||
|                     selectItem(bindingAdapterPosition) { | ||||
|                         driverViewModel.onDriverSelected(it) | ||||
|                         driverViewModel.showClearButton(!StringSetting.DRIVER_PATH.global) | ||||
|                     } | ||||
|                 } | ||||
|                 buttonDelete.setOnClickListener { | ||||
|                     removeSelectableItem( | ||||
|                         bindingAdapterPosition | ||||
|                     ) { removedPosition: Int, selectedPosition: Int -> | ||||
|                         driverViewModel.onDriverRemoved(removedPosition, selectedPosition) | ||||
|                         driverViewModel.showClearButton(!StringSetting.DRIVER_PATH.global) | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|  | ||||
| @ -3,6 +3,7 @@ | ||||
| 
 | ||||
| package org.yuzu.yuzu_emu.fragments | ||||
| 
 | ||||
| import android.annotation.SuppressLint | ||||
| import android.os.Bundle | ||||
| import android.view.LayoutInflater | ||||
| import android.view.View | ||||
| @ -13,20 +14,26 @@ import androidx.core.view.WindowInsetsCompat | ||||
| import androidx.core.view.updatePadding | ||||
| import androidx.fragment.app.Fragment | ||||
| import androidx.fragment.app.activityViewModels | ||||
| import androidx.lifecycle.Lifecycle | ||||
| import androidx.lifecycle.lifecycleScope | ||||
| import androidx.lifecycle.repeatOnLifecycle | ||||
| import androidx.navigation.findNavController | ||||
| import androidx.navigation.fragment.navArgs | ||||
| import androidx.recyclerview.widget.GridLayoutManager | ||||
| import com.google.android.material.transition.MaterialSharedAxis | ||||
| import kotlinx.coroutines.Dispatchers | ||||
| import kotlinx.coroutines.launch | ||||
| import kotlinx.coroutines.withContext | ||||
| import org.yuzu.yuzu_emu.R | ||||
| import org.yuzu.yuzu_emu.adapters.DriverAdapter | ||||
| import org.yuzu.yuzu_emu.databinding.FragmentDriverManagerBinding | ||||
| import org.yuzu.yuzu_emu.features.settings.model.StringSetting | ||||
| import org.yuzu.yuzu_emu.model.Driver.Companion.toDriver | ||||
| import org.yuzu.yuzu_emu.model.DriverViewModel | ||||
| import org.yuzu.yuzu_emu.model.HomeViewModel | ||||
| import org.yuzu.yuzu_emu.utils.FileUtil | ||||
| import org.yuzu.yuzu_emu.utils.GpuDriverHelper | ||||
| import org.yuzu.yuzu_emu.utils.NativeConfig | ||||
| import java.io.File | ||||
| import java.io.IOException | ||||
| 
 | ||||
| @ -55,12 +62,43 @@ class DriverManagerFragment : Fragment() { | ||||
|         return binding.root | ||||
|     } | ||||
| 
 | ||||
|     // This is using the correct scope, lint is just acting up | ||||
|     @SuppressLint("UnsafeRepeatOnLifecycleDetector") | ||||
|     override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||||
|         super.onViewCreated(view, savedInstanceState) | ||||
|         homeViewModel.setNavigationVisibility(visible = false, animated = true) | ||||
|         homeViewModel.setStatusBarShadeVisibility(visible = false) | ||||
| 
 | ||||
|         driverViewModel.onOpenDriverManager(args.game) | ||||
|         if (NativeConfig.isPerGameConfigLoaded()) { | ||||
|             binding.toolbarDrivers.inflateMenu(R.menu.menu_driver_manager) | ||||
|             driverViewModel.showClearButton(!StringSetting.DRIVER_PATH.global) | ||||
|             binding.toolbarDrivers.setOnMenuItemClickListener { | ||||
|                 when (it.itemId) { | ||||
|                     R.id.menu_driver_clear -> { | ||||
|                         StringSetting.DRIVER_PATH.global = true | ||||
|                         driverViewModel.updateDriverList() | ||||
|                         (binding.listDrivers.adapter as DriverAdapter) | ||||
|                             .replaceList(driverViewModel.driverList.value) | ||||
|                         driverViewModel.showClearButton(false) | ||||
|                         true | ||||
|                     } | ||||
| 
 | ||||
|                     else -> false | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             viewLifecycleOwner.lifecycleScope.apply { | ||||
|                 launch { | ||||
|                     repeatOnLifecycle(Lifecycle.State.STARTED) { | ||||
|                         driverViewModel.showClearButton.collect { | ||||
|                             binding.toolbarDrivers.menu | ||||
|                                 .findItem(R.id.menu_driver_clear).isVisible = it | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (!driverViewModel.isInteractionAllowed.value) { | ||||
|             DriversLoadingDialogFragment().show( | ||||
| @ -168,6 +206,7 @@ class DriverManagerFragment : Fragment() { | ||||
|                             val adapter = binding.listDrivers.adapter as DriverAdapter | ||||
|                             adapter.addItem(driverData.toDriver()) | ||||
|                             adapter.selectItem(adapter.currentList.indices.last) | ||||
|                             driverViewModel.showClearButton(!StringSetting.DRIVER_PATH.global) | ||||
|                             binding.listDrivers | ||||
|                                 .smoothScrollToPosition(adapter.currentList.indices.last) | ||||
|                         } | ||||
|  | ||||
| @ -9,6 +9,7 @@ import kotlinx.coroutines.Dispatchers | ||||
| import kotlinx.coroutines.flow.MutableStateFlow | ||||
| import kotlinx.coroutines.flow.SharingStarted | ||||
| import kotlinx.coroutines.flow.StateFlow | ||||
| import kotlinx.coroutines.flow.asStateFlow | ||||
| import kotlinx.coroutines.flow.combine | ||||
| import kotlinx.coroutines.flow.stateIn | ||||
| import kotlinx.coroutines.launch | ||||
| @ -46,6 +47,9 @@ class DriverViewModel : ViewModel() { | ||||
|     private val _selectedDriverTitle = MutableStateFlow("") | ||||
|     val selectedDriverTitle: StateFlow<String> get() = _selectedDriverTitle | ||||
| 
 | ||||
|     private val _showClearButton = MutableStateFlow(false) | ||||
|     val showClearButton = _showClearButton.asStateFlow() | ||||
| 
 | ||||
|     private val driversToDelete = mutableListOf<String>() | ||||
| 
 | ||||
|     init { | ||||
| @ -60,7 +64,7 @@ class DriverViewModel : ViewModel() { | ||||
|         _areDriversLoading.value = false | ||||
|     } | ||||
| 
 | ||||
|     private fun updateDriverList() { | ||||
|     fun updateDriverList() { | ||||
|         val selectedDriver = GpuDriverHelper.customDriverSettingData | ||||
|         val newDriverList = mutableListOf( | ||||
|             Driver( | ||||
| @ -81,6 +85,10 @@ class DriverViewModel : ViewModel() { | ||||
|         updateDriverList() | ||||
|     } | ||||
| 
 | ||||
|     fun showClearButton(value: Boolean) { | ||||
|         _showClearButton.value = value | ||||
|     } | ||||
| 
 | ||||
|     fun onDriverSelected(position: Int) { | ||||
|         if (position == 0) { | ||||
|             StringSetting.DRIVER_PATH.setString("") | ||||
|  | ||||
							
								
								
									
										11
									
								
								src/android/app/src/main/res/menu/menu_driver_manager.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/android/app/src/main/res/menu/menu_driver_manager.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||
| 
 | ||||
|     <item | ||||
|         android:id="@+id/menu_driver_clear" | ||||
|         android:icon="@drawable/ic_clear" | ||||
|         android:title="@string/clear" | ||||
|         app:showAsAction="always" /> | ||||
| 
 | ||||
| </menu> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user