diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt index ff6270fa87..95841d7863 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt @@ -14,7 +14,7 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.launch -import org.yuzu.yuzu_emu.databinding.CardInstallableBinding +import org.yuzu.yuzu_emu.databinding.CardInstallableIconBinding import org.yuzu.yuzu_emu.databinding.CardSimpleOutlinedBinding import org.yuzu.yuzu_emu.model.GameProperty import org.yuzu.yuzu_emu.model.InstallableProperty @@ -42,7 +42,7 @@ class GamePropertiesAdapter( } else -> InstallablePropertyViewHolder( - CardInstallableBinding.inflate( + CardInstallableIconBinding.inflate( inflater, parent, false @@ -107,13 +107,20 @@ class GamePropertiesAdapter( } } - inner class InstallablePropertyViewHolder(val binding: CardInstallableBinding) : + inner class InstallablePropertyViewHolder(val binding: CardInstallableIconBinding) : GamePropertyViewHolder(binding.root) { override fun bind(property: GameProperty) { val installableProperty = property as InstallableProperty binding.title.setText(installableProperty.titleId) binding.description.setText(installableProperty.descriptionId) + binding.icon.setImageDrawable( + ResourcesCompat.getDrawable( + binding.icon.context.resources, + installableProperty.iconId, + binding.icon.context.theme + ) + ) if (installableProperty.install != null) { binding.buttonInstall.visibility = View.VISIBLE diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt index 6ede3f85c0..b1d3c0040a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt @@ -194,6 +194,7 @@ class GamePropertiesFragment : Fragment() { InstallableProperty( R.string.save_data, R.string.save_data_description, + R.drawable.ic_save, { MessageDialogFragment.newInstance( requireActivity(), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt index bb3df5bd00..0135a95beb 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt @@ -10,17 +10,18 @@ import kotlinx.coroutines.flow.StateFlow interface GameProperty { @get:StringRes val titleId: Int - get() = -1 @get:StringRes val descriptionId: Int - get() = -1 + + @get:DrawableRes + val iconId: Int } data class SubmenuProperty( override val titleId: Int, override val descriptionId: Int, - @DrawableRes val iconId: Int, + override val iconId: Int, val details: (() -> String)? = null, val detailsFlow: StateFlow? = null, val action: () -> Unit @@ -29,6 +30,7 @@ data class SubmenuProperty( data class InstallableProperty( override val titleId: Int, override val descriptionId: Int, + override val iconId: Int, val install: (() -> Unit)? = null, val export: (() -> Unit)? = null ) : GameProperty diff --git a/src/android/app/src/main/res/drawable/ic_save.xml b/src/android/app/src/main/res/drawable/ic_save.xml index a9af3d9cf2..5acc2bbab8 100644 --- a/src/android/app/src/main/res/drawable/ic_save.xml +++ b/src/android/app/src/main/res/drawable/ic_save.xml @@ -1,10 +1,9 @@ + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="?attr/colorControlNormal" + android:pathData="M17,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7l-4,-4zM12,19c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3zM15,9L5,9L5,5h10v4z" /> diff --git a/src/android/app/src/main/res/layout-w1000dp/card_installable_icon.xml b/src/android/app/src/main/res/layout-w1000dp/card_installable_icon.xml new file mode 100644 index 0000000000..59ee1aad30 --- /dev/null +++ b/src/android/app/src/main/res/layout-w1000dp/card_installable_icon.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + +