diff options
31 files changed, 166 insertions, 265 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/DriverAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/DriverAdapter.kt index f218c76ef..50663ad91 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/DriverAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/DriverAdapter.kt | |||
| @@ -3,15 +3,15 @@ | |||
| 3 | 3 | ||
| 4 | package org.yuzu.yuzu_emu.adapters | 4 | package org.yuzu.yuzu_emu.adapters |
| 5 | 5 | ||
| 6 | import android.text.TextUtils | ||
| 7 | import android.view.LayoutInflater | 6 | import android.view.LayoutInflater |
| 8 | import android.view.View | ||
| 9 | import android.view.ViewGroup | 7 | import android.view.ViewGroup |
| 10 | import org.yuzu.yuzu_emu.R | 8 | import org.yuzu.yuzu_emu.R |
| 11 | import org.yuzu.yuzu_emu.databinding.CardDriverOptionBinding | 9 | import org.yuzu.yuzu_emu.databinding.CardDriverOptionBinding |
| 12 | import org.yuzu.yuzu_emu.features.settings.model.StringSetting | 10 | import org.yuzu.yuzu_emu.features.settings.model.StringSetting |
| 13 | import org.yuzu.yuzu_emu.model.Driver | 11 | import org.yuzu.yuzu_emu.model.Driver |
| 14 | import org.yuzu.yuzu_emu.model.DriverViewModel | 12 | import org.yuzu.yuzu_emu.model.DriverViewModel |
| 13 | import org.yuzu.yuzu_emu.utils.ViewUtils.marquee | ||
| 14 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 15 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 15 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 16 | 16 | ||
| 17 | class DriverAdapter(private val driverViewModel: DriverViewModel) : | 17 | class DriverAdapter(private val driverViewModel: DriverViewModel) : |
| @@ -44,25 +44,15 @@ class DriverAdapter(private val driverViewModel: DriverViewModel) : | |||
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | // Delay marquee by 3s | 46 | // Delay marquee by 3s |
| 47 | title.postDelayed( | 47 | title.marquee() |
| 48 | { | 48 | version.marquee() |
| 49 | title.isSelected = true | 49 | description.marquee() |
| 50 | title.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 51 | version.isSelected = true | ||
| 52 | version.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 53 | description.isSelected = true | ||
| 54 | description.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 55 | }, | ||
| 56 | 3000 | ||
| 57 | ) | ||
| 58 | title.text = model.title | 50 | title.text = model.title |
| 59 | version.text = model.version | 51 | version.text = model.version |
| 60 | description.text = model.description | 52 | description.text = model.description |
| 61 | if (model.title != binding.root.context.getString(R.string.system_gpu_driver)) { | 53 | buttonDelete.setVisible( |
| 62 | buttonDelete.visibility = View.VISIBLE | 54 | model.title != binding.root.context.getString(R.string.system_gpu_driver) |
| 63 | } else { | 55 | ) |
| 64 | buttonDelete.visibility = View.GONE | ||
| 65 | } | ||
| 66 | } | 56 | } |
| 67 | } | 57 | } |
| 68 | } | 58 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt index 3d8f0bda8..5cbd15d2a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.adapters | 4 | package org.yuzu.yuzu_emu.adapters |
| 5 | 5 | ||
| 6 | import android.net.Uri | 6 | import android.net.Uri |
| 7 | import android.text.TextUtils | ||
| 8 | import android.view.LayoutInflater | 7 | import android.view.LayoutInflater |
| 9 | import android.view.ViewGroup | 8 | import android.view.ViewGroup |
| 10 | import androidx.fragment.app.FragmentActivity | 9 | import androidx.fragment.app.FragmentActivity |
| @@ -12,6 +11,7 @@ import org.yuzu.yuzu_emu.databinding.CardFolderBinding | |||
| 12 | import org.yuzu.yuzu_emu.fragments.GameFolderPropertiesDialogFragment | 11 | import org.yuzu.yuzu_emu.fragments.GameFolderPropertiesDialogFragment |
| 13 | import org.yuzu.yuzu_emu.model.GameDir | 12 | import org.yuzu.yuzu_emu.model.GameDir |
| 14 | import org.yuzu.yuzu_emu.model.GamesViewModel | 13 | import org.yuzu.yuzu_emu.model.GamesViewModel |
| 14 | import org.yuzu.yuzu_emu.utils.ViewUtils.marquee | ||
| 15 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 15 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 16 | 16 | ||
| 17 | class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesViewModel) : | 17 | class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesViewModel) : |
| @@ -29,13 +29,7 @@ class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesVie | |||
| 29 | override fun bind(model: GameDir) { | 29 | override fun bind(model: GameDir) { |
| 30 | binding.apply { | 30 | binding.apply { |
| 31 | path.text = Uri.parse(model.uriString).path | 31 | path.text = Uri.parse(model.uriString).path |
| 32 | path.postDelayed( | 32 | path.marquee() |
| 33 | { | ||
| 34 | path.isSelected = true | ||
| 35 | path.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 36 | }, | ||
| 37 | 3000 | ||
| 38 | ) | ||
| 39 | 33 | ||
| 40 | buttonEdit.setOnClickListener { | 34 | buttonEdit.setOnClickListener { |
| 41 | GameFolderPropertiesDialogFragment.newInstance(model) | 35 | GameFolderPropertiesDialogFragment.newInstance(model) |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt index 85c8249e6..b1f247ac3 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | package org.yuzu.yuzu_emu.adapters | 4 | package org.yuzu.yuzu_emu.adapters |
| 5 | 5 | ||
| 6 | import android.net.Uri | 6 | import android.net.Uri |
| 7 | import android.text.TextUtils | ||
| 8 | import android.view.LayoutInflater | 7 | import android.view.LayoutInflater |
| 9 | import android.view.ViewGroup | 8 | import android.view.ViewGroup |
| 10 | import android.widget.ImageView | 9 | import android.widget.ImageView |
| @@ -27,6 +26,7 @@ import org.yuzu.yuzu_emu.databinding.CardGameBinding | |||
| 27 | import org.yuzu.yuzu_emu.model.Game | 26 | import org.yuzu.yuzu_emu.model.Game |
| 28 | import org.yuzu.yuzu_emu.model.GamesViewModel | 27 | import org.yuzu.yuzu_emu.model.GamesViewModel |
| 29 | import org.yuzu.yuzu_emu.utils.GameIconUtils | 28 | import org.yuzu.yuzu_emu.utils.GameIconUtils |
| 29 | import org.yuzu.yuzu_emu.utils.ViewUtils.marquee | ||
| 30 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 30 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 31 | 31 | ||
| 32 | class GameAdapter(private val activity: AppCompatActivity) : | 32 | class GameAdapter(private val activity: AppCompatActivity) : |
| @@ -44,14 +44,7 @@ class GameAdapter(private val activity: AppCompatActivity) : | |||
| 44 | 44 | ||
| 45 | binding.textGameTitle.text = model.title.replace("[\\t\\n\\r]+".toRegex(), " ") | 45 | binding.textGameTitle.text = model.title.replace("[\\t\\n\\r]+".toRegex(), " ") |
| 46 | 46 | ||
| 47 | binding.textGameTitle.postDelayed( | 47 | binding.textGameTitle.marquee() |
| 48 | { | ||
| 49 | binding.textGameTitle.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 50 | binding.textGameTitle.isSelected = true | ||
| 51 | }, | ||
| 52 | 3000 | ||
| 53 | ) | ||
| 54 | |||
| 55 | binding.cardGame.setOnClickListener { onClick(model) } | 48 | binding.cardGame.setOnClickListener { onClick(model) } |
| 56 | binding.cardGame.setOnLongClickListener { onLongClick(model) } | 49 | binding.cardGame.setOnLongClickListener { onLongClick(model) } |
| 57 | } | 50 | } |
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 0046d5314..017306875 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 | |||
| @@ -3,9 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | package org.yuzu.yuzu_emu.adapters | 4 | package org.yuzu.yuzu_emu.adapters |
| 5 | 5 | ||
| 6 | import android.text.TextUtils | ||
| 7 | import android.view.LayoutInflater | 6 | import android.view.LayoutInflater |
| 8 | import android.view.View | ||
| 9 | import android.view.ViewGroup | 7 | import android.view.ViewGroup |
| 10 | import androidx.core.content.res.ResourcesCompat | 8 | import androidx.core.content.res.ResourcesCompat |
| 11 | import androidx.lifecycle.Lifecycle | 9 | import androidx.lifecycle.Lifecycle |
| @@ -18,6 +16,8 @@ import org.yuzu.yuzu_emu.databinding.CardSimpleOutlinedBinding | |||
| 18 | import org.yuzu.yuzu_emu.model.GameProperty | 16 | import org.yuzu.yuzu_emu.model.GameProperty |
| 19 | import org.yuzu.yuzu_emu.model.InstallableProperty | 17 | import org.yuzu.yuzu_emu.model.InstallableProperty |
| 20 | import org.yuzu.yuzu_emu.model.SubmenuProperty | 18 | import org.yuzu.yuzu_emu.model.SubmenuProperty |
| 19 | import org.yuzu.yuzu_emu.utils.ViewUtils.marquee | ||
| 20 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 21 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 21 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 22 | 22 | ||
| 23 | class GamePropertiesAdapter( | 23 | class GamePropertiesAdapter( |
| @@ -76,23 +76,19 @@ class GamePropertiesAdapter( | |||
| 76 | ) | 76 | ) |
| 77 | ) | 77 | ) |
| 78 | 78 | ||
| 79 | binding.details.postDelayed({ | 79 | binding.details.marquee() |
| 80 | binding.details.isSelected = true | ||
| 81 | binding.details.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 82 | }, 3000) | ||
| 83 | |||
| 84 | if (submenuProperty.details != null) { | 80 | if (submenuProperty.details != null) { |
| 85 | binding.details.visibility = View.VISIBLE | 81 | binding.details.setVisible(true) |
| 86 | binding.details.text = submenuProperty.details.invoke() | 82 | binding.details.text = submenuProperty.details.invoke() |
| 87 | } else if (submenuProperty.detailsFlow != null) { | 83 | } else if (submenuProperty.detailsFlow != null) { |
| 88 | binding.details.visibility = View.VISIBLE | 84 | binding.details.setVisible(true) |
| 89 | viewLifecycle.lifecycleScope.launch { | 85 | viewLifecycle.lifecycleScope.launch { |
| 90 | viewLifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { | 86 | viewLifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { |
| 91 | submenuProperty.detailsFlow.collect { binding.details.text = it } | 87 | submenuProperty.detailsFlow.collect { binding.details.text = it } |
| 92 | } | 88 | } |
| 93 | } | 89 | } |
| 94 | } else { | 90 | } else { |
| 95 | binding.details.visibility = View.GONE | 91 | binding.details.setVisible(false) |
| 96 | } | 92 | } |
| 97 | } | 93 | } |
| 98 | } | 94 | } |
| @@ -112,14 +108,10 @@ class GamePropertiesAdapter( | |||
| 112 | ) | 108 | ) |
| 113 | ) | 109 | ) |
| 114 | 110 | ||
| 115 | if (installableProperty.install != null) { | 111 | binding.buttonInstall.setVisible(installableProperty.install != null) |
| 116 | binding.buttonInstall.visibility = View.VISIBLE | 112 | binding.buttonInstall.setOnClickListener { installableProperty.install?.invoke() } |
| 117 | binding.buttonInstall.setOnClickListener { installableProperty.install.invoke() } | 113 | binding.buttonExport.setVisible(installableProperty.export != null) |
| 118 | } | 114 | binding.buttonExport.setOnClickListener { installableProperty.export?.invoke() } |
| 119 | if (installableProperty.export != null) { | ||
| 120 | binding.buttonExport.visibility = View.VISIBLE | ||
| 121 | binding.buttonExport.setOnClickListener { installableProperty.export.invoke() } | ||
| 122 | } | ||
| 123 | } | 115 | } |
| 124 | } | 116 | } |
| 125 | 117 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt index b512845d5..9234a4901 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt | |||
| @@ -3,9 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | package org.yuzu.yuzu_emu.adapters | 4 | package org.yuzu.yuzu_emu.adapters |
| 5 | 5 | ||
| 6 | import android.text.TextUtils | ||
| 7 | import android.view.LayoutInflater | 6 | import android.view.LayoutInflater |
| 8 | import android.view.View | ||
| 9 | import android.view.ViewGroup | 7 | import android.view.ViewGroup |
| 10 | import androidx.appcompat.app.AppCompatActivity | 8 | import androidx.appcompat.app.AppCompatActivity |
| 11 | import androidx.core.content.ContextCompat | 9 | import androidx.core.content.ContextCompat |
| @@ -19,6 +17,8 @@ import org.yuzu.yuzu_emu.R | |||
| 19 | import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding | 17 | import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding |
| 20 | import org.yuzu.yuzu_emu.fragments.MessageDialogFragment | 18 | import org.yuzu.yuzu_emu.fragments.MessageDialogFragment |
| 21 | import org.yuzu.yuzu_emu.model.HomeSetting | 19 | import org.yuzu.yuzu_emu.model.HomeSetting |
| 20 | import org.yuzu.yuzu_emu.utils.ViewUtils.marquee | ||
| 21 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 22 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 22 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 23 | 23 | ||
| 24 | class HomeSettingAdapter( | 24 | class HomeSettingAdapter( |
| @@ -64,13 +64,7 @@ class HomeSettingAdapter( | |||
| 64 | model.details.collect { updateOptionDetails(it) } | 64 | model.details.collect { updateOptionDetails(it) } |
| 65 | } | 65 | } |
| 66 | } | 66 | } |
| 67 | binding.optionDetail.postDelayed( | 67 | binding.optionDetail.marquee() |
| 68 | { | ||
| 69 | binding.optionDetail.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 70 | binding.optionDetail.isSelected = true | ||
| 71 | }, | ||
| 72 | 3000 | ||
| 73 | ) | ||
| 74 | 68 | ||
| 75 | binding.root.setOnClickListener { onClick(model) } | 69 | binding.root.setOnClickListener { onClick(model) } |
| 76 | } | 70 | } |
| @@ -90,7 +84,7 @@ class HomeSettingAdapter( | |||
| 90 | private fun updateOptionDetails(detailString: String) { | 84 | private fun updateOptionDetails(detailString: String) { |
| 91 | if (detailString.isNotEmpty()) { | 85 | if (detailString.isNotEmpty()) { |
| 92 | binding.optionDetail.text = detailString | 86 | binding.optionDetail.text = detailString |
| 93 | binding.optionDetail.visibility = View.VISIBLE | 87 | binding.optionDetail.setVisible(true) |
| 94 | } | 88 | } |
| 95 | } | 89 | } |
| 96 | } | 90 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/InstallableAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/InstallableAdapter.kt index 4218c4e52..1ba75fa2f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/InstallableAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/InstallableAdapter.kt | |||
| @@ -4,10 +4,10 @@ | |||
| 4 | package org.yuzu.yuzu_emu.adapters | 4 | package org.yuzu.yuzu_emu.adapters |
| 5 | 5 | ||
| 6 | import android.view.LayoutInflater | 6 | import android.view.LayoutInflater |
| 7 | import android.view.View | ||
| 8 | import android.view.ViewGroup | 7 | import android.view.ViewGroup |
| 9 | import org.yuzu.yuzu_emu.databinding.CardInstallableBinding | 8 | import org.yuzu.yuzu_emu.databinding.CardInstallableBinding |
| 10 | import org.yuzu.yuzu_emu.model.Installable | 9 | import org.yuzu.yuzu_emu.model.Installable |
| 10 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 11 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 11 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 12 | 12 | ||
| 13 | class InstallableAdapter(installables: List<Installable>) : | 13 | class InstallableAdapter(installables: List<Installable>) : |
| @@ -26,14 +26,10 @@ class InstallableAdapter(installables: List<Installable>) : | |||
| 26 | binding.title.setText(model.titleId) | 26 | binding.title.setText(model.titleId) |
| 27 | binding.description.setText(model.descriptionId) | 27 | binding.description.setText(model.descriptionId) |
| 28 | 28 | ||
| 29 | if (model.install != null) { | 29 | binding.buttonInstall.setVisible(model.install != null) |
| 30 | binding.buttonInstall.visibility = View.VISIBLE | 30 | binding.buttonInstall.setOnClickListener { model.install?.invoke() } |
| 31 | binding.buttonInstall.setOnClickListener { model.install.invoke() } | 31 | binding.buttonExport.setVisible(model.export != null) |
| 32 | } | 32 | binding.buttonExport.setOnClickListener { model.export?.invoke() } |
| 33 | if (model.export != null) { | ||
| 34 | binding.buttonExport.visibility = View.VISIBLE | ||
| 35 | binding.buttonExport.setOnClickListener { model.export.invoke() } | ||
| 36 | } | ||
| 37 | } | 33 | } |
| 38 | } | 34 | } |
| 39 | } | 35 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt index 38bb1f96f..1379968f9 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt | |||
| @@ -4,12 +4,12 @@ | |||
| 4 | package org.yuzu.yuzu_emu.adapters | 4 | package org.yuzu.yuzu_emu.adapters |
| 5 | 5 | ||
| 6 | import android.view.LayoutInflater | 6 | import android.view.LayoutInflater |
| 7 | import android.view.View | ||
| 8 | import android.view.ViewGroup | 7 | import android.view.ViewGroup |
| 9 | import androidx.appcompat.app.AppCompatActivity | 8 | import androidx.appcompat.app.AppCompatActivity |
| 10 | import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding | 9 | import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding |
| 11 | import org.yuzu.yuzu_emu.fragments.LicenseBottomSheetDialogFragment | 10 | import org.yuzu.yuzu_emu.fragments.LicenseBottomSheetDialogFragment |
| 12 | import org.yuzu.yuzu_emu.model.License | 11 | import org.yuzu.yuzu_emu.model.License |
| 12 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 13 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 13 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 14 | 14 | ||
| 15 | class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<License>) : | 15 | class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<License>) : |
| @@ -25,7 +25,7 @@ class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<Lic | |||
| 25 | binding.apply { | 25 | binding.apply { |
| 26 | textSettingName.text = root.context.getString(model.titleId) | 26 | textSettingName.text = root.context.getString(model.titleId) |
| 27 | textSettingDescription.text = root.context.getString(model.descriptionId) | 27 | textSettingDescription.text = root.context.getString(model.descriptionId) |
| 28 | textSettingValue.visibility = View.GONE | 28 | textSettingValue.setVisible(false) |
| 29 | 29 | ||
| 30 | root.setOnClickListener { onClick(model) } | 30 | root.setOnClickListener { onClick(model) } |
| 31 | } | 31 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt index 02118e1a8..a5f610b31 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt | |||
| @@ -5,7 +5,6 @@ package org.yuzu.yuzu_emu.adapters | |||
| 5 | 5 | ||
| 6 | import android.text.Html | 6 | import android.text.Html |
| 7 | import android.view.LayoutInflater | 7 | import android.view.LayoutInflater |
| 8 | import android.view.View | ||
| 9 | import android.view.ViewGroup | 8 | import android.view.ViewGroup |
| 10 | import androidx.appcompat.app.AppCompatActivity | 9 | import androidx.appcompat.app.AppCompatActivity |
| 11 | import androidx.core.content.res.ResourcesCompat | 10 | import androidx.core.content.res.ResourcesCompat |
| @@ -17,6 +16,7 @@ import org.yuzu.yuzu_emu.model.SetupCallback | |||
| 17 | import org.yuzu.yuzu_emu.model.SetupPage | 16 | import org.yuzu.yuzu_emu.model.SetupPage |
| 18 | import org.yuzu.yuzu_emu.model.StepState | 17 | import org.yuzu.yuzu_emu.model.StepState |
| 19 | import org.yuzu.yuzu_emu.utils.ViewUtils | 18 | import org.yuzu.yuzu_emu.utils.ViewUtils |
| 19 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 20 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder | 20 | import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder |
| 21 | 21 | ||
| 22 | class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) : | 22 | class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) : |
| @@ -30,8 +30,8 @@ class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) : | |||
| 30 | AbstractViewHolder<SetupPage>(binding), SetupCallback { | 30 | AbstractViewHolder<SetupPage>(binding), SetupCallback { |
| 31 | override fun bind(model: SetupPage) { | 31 | override fun bind(model: SetupPage) { |
| 32 | if (model.stepCompleted.invoke() == StepState.COMPLETE) { | 32 | if (model.stepCompleted.invoke() == StepState.COMPLETE) { |
| 33 | binding.buttonAction.visibility = View.INVISIBLE | 33 | binding.buttonAction.setVisible(visible = false, gone = false) |
| 34 | binding.textConfirmation.visibility = View.VISIBLE | 34 | binding.textConfirmation.setVisible(true) |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | binding.icon.setImageDrawable( | 37 | binding.icon.setImageDrawable( |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSearchFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSearchFragment.kt index 51740a2ac..c4c1d563a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSearchFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSearchFragment.kt | |||
| @@ -27,6 +27,7 @@ import org.yuzu.yuzu_emu.R | |||
| 27 | import org.yuzu.yuzu_emu.databinding.FragmentSettingsSearchBinding | 27 | import org.yuzu.yuzu_emu.databinding.FragmentSettingsSearchBinding |
| 28 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | 28 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem |
| 29 | import org.yuzu.yuzu_emu.utils.NativeConfig | 29 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 30 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 30 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins | 31 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins |
| 31 | 32 | ||
| 32 | class SettingsSearchFragment : Fragment() { | 33 | class SettingsSearchFragment : Fragment() { |
| @@ -106,10 +107,9 @@ class SettingsSearchFragment : Fragment() { | |||
| 106 | 107 | ||
| 107 | private fun search() { | 108 | private fun search() { |
| 108 | val searchTerm = binding.searchText.text.toString().lowercase() | 109 | val searchTerm = binding.searchText.text.toString().lowercase() |
| 109 | binding.clearButton.visibility = | 110 | binding.clearButton.setVisible(visible = searchTerm.isNotEmpty(), gone = false) |
| 110 | if (searchTerm.isEmpty()) View.INVISIBLE else View.VISIBLE | ||
| 111 | if (searchTerm.isEmpty()) { | 111 | if (searchTerm.isEmpty()) { |
| 112 | binding.noResultsView.visibility = View.VISIBLE | 112 | binding.noResultsView.setVisible(visible = false, gone = false) |
| 113 | settingsAdapter?.submitList(emptyList()) | 113 | settingsAdapter?.submitList(emptyList()) |
| 114 | return | 114 | return |
| 115 | } | 115 | } |
| @@ -136,8 +136,7 @@ class SettingsSearchFragment : Fragment() { | |||
| 136 | optionalSetting | 136 | optionalSetting |
| 137 | } | 137 | } |
| 138 | settingsAdapter?.submitList(sortedList) | 138 | settingsAdapter?.submitList(sortedList) |
| 139 | binding.noResultsView.visibility = | 139 | binding.noResultsView.setVisible(visible = sortedList.isEmpty(), gone = false) |
| 140 | if (sortedList.isEmpty()) View.VISIBLE else View.INVISIBLE | ||
| 141 | } | 140 | } |
| 142 | 141 | ||
| 143 | private fun focusSearch() { | 142 | private fun focusSearch() { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt index a43f7b1fe..367db7fd2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt | |||
| @@ -14,6 +14,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting | |||
| 14 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | 14 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem |
| 15 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 15 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 16 | import org.yuzu.yuzu_emu.utils.NativeConfig | 16 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 17 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 17 | 18 | ||
| 18 | class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | 19 | class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : |
| 19 | SettingViewHolder(binding.root, adapter) { | 20 | SettingViewHolder(binding.root, adapter) { |
| @@ -22,27 +23,18 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||
| 22 | override fun bind(item: SettingsItem) { | 23 | override fun bind(item: SettingsItem) { |
| 23 | setting = item as DateTimeSetting | 24 | setting = item as DateTimeSetting |
| 24 | binding.textSettingName.text = item.title | 25 | binding.textSettingName.text = item.title |
| 25 | if (setting.description.isNotEmpty()) { | 26 | binding.textSettingDescription.setVisible(item.description.isNotEmpty()) |
| 26 | binding.textSettingDescription.text = item.description | 27 | binding.textSettingDescription.text = item.description |
| 27 | binding.textSettingDescription.visibility = View.VISIBLE | 28 | binding.textSettingValue.setVisible(true) |
| 28 | } else { | ||
| 29 | binding.textSettingDescription.visibility = View.GONE | ||
| 30 | } | ||
| 31 | |||
| 32 | binding.textSettingValue.visibility = View.VISIBLE | ||
| 33 | val epochTime = setting.getValue() | 29 | val epochTime = setting.getValue() |
| 34 | val instant = Instant.ofEpochMilli(epochTime * 1000) | 30 | val instant = Instant.ofEpochMilli(epochTime * 1000) |
| 35 | val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) | 31 | val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")) |
| 36 | val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) | 32 | val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) |
| 37 | binding.textSettingValue.text = dateFormatter.format(zonedTime) | 33 | binding.textSettingValue.text = dateFormatter.format(zonedTime) |
| 38 | 34 | ||
| 39 | binding.buttonClear.visibility = if (setting.setting.global || | 35 | binding.buttonClear.setVisible( |
| 40 | !NativeConfig.isPerGameConfigLoaded() | 36 | !setting.setting.global || NativeConfig.isPerGameConfigLoaded() |
| 41 | ) { | 37 | ) |
| 42 | View.GONE | ||
| 43 | } else { | ||
| 44 | View.VISIBLE | ||
| 45 | } | ||
| 46 | binding.buttonClear.setOnClickListener { | 38 | binding.buttonClear.setOnClickListener { |
| 47 | adapter.onClearClick(setting, bindingAdapterPosition) | 39 | adapter.onClearClick(setting, bindingAdapterPosition) |
| 48 | } | 40 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt index 81161d5d3..86af3a226 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt | |||
| @@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.InputProfileSetting | |||
| 9 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | 9 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem |
| 10 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 10 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 11 | import org.yuzu.yuzu_emu.R | 11 | import org.yuzu.yuzu_emu.R |
| 12 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 12 | 13 | ||
| 13 | class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | 14 | class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : |
| 14 | SettingViewHolder(binding.root, adapter) { | 15 | SettingViewHolder(binding.root, adapter) { |
| @@ -20,10 +21,10 @@ class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 20 | binding.textSettingValue.text = | 21 | binding.textSettingValue.text = |
| 21 | setting.getCurrentProfile().ifEmpty { binding.root.context.getString(R.string.not_set) } | 22 | setting.getCurrentProfile().ifEmpty { binding.root.context.getString(R.string.not_set) } |
| 22 | 23 | ||
| 23 | binding.textSettingDescription.visibility = View.GONE | 24 | binding.textSettingDescription.setVisible(false) |
| 24 | binding.buttonClear.visibility = View.GONE | 25 | binding.buttonClear.setVisible(false) |
| 25 | binding.icon.visibility = View.GONE | 26 | binding.icon.setVisible(false) |
| 26 | binding.buttonClear.visibility = View.GONE | 27 | binding.buttonClear.setVisible(false) |
| 27 | } | 28 | } |
| 28 | 29 | ||
| 29 | override fun onClick(clicked: View) = | 30 | override fun onClick(clicked: View) = |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputViewHolder.kt index 1f1f08190..9d9047804 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputViewHolder.kt | |||
| @@ -12,6 +12,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.InputSetting | |||
| 12 | import org.yuzu.yuzu_emu.features.settings.model.view.ModifierInputSetting | 12 | import org.yuzu.yuzu_emu.features.settings.model.view.ModifierInputSetting |
| 13 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | 13 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem |
| 14 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 14 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 15 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 15 | 16 | ||
| 16 | class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: SettingsAdapter) : | 17 | class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: SettingsAdapter) : |
| 17 | SettingViewHolder(binding.root, adapter) { | 18 | SettingViewHolder(binding.root, adapter) { |
| @@ -22,38 +23,26 @@ class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: Setting | |||
| 22 | binding.textSettingName.text = setting.title | 23 | binding.textSettingName.text = setting.title |
| 23 | binding.textSettingValue.text = setting.getSelectedValue() | 24 | binding.textSettingValue.text = setting.getSelectedValue() |
| 24 | 25 | ||
| 25 | binding.buttonOptions.visibility = when (item) { | 26 | when (item) { |
| 26 | is AnalogInputSetting -> { | 27 | is AnalogInputSetting -> { |
| 27 | val param = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog) | 28 | val param = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog) |
| 28 | if ( | 29 | binding.buttonOptions.setVisible( |
| 29 | param.get("engine", "") == "analog_from_button" || | 30 | param.get("engine", "") == "analog_from_button" || |
| 30 | param.has("axis_x") || param.has("axis_y") | 31 | param.has("axis_x") || param.has("axis_y") |
| 31 | ) { | 32 | ) |
| 32 | View.VISIBLE | ||
| 33 | } else { | ||
| 34 | View.GONE | ||
| 35 | } | ||
| 36 | } | 33 | } |
| 37 | 34 | ||
| 38 | is ButtonInputSetting -> { | 35 | is ButtonInputSetting -> { |
| 39 | val param = NativeInput.getButtonParam(item.playerIndex, item.nativeButton) | 36 | val param = NativeInput.getButtonParam(item.playerIndex, item.nativeButton) |
| 40 | if ( | 37 | binding.buttonOptions.setVisible( |
| 41 | param.has("code") || param.has("button") || param.has("hat") || | 38 | param.has("code") || param.has("button") || param.has("hat") || |
| 42 | param.has("axis") | 39 | param.has("axis") |
| 43 | ) { | 40 | ) |
| 44 | View.VISIBLE | ||
| 45 | } else { | ||
| 46 | View.GONE | ||
| 47 | } | ||
| 48 | } | 41 | } |
| 49 | 42 | ||
| 50 | is ModifierInputSetting -> { | 43 | is ModifierInputSetting -> { |
| 51 | val params = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog) | 44 | val params = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog) |
| 52 | if (params.has("modifier")) { | 45 | binding.buttonOptions.setVisible(params.has("modifier")) |
| 53 | View.VISIBLE | ||
| 54 | } else { | ||
| 55 | View.GONE | ||
| 56 | } | ||
| 57 | } | 46 | } |
| 58 | } | 47 | } |
| 59 | 48 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt index 2841520a5..fc2ffb515 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt | |||
| @@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding | |||
| 9 | import org.yuzu.yuzu_emu.features.settings.model.view.RunnableSetting | 9 | import org.yuzu.yuzu_emu.features.settings.model.view.RunnableSetting |
| 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem |
| 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 12 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 12 | 13 | ||
| 13 | class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | 14 | class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : |
| 14 | SettingViewHolder(binding.root, adapter) { | 15 | SettingViewHolder(binding.root, adapter) { |
| @@ -16,8 +17,8 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||
| 16 | 17 | ||
| 17 | override fun bind(item: SettingsItem) { | 18 | override fun bind(item: SettingsItem) { |
| 18 | setting = item as RunnableSetting | 19 | setting = item as RunnableSetting |
| 20 | binding.icon.setVisible(setting.iconId != 0) | ||
| 19 | if (setting.iconId != 0) { | 21 | if (setting.iconId != 0) { |
| 20 | binding.icon.visibility = View.VISIBLE | ||
| 21 | binding.icon.setImageDrawable( | 22 | binding.icon.setImageDrawable( |
| 22 | ResourcesCompat.getDrawable( | 23 | ResourcesCompat.getDrawable( |
| 23 | binding.icon.resources, | 24 | binding.icon.resources, |
| @@ -25,19 +26,13 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||
| 25 | binding.icon.context.theme | 26 | binding.icon.context.theme |
| 26 | ) | 27 | ) |
| 27 | ) | 28 | ) |
| 28 | } else { | ||
| 29 | binding.icon.visibility = View.GONE | ||
| 30 | } | 29 | } |
| 31 | 30 | ||
| 32 | binding.textSettingName.text = setting.title | 31 | binding.textSettingName.text = setting.title |
| 33 | if (setting.description.isNotEmpty()) { | 32 | binding.textSettingDescription.setVisible(setting.description.isNotEmpty()) |
| 34 | binding.textSettingDescription.setText(item.descriptionId) | 33 | binding.textSettingDescription.text = item.description |
| 35 | binding.textSettingDescription.visibility = View.VISIBLE | 34 | binding.textSettingValue.setVisible(false) |
| 36 | } else { | 35 | binding.buttonClear.setVisible(false) |
| 37 | binding.textSettingDescription.visibility = View.GONE | ||
| 38 | } | ||
| 39 | binding.textSettingValue.visibility = View.GONE | ||
| 40 | binding.buttonClear.visibility = View.GONE | ||
| 41 | 36 | ||
| 42 | setStyle(setting.isEditable, binding) | 37 | setStyle(setting.isEditable, binding) |
| 43 | } | 38 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt index 9705d428c..e2fe0b072 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt | |||
| @@ -11,6 +11,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting | |||
| 11 | import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting | 11 | import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting |
| 12 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 12 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 13 | import org.yuzu.yuzu_emu.utils.NativeConfig | 13 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 14 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 14 | 15 | ||
| 15 | class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | 16 | class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : |
| 16 | SettingViewHolder(binding.root, adapter) { | 17 | SettingViewHolder(binding.root, adapter) { |
| @@ -19,14 +20,10 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 19 | override fun bind(item: SettingsItem) { | 20 | override fun bind(item: SettingsItem) { |
| 20 | setting = item | 21 | setting = item |
| 21 | binding.textSettingName.text = setting.title | 22 | binding.textSettingName.text = setting.title |
| 22 | if (item.description.isNotEmpty()) { | 23 | binding.textSettingDescription.setVisible(item.description.isNotEmpty()) |
| 23 | binding.textSettingDescription.text = item.description | 24 | binding.textSettingDescription.text = item.description |
| 24 | binding.textSettingDescription.visibility = View.VISIBLE | ||
| 25 | } else { | ||
| 26 | binding.textSettingDescription.visibility = View.GONE | ||
| 27 | } | ||
| 28 | 25 | ||
| 29 | binding.textSettingValue.visibility = View.VISIBLE | 26 | binding.textSettingValue.setVisible(true) |
| 30 | when (item) { | 27 | when (item) { |
| 31 | is SingleChoiceSetting -> { | 28 | is SingleChoiceSetting -> { |
| 32 | val resMgr = binding.textSettingValue.context.resources | 29 | val resMgr = binding.textSettingValue.context.resources |
| @@ -48,16 +45,12 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 48 | } | 45 | } |
| 49 | } | 46 | } |
| 50 | if (binding.textSettingValue.text.isEmpty()) { | 47 | if (binding.textSettingValue.text.isEmpty()) { |
| 51 | binding.textSettingValue.visibility = View.GONE | 48 | binding.textSettingValue.setVisible(false) |
| 52 | } | 49 | } |
| 53 | 50 | ||
| 54 | binding.buttonClear.visibility = if (setting.setting.global || | 51 | binding.buttonClear.setVisible( |
| 55 | !NativeConfig.isPerGameConfigLoaded() | 52 | !setting.setting.global || NativeConfig.isPerGameConfigLoaded() |
| 56 | ) { | 53 | ) |
| 57 | View.GONE | ||
| 58 | } else { | ||
| 59 | View.VISIBLE | ||
| 60 | } | ||
| 61 | binding.buttonClear.setOnClickListener { | 54 | binding.buttonClear.setOnClickListener { |
| 62 | adapter.onClearClick(setting, bindingAdapterPosition) | 55 | adapter.onClearClick(setting, bindingAdapterPosition) |
| 63 | } | 56 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt index fcfac040e..a37b59b44 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt | |||
| @@ -10,6 +10,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | |||
| 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting | 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting |
| 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 12 | import org.yuzu.yuzu_emu.utils.NativeConfig | 12 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 13 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 13 | 14 | ||
| 14 | class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | 15 | class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : |
| 15 | SettingViewHolder(binding.root, adapter) { | 16 | SettingViewHolder(binding.root, adapter) { |
| @@ -18,26 +19,18 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda | |||
| 18 | override fun bind(item: SettingsItem) { | 19 | override fun bind(item: SettingsItem) { |
| 19 | setting = item as SliderSetting | 20 | setting = item as SliderSetting |
| 20 | binding.textSettingName.text = setting.title | 21 | binding.textSettingName.text = setting.title |
| 21 | if (item.description.isNotEmpty()) { | 22 | binding.textSettingDescription.setVisible(item.description.isNotEmpty()) |
| 22 | binding.textSettingDescription.text = setting.description | 23 | binding.textSettingDescription.text = setting.description |
| 23 | binding.textSettingDescription.visibility = View.VISIBLE | 24 | binding.textSettingValue.setVisible(true) |
| 24 | } else { | ||
| 25 | binding.textSettingDescription.visibility = View.GONE | ||
| 26 | } | ||
| 27 | binding.textSettingValue.visibility = View.VISIBLE | ||
| 28 | binding.textSettingValue.text = String.format( | 25 | binding.textSettingValue.text = String.format( |
| 29 | binding.textSettingValue.context.getString(R.string.value_with_units), | 26 | binding.textSettingValue.context.getString(R.string.value_with_units), |
| 30 | setting.getSelectedValue(), | 27 | setting.getSelectedValue(), |
| 31 | setting.units | 28 | setting.units |
| 32 | ) | 29 | ) |
| 33 | 30 | ||
| 34 | binding.buttonClear.visibility = if (setting.setting.global || | 31 | binding.buttonClear.setVisible( |
| 35 | !NativeConfig.isPerGameConfigLoaded() | 32 | !setting.setting.global || NativeConfig.isPerGameConfigLoaded() |
| 36 | ) { | 33 | ) |
| 37 | View.GONE | ||
| 38 | } else { | ||
| 39 | View.VISIBLE | ||
| 40 | } | ||
| 41 | binding.buttonClear.setOnClickListener { | 34 | binding.buttonClear.setOnClickListener { |
| 42 | adapter.onClearClick(setting, bindingAdapterPosition) | 35 | adapter.onClearClick(setting, bindingAdapterPosition) |
| 43 | } | 36 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt index 165c765b3..f7a9c08c3 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt | |||
| @@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding | |||
| 9 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | 9 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem |
| 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting | 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting |
| 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 12 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 12 | 13 | ||
| 13 | class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | 14 | class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : |
| 14 | SettingViewHolder(binding.root, adapter) { | 15 | SettingViewHolder(binding.root, adapter) { |
| @@ -16,8 +17,8 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd | |||
| 16 | 17 | ||
| 17 | override fun bind(item: SettingsItem) { | 18 | override fun bind(item: SettingsItem) { |
| 18 | setting = item as SubmenuSetting | 19 | setting = item as SubmenuSetting |
| 20 | binding.icon.setVisible(setting.iconId != 0) | ||
| 19 | if (setting.iconId != 0) { | 21 | if (setting.iconId != 0) { |
| 20 | binding.icon.visibility = View.VISIBLE | ||
| 21 | binding.icon.setImageDrawable( | 22 | binding.icon.setImageDrawable( |
| 22 | ResourcesCompat.getDrawable( | 23 | ResourcesCompat.getDrawable( |
| 23 | binding.icon.resources, | 24 | binding.icon.resources, |
| @@ -25,19 +26,13 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd | |||
| 25 | binding.icon.context.theme | 26 | binding.icon.context.theme |
| 26 | ) | 27 | ) |
| 27 | ) | 28 | ) |
| 28 | } else { | ||
| 29 | binding.icon.visibility = View.GONE | ||
| 30 | } | 29 | } |
| 31 | 30 | ||
| 32 | binding.textSettingName.text = setting.title | 31 | binding.textSettingName.text = setting.title |
| 33 | if (setting.description.isNotEmpty()) { | 32 | binding.textSettingDescription.setVisible(setting.description.isNotEmpty()) |
| 34 | binding.textSettingDescription.text = setting.description | 33 | binding.textSettingDescription.text = setting.description |
| 35 | binding.textSettingDescription.visibility = View.VISIBLE | 34 | binding.textSettingValue.setVisible(false) |
| 36 | } else { | 35 | binding.buttonClear.setVisible(false) |
| 37 | binding.textSettingDescription.visibility = View.GONE | ||
| 38 | } | ||
| 39 | binding.textSettingValue.visibility = View.GONE | ||
| 40 | binding.buttonClear.visibility = View.GONE | ||
| 41 | } | 36 | } |
| 42 | 37 | ||
| 43 | override fun onClick(clicked: View) { | 38 | override fun onClick(clicked: View) { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt index f779a7b60..53f7b301f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt | |||
| @@ -10,6 +10,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | |||
| 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SwitchSetting | 10 | import org.yuzu.yuzu_emu.features.settings.model.view.SwitchSetting |
| 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | 11 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter |
| 12 | import org.yuzu.yuzu_emu.utils.NativeConfig | 12 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 13 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 13 | 14 | ||
| 14 | class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter: SettingsAdapter) : | 15 | class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter: SettingsAdapter) : |
| 15 | SettingViewHolder(binding.root, adapter) { | 16 | SettingViewHolder(binding.root, adapter) { |
| @@ -19,12 +20,8 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter | |||
| 19 | override fun bind(item: SettingsItem) { | 20 | override fun bind(item: SettingsItem) { |
| 20 | setting = item as SwitchSetting | 21 | setting = item as SwitchSetting |
| 21 | binding.textSettingName.text = setting.title | 22 | binding.textSettingName.text = setting.title |
| 22 | if (setting.description.isNotEmpty()) { | 23 | binding.textSettingDescription.setVisible(setting.description.isNotEmpty()) |
| 23 | binding.textSettingDescription.text = setting.description | 24 | binding.textSettingDescription.text = setting.description |
| 24 | binding.textSettingDescription.visibility = View.VISIBLE | ||
| 25 | } else { | ||
| 26 | binding.textSettingDescription.visibility = View.GONE | ||
| 27 | } | ||
| 28 | 25 | ||
| 29 | binding.switchWidget.setOnCheckedChangeListener(null) | 26 | binding.switchWidget.setOnCheckedChangeListener(null) |
| 30 | binding.switchWidget.isChecked = setting.getIsChecked(setting.needsRuntimeGlobal) | 27 | binding.switchWidget.isChecked = setting.getIsChecked(setting.needsRuntimeGlobal) |
| @@ -32,13 +29,9 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter | |||
| 32 | adapter.onBooleanClick(setting, binding.switchWidget.isChecked, bindingAdapterPosition) | 29 | adapter.onBooleanClick(setting, binding.switchWidget.isChecked, bindingAdapterPosition) |
| 33 | } | 30 | } |
| 34 | 31 | ||
| 35 | binding.buttonClear.visibility = if (setting.setting.global || | 32 | binding.buttonClear.setVisible( |
| 36 | !NativeConfig.isPerGameConfigLoaded() | 33 | !setting.setting.global || NativeConfig.isPerGameConfigLoaded() |
| 37 | ) { | 34 | ) |
| 38 | View.GONE | ||
| 39 | } else { | ||
| 40 | View.VISIBLE | ||
| 41 | } | ||
| 42 | binding.buttonClear.setOnClickListener { | 35 | binding.buttonClear.setOnClickListener { |
| 43 | adapter.onClearClick(setting, bindingAdapterPosition) | 36 | adapter.onClearClick(setting, bindingAdapterPosition) |
| 44 | } | 37 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt index c737ed5e8..aedc128d6 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt | |||
| @@ -63,6 +63,7 @@ import org.yuzu.yuzu_emu.model.EmulationViewModel | |||
| 63 | import org.yuzu.yuzu_emu.overlay.model.OverlayControl | 63 | import org.yuzu.yuzu_emu.overlay.model.OverlayControl |
| 64 | import org.yuzu.yuzu_emu.overlay.model.OverlayLayout | 64 | import org.yuzu.yuzu_emu.overlay.model.OverlayLayout |
| 65 | import org.yuzu.yuzu_emu.utils.* | 65 | import org.yuzu.yuzu_emu.utils.* |
| 66 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 66 | import java.lang.NullPointerException | 67 | import java.lang.NullPointerException |
| 67 | 68 | ||
| 68 | class EmulationFragment : Fragment(), SurfaceHolder.Callback { | 69 | class EmulationFragment : Fragment(), SurfaceHolder.Callback { |
| @@ -500,14 +501,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 500 | binding.drawerLayout.close() | 501 | binding.drawerLayout.close() |
| 501 | } | 502 | } |
| 502 | if (showInputOverlay) { | 503 | if (showInputOverlay) { |
| 503 | binding.surfaceInputOverlay.visibility = View.INVISIBLE | 504 | binding.surfaceInputOverlay.setVisible(visible = false, gone = false) |
| 504 | } | 505 | } |
| 505 | } else { | 506 | } else { |
| 506 | if (showInputOverlay && emulationViewModel.emulationStarted.value) { | 507 | binding.surfaceInputOverlay.setVisible( |
| 507 | binding.surfaceInputOverlay.visibility = View.VISIBLE | 508 | showInputOverlay && emulationViewModel.emulationStarted.value |
| 508 | } else { | 509 | ) |
| 509 | binding.surfaceInputOverlay.visibility = View.INVISIBLE | ||
| 510 | } | ||
| 511 | if (!isInFoldableLayout) { | 510 | if (!isInFoldableLayout) { |
| 512 | if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { | 511 | if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { |
| 513 | binding.surfaceInputOverlay.layout = OverlayLayout.Portrait | 512 | binding.surfaceInputOverlay.layout = OverlayLayout.Portrait |
| @@ -544,7 +543,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 544 | } | 543 | } |
| 545 | 544 | ||
| 546 | private fun updateShowFpsOverlay() { | 545 | private fun updateShowFpsOverlay() { |
| 547 | if (BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()) { | 546 | val showOverlay = BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean() |
| 547 | binding.showFpsText.setVisible(showOverlay) | ||
| 548 | if (showOverlay) { | ||
| 548 | val SYSTEM_FPS = 0 | 549 | val SYSTEM_FPS = 0 |
| 549 | val FPS = 1 | 550 | val FPS = 1 |
| 550 | val FRAMETIME = 2 | 551 | val FRAMETIME = 2 |
| @@ -564,17 +565,17 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 564 | } | 565 | } |
| 565 | } | 566 | } |
| 566 | perfStatsUpdateHandler.post(perfStatsUpdater!!) | 567 | perfStatsUpdateHandler.post(perfStatsUpdater!!) |
| 567 | binding.showFpsText.visibility = View.VISIBLE | ||
| 568 | } else { | 568 | } else { |
| 569 | if (perfStatsUpdater != null) { | 569 | if (perfStatsUpdater != null) { |
| 570 | perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!) | 570 | perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!) |
| 571 | } | 571 | } |
| 572 | binding.showFpsText.visibility = View.GONE | ||
| 573 | } | 572 | } |
| 574 | } | 573 | } |
| 575 | 574 | ||
| 576 | private fun updateThermalOverlay() { | 575 | private fun updateThermalOverlay() { |
| 577 | if (BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean()) { | 576 | val showOverlay = BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean() |
| 577 | binding.showThermalsText.setVisible(showOverlay) | ||
| 578 | if (showOverlay) { | ||
| 578 | thermalStatsUpdater = { | 579 | thermalStatsUpdater = { |
| 579 | if (emulationViewModel.emulationStarted.value && | 580 | if (emulationViewModel.emulationStarted.value && |
| 580 | !emulationViewModel.isEmulationStopping.value | 581 | !emulationViewModel.isEmulationStopping.value |
| @@ -596,12 +597,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 596 | } | 597 | } |
| 597 | } | 598 | } |
| 598 | thermalStatsUpdateHandler.post(thermalStatsUpdater!!) | 599 | thermalStatsUpdateHandler.post(thermalStatsUpdater!!) |
| 599 | binding.showThermalsText.visibility = View.VISIBLE | ||
| 600 | } else { | 600 | } else { |
| 601 | if (thermalStatsUpdater != null) { | 601 | if (thermalStatsUpdater != null) { |
| 602 | thermalStatsUpdateHandler.removeCallbacks(thermalStatsUpdater!!) | 602 | thermalStatsUpdateHandler.removeCallbacks(thermalStatsUpdater!!) |
| 603 | } | 603 | } |
| 604 | binding.showThermalsText.visibility = View.GONE | ||
| 605 | } | 604 | } |
| 606 | } | 605 | } |
| 607 | 606 | ||
| @@ -870,12 +869,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 870 | } | 869 | } |
| 871 | } | 870 | } |
| 872 | } | 871 | } |
| 873 | binding.doneControlConfig.visibility = View.VISIBLE | 872 | binding.doneControlConfig.setVisible(false) |
| 874 | binding.surfaceInputOverlay.setIsInEditMode(true) | 873 | binding.surfaceInputOverlay.setIsInEditMode(true) |
| 875 | } | 874 | } |
| 876 | 875 | ||
| 877 | private fun stopConfiguringControls() { | 876 | private fun stopConfiguringControls() { |
| 878 | binding.doneControlConfig.visibility = View.GONE | 877 | binding.doneControlConfig.setVisible(false) |
| 879 | binding.surfaceInputOverlay.setIsInEditMode(false) | 878 | binding.surfaceInputOverlay.setIsInEditMode(false) |
| 880 | // Unlock the orientation if it was locked for editing | 879 | // Unlock the orientation if it was locked for editing |
| 881 | if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == EmulationOrientation.Unspecified.int) { | 880 | if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == EmulationOrientation.Unspecified.int) { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt index dbd56e84f..97a8954bb 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt | |||
| @@ -27,6 +27,7 @@ import org.yuzu.yuzu_emu.databinding.FragmentGameInfoBinding | |||
| 27 | import org.yuzu.yuzu_emu.model.GameVerificationResult | 27 | import org.yuzu.yuzu_emu.model.GameVerificationResult |
| 28 | import org.yuzu.yuzu_emu.model.HomeViewModel | 28 | import org.yuzu.yuzu_emu.model.HomeViewModel |
| 29 | import org.yuzu.yuzu_emu.utils.GameMetadata | 29 | import org.yuzu.yuzu_emu.utils.GameMetadata |
| 30 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 30 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins | 31 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins |
| 31 | 32 | ||
| 32 | class GameInfoFragment : Fragment() { | 33 | class GameInfoFragment : Fragment() { |
| @@ -85,7 +86,7 @@ class GameInfoFragment : Fragment() { | |||
| 85 | copyToClipboard(getString(R.string.developer), args.game.developer) | 86 | copyToClipboard(getString(R.string.developer), args.game.developer) |
| 86 | } | 87 | } |
| 87 | } else { | 88 | } else { |
| 88 | developer.visibility = View.GONE | 89 | developer.setVisible(false) |
| 89 | } | 90 | } |
| 90 | 91 | ||
| 91 | version.setHint(R.string.version) | 92 | version.setHint(R.string.version) |
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 3ea5e16ca..c4da1a65d 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 | |||
| @@ -7,7 +7,6 @@ import android.annotation.SuppressLint | |||
| 7 | import android.content.pm.ShortcutInfo | 7 | import android.content.pm.ShortcutInfo |
| 8 | import android.content.pm.ShortcutManager | 8 | import android.content.pm.ShortcutManager |
| 9 | import android.os.Bundle | 9 | import android.os.Bundle |
| 10 | import android.text.TextUtils | ||
| 11 | import android.view.LayoutInflater | 10 | import android.view.LayoutInflater |
| 12 | import android.view.View | 11 | import android.view.View |
| 13 | import android.view.ViewGroup | 12 | import android.view.ViewGroup |
| @@ -46,6 +45,7 @@ import org.yuzu.yuzu_emu.utils.FileUtil | |||
| 46 | import org.yuzu.yuzu_emu.utils.GameIconUtils | 45 | import org.yuzu.yuzu_emu.utils.GameIconUtils |
| 47 | import org.yuzu.yuzu_emu.utils.GpuDriverHelper | 46 | import org.yuzu.yuzu_emu.utils.GpuDriverHelper |
| 48 | import org.yuzu.yuzu_emu.utils.MemoryUtil | 47 | import org.yuzu.yuzu_emu.utils.MemoryUtil |
| 48 | import org.yuzu.yuzu_emu.utils.ViewUtils.marquee | ||
| 49 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins | 49 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins |
| 50 | import java.io.BufferedOutputStream | 50 | import java.io.BufferedOutputStream |
| 51 | import java.io.File | 51 | import java.io.File |
| @@ -107,13 +107,7 @@ class GamePropertiesFragment : Fragment() { | |||
| 107 | 107 | ||
| 108 | GameIconUtils.loadGameIcon(args.game, binding.imageGameScreen) | 108 | GameIconUtils.loadGameIcon(args.game, binding.imageGameScreen) |
| 109 | binding.title.text = args.game.title | 109 | binding.title.text = args.game.title |
| 110 | binding.title.postDelayed( | 110 | binding.title.marquee() |
| 111 | { | ||
| 112 | binding.title.ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 113 | binding.title.isSelected = true | ||
| 114 | }, | ||
| 115 | 3000 | ||
| 116 | ) | ||
| 117 | 111 | ||
| 118 | binding.buttonStart.setOnClickListener { | 112 | binding.buttonStart.setOnClickListener { |
| 119 | LaunchGameDialogFragment.newInstance(args.game) | 113 | LaunchGameDialogFragment.newInstance(args.game) |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProgressDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProgressDialogFragment.kt index d201cb80c..ae29e9cd1 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProgressDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProgressDialogFragment.kt | |||
| @@ -22,6 +22,7 @@ import kotlinx.coroutines.launch | |||
| 22 | import org.yuzu.yuzu_emu.R | 22 | import org.yuzu.yuzu_emu.R |
| 23 | import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding | 23 | import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding |
| 24 | import org.yuzu.yuzu_emu.model.TaskViewModel | 24 | import org.yuzu.yuzu_emu.model.TaskViewModel |
| 25 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 25 | 26 | ||
| 26 | class ProgressDialogFragment : DialogFragment() { | 27 | class ProgressDialogFragment : DialogFragment() { |
| 27 | private val taskViewModel: TaskViewModel by activityViewModels() | 28 | private val taskViewModel: TaskViewModel by activityViewModels() |
| @@ -120,10 +121,8 @@ class ProgressDialogFragment : DialogFragment() { | |||
| 120 | launch { | 121 | launch { |
| 121 | repeatOnLifecycle(Lifecycle.State.CREATED) { | 122 | repeatOnLifecycle(Lifecycle.State.CREATED) { |
| 122 | taskViewModel.message.collect { | 123 | taskViewModel.message.collect { |
| 123 | if (it.isEmpty()) { | 124 | binding.message.setVisible(it.isNotEmpty()) |
| 124 | binding.message.visibility = View.GONE | 125 | if (it.isNotEmpty()) { |
| 125 | } else { | ||
| 126 | binding.message.visibility = View.VISIBLE | ||
| 127 | binding.message.text = it | 126 | binding.message.text = it |
| 128 | } | 127 | } |
| 129 | } | 128 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt index 20b10b1a0..9f6509605 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt | |||
| @@ -35,6 +35,7 @@ import org.yuzu.yuzu_emu.layout.AutofitGridLayoutManager | |||
| 35 | import org.yuzu.yuzu_emu.model.Game | 35 | import org.yuzu.yuzu_emu.model.Game |
| 36 | import org.yuzu.yuzu_emu.model.GamesViewModel | 36 | import org.yuzu.yuzu_emu.model.GamesViewModel |
| 37 | import org.yuzu.yuzu_emu.model.HomeViewModel | 37 | import org.yuzu.yuzu_emu.model.HomeViewModel |
| 38 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 38 | 39 | ||
| 39 | class SearchFragment : Fragment() { | 40 | class SearchFragment : Fragment() { |
| 40 | private var _binding: FragmentSearchBinding? = null | 41 | private var _binding: FragmentSearchBinding? = null |
| @@ -81,11 +82,7 @@ class SearchFragment : Fragment() { | |||
| 81 | binding.chipGroup.setOnCheckedStateChangeListener { _, _ -> filterAndSearch() } | 82 | binding.chipGroup.setOnCheckedStateChangeListener { _, _ -> filterAndSearch() } |
| 82 | 83 | ||
| 83 | binding.searchText.doOnTextChanged { text: CharSequence?, _: Int, _: Int, _: Int -> | 84 | binding.searchText.doOnTextChanged { text: CharSequence?, _: Int, _: Int, _: Int -> |
| 84 | if (text.toString().isNotEmpty()) { | 85 | binding.clearButton.setVisible(text.toString().isNotEmpty()) |
| 85 | binding.clearButton.visibility = View.VISIBLE | ||
| 86 | } else { | ||
| 87 | binding.clearButton.visibility = View.INVISIBLE | ||
| 88 | } | ||
| 89 | filterAndSearch() | 86 | filterAndSearch() |
| 90 | } | 87 | } |
| 91 | 88 | ||
| @@ -109,11 +106,7 @@ class SearchFragment : Fragment() { | |||
| 109 | repeatOnLifecycle(Lifecycle.State.CREATED) { | 106 | repeatOnLifecycle(Lifecycle.State.CREATED) { |
| 110 | gamesViewModel.searchedGames.collect { | 107 | gamesViewModel.searchedGames.collect { |
| 111 | (binding.gridGamesSearch.adapter as GameAdapter).submitList(it) | 108 | (binding.gridGamesSearch.adapter as GameAdapter).submitList(it) |
| 112 | if (it.isEmpty()) { | 109 | binding.noResultsView.setVisible(it.isEmpty()) |
| 113 | binding.noResultsView.visibility = View.VISIBLE | ||
| 114 | } else { | ||
| 115 | binding.noResultsView.visibility = View.GONE | ||
| 116 | } | ||
| 117 | } | 110 | } |
| 118 | } | 111 | } |
| 119 | } | 112 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt index ebf41a639..eb279d309 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt | |||
| @@ -46,6 +46,7 @@ import org.yuzu.yuzu_emu.ui.main.MainActivity | |||
| 46 | import org.yuzu.yuzu_emu.utils.DirectoryInitialization | 46 | import org.yuzu.yuzu_emu.utils.DirectoryInitialization |
| 47 | import org.yuzu.yuzu_emu.utils.NativeConfig | 47 | import org.yuzu.yuzu_emu.utils.NativeConfig |
| 48 | import org.yuzu.yuzu_emu.utils.ViewUtils | 48 | import org.yuzu.yuzu_emu.utils.ViewUtils |
| 49 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 49 | 50 | ||
| 50 | class SetupFragment : Fragment() { | 51 | class SetupFragment : Fragment() { |
| 51 | private var _binding: FragmentSetupBinding? = null | 52 | private var _binding: FragmentSetupBinding? = null |
| @@ -292,12 +293,8 @@ class SetupFragment : Fragment() { | |||
| 292 | val backIsVisible = savedInstanceState.getBoolean(KEY_BACK_VISIBILITY) | 293 | val backIsVisible = savedInstanceState.getBoolean(KEY_BACK_VISIBILITY) |
| 293 | hasBeenWarned = savedInstanceState.getBooleanArray(KEY_HAS_BEEN_WARNED)!! | 294 | hasBeenWarned = savedInstanceState.getBooleanArray(KEY_HAS_BEEN_WARNED)!! |
| 294 | 295 | ||
| 295 | if (nextIsVisible) { | 296 | binding.buttonNext.setVisible(nextIsVisible) |
| 296 | binding.buttonNext.visibility = View.VISIBLE | 297 | binding.buttonBack.setVisible(backIsVisible) |
| 297 | } | ||
| 298 | if (backIsVisible) { | ||
| 299 | binding.buttonBack.visibility = View.VISIBLE | ||
| 300 | } | ||
| 301 | } else { | 298 | } else { |
| 302 | hasBeenWarned = BooleanArray(pages.size) | 299 | hasBeenWarned = BooleanArray(pages.size) |
| 303 | } | 300 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt index 23ca49b53..b3248585e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt | |||
| @@ -26,6 +26,7 @@ import org.yuzu.yuzu_emu.databinding.FragmentGamesBinding | |||
| 26 | import org.yuzu.yuzu_emu.layout.AutofitGridLayoutManager | 26 | import org.yuzu.yuzu_emu.layout.AutofitGridLayoutManager |
| 27 | import org.yuzu.yuzu_emu.model.GamesViewModel | 27 | import org.yuzu.yuzu_emu.model.GamesViewModel |
| 28 | import org.yuzu.yuzu_emu.model.HomeViewModel | 28 | import org.yuzu.yuzu_emu.model.HomeViewModel |
| 29 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 29 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins | 30 | import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins |
| 30 | 31 | ||
| 31 | class GamesFragment : Fragment() { | 32 | class GamesFragment : Fragment() { |
| @@ -93,11 +94,10 @@ class GamesFragment : Fragment() { | |||
| 93 | repeatOnLifecycle(Lifecycle.State.RESUMED) { | 94 | repeatOnLifecycle(Lifecycle.State.RESUMED) { |
| 94 | gamesViewModel.isReloading.collect { | 95 | gamesViewModel.isReloading.collect { |
| 95 | binding.swipeRefresh.isRefreshing = it | 96 | binding.swipeRefresh.isRefreshing = it |
| 96 | if (gamesViewModel.games.value.isEmpty() && !it) { | 97 | binding.noticeText.setVisible( |
| 97 | binding.noticeText.visibility = View.VISIBLE | 98 | visible = gamesViewModel.games.value.isEmpty() && !it, |
| 98 | } else { | 99 | gone = false |
| 99 | binding.noticeText.visibility = View.INVISIBLE | 100 | ) |
| 100 | } | ||
| 101 | } | 101 | } |
| 102 | } | 102 | } |
| 103 | } | 103 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index 4df4ac4c6..703fbaf3e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt | |||
| @@ -47,6 +47,7 @@ import org.yuzu.yuzu_emu.model.InstallResult | |||
| 47 | import org.yuzu.yuzu_emu.model.TaskState | 47 | import org.yuzu.yuzu_emu.model.TaskState |
| 48 | import org.yuzu.yuzu_emu.model.TaskViewModel | 48 | import org.yuzu.yuzu_emu.model.TaskViewModel |
| 49 | import org.yuzu.yuzu_emu.utils.* | 49 | import org.yuzu.yuzu_emu.utils.* |
| 50 | import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible | ||
| 50 | import java.io.BufferedInputStream | 51 | import java.io.BufferedInputStream |
| 51 | import java.io.BufferedOutputStream | 52 | import java.io.BufferedOutputStream |
| 52 | import java.util.zip.ZipEntry | 53 | import java.util.zip.ZipEntry |
| @@ -139,8 +140,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 139 | 140 | ||
| 140 | // Prevents navigation from being drawn for a short time on recreation if set to hidden | 141 | // Prevents navigation from being drawn for a short time on recreation if set to hidden |
| 141 | if (!homeViewModel.navigationVisible.value.first) { | 142 | if (!homeViewModel.navigationVisible.value.first) { |
| 142 | binding.navigationView.visibility = View.INVISIBLE | 143 | binding.navigationView.setVisible(visible = false, gone = false) |
| 143 | binding.statusBarShade.visibility = View.INVISIBLE | 144 | binding.statusBarShade.setVisible(visible = false, gone = false) |
| 144 | } | 145 | } |
| 145 | 146 | ||
| 146 | lifecycleScope.apply { | 147 | lifecycleScope.apply { |
| @@ -214,18 +215,14 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 214 | 215 | ||
| 215 | private fun showNavigation(visible: Boolean, animated: Boolean) { | 216 | private fun showNavigation(visible: Boolean, animated: Boolean) { |
| 216 | if (!animated) { | 217 | if (!animated) { |
| 217 | if (visible) { | 218 | binding.navigationView.setVisible(visible) |
| 218 | binding.navigationView.visibility = View.VISIBLE | ||
| 219 | } else { | ||
| 220 | binding.navigationView.visibility = View.INVISIBLE | ||
| 221 | } | ||
| 222 | return | 219 | return |
| 223 | } | 220 | } |
| 224 | 221 | ||
| 225 | val smallLayout = resources.getBoolean(R.bool.small_layout) | 222 | val smallLayout = resources.getBoolean(R.bool.small_layout) |
| 226 | binding.navigationView.animate().apply { | 223 | binding.navigationView.animate().apply { |
| 227 | if (visible) { | 224 | if (visible) { |
| 228 | binding.navigationView.visibility = View.VISIBLE | 225 | binding.navigationView.setVisible(true) |
| 229 | duration = 300 | 226 | duration = 300 |
| 230 | interpolator = PathInterpolator(0.05f, 0.7f, 0.1f, 1f) | 227 | interpolator = PathInterpolator(0.05f, 0.7f, 0.1f, 1f) |
| 231 | 228 | ||
| @@ -264,7 +261,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 264 | } | 261 | } |
| 265 | }.withEndAction { | 262 | }.withEndAction { |
| 266 | if (!visible) { | 263 | if (!visible) { |
| 267 | binding.navigationView.visibility = View.INVISIBLE | 264 | binding.navigationView.setVisible(visible = false, gone = false) |
| 268 | } | 265 | } |
| 269 | }.start() | 266 | }.start() |
| 270 | } | 267 | } |
| @@ -272,7 +269,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 272 | private fun showStatusBarShade(visible: Boolean) { | 269 | private fun showStatusBarShade(visible: Boolean) { |
| 273 | binding.statusBarShade.animate().apply { | 270 | binding.statusBarShade.animate().apply { |
| 274 | if (visible) { | 271 | if (visible) { |
| 275 | binding.statusBarShade.visibility = View.VISIBLE | 272 | binding.statusBarShade.setVisible(true) |
| 276 | binding.statusBarShade.translationY = binding.statusBarShade.height.toFloat() * -2 | 273 | binding.statusBarShade.translationY = binding.statusBarShade.height.toFloat() * -2 |
| 277 | duration = 300 | 274 | duration = 300 |
| 278 | translationY(0f) | 275 | translationY(0f) |
| @@ -284,7 +281,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 284 | } | 281 | } |
| 285 | }.withEndAction { | 282 | }.withEndAction { |
| 286 | if (!visible) { | 283 | if (!visible) { |
| 287 | binding.statusBarShade.visibility = View.INVISIBLE | 284 | binding.statusBarShade.setVisible(visible = false, gone = false) |
| 288 | } | 285 | } |
| 289 | }.start() | 286 | }.start() |
| 290 | } | 287 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ViewUtils.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ViewUtils.kt index ffbfa9337..244091aec 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ViewUtils.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ViewUtils.kt | |||
| @@ -3,8 +3,10 @@ | |||
| 3 | 3 | ||
| 4 | package org.yuzu.yuzu_emu.utils | 4 | package org.yuzu.yuzu_emu.utils |
| 5 | 5 | ||
| 6 | import android.text.TextUtils | ||
| 6 | import android.view.View | 7 | import android.view.View |
| 7 | import android.view.ViewGroup | 8 | import android.view.ViewGroup |
| 9 | import android.widget.TextView | ||
| 8 | 10 | ||
| 9 | object ViewUtils { | 11 | object ViewUtils { |
| 10 | fun showView(view: View, length: Long = 300) { | 12 | fun showView(view: View, length: Long = 300) { |
| @@ -57,4 +59,35 @@ object ViewUtils { | |||
| 57 | } | 59 | } |
| 58 | this.layoutParams = layoutParams | 60 | this.layoutParams = layoutParams |
| 59 | } | 61 | } |
| 62 | |||
| 63 | /** | ||
| 64 | * Shows or hides a view. | ||
| 65 | * @param visible Whether a view will be made View.VISIBLE or View.INVISIBLE/GONE. | ||
| 66 | * @param gone Optional parameter for hiding a view. Uses View.GONE if true and View.INVISIBLE otherwise. | ||
| 67 | */ | ||
| 68 | fun View.setVisible(visible: Boolean, gone: Boolean = true) { | ||
| 69 | visibility = if (visible) { | ||
| 70 | View.VISIBLE | ||
| 71 | } else { | ||
| 72 | if (gone) { | ||
| 73 | View.GONE | ||
| 74 | } else { | ||
| 75 | View.INVISIBLE | ||
| 76 | } | ||
| 77 | } | ||
| 78 | } | ||
| 79 | |||
| 80 | /** | ||
| 81 | * Starts a marquee on some text. | ||
| 82 | * @param delay Optional parameter for changing the start delay. 3 seconds of delay by default. | ||
| 83 | */ | ||
| 84 | fun TextView.marquee(delay: Long = 3000) { | ||
| 85 | ellipsize = null | ||
| 86 | marqueeRepeatLimit = -1 | ||
| 87 | isSingleLine = true | ||
| 88 | postDelayed({ | ||
| 89 | ellipsize = TextUtils.TruncateAt.MARQUEE | ||
| 90 | isSelected = true | ||
| 91 | }, delay) | ||
| 92 | } | ||
| 60 | } | 93 | } |
diff --git a/src/android/app/src/main/res/layout/card_driver_option.xml b/src/android/app/src/main/res/layout/card_driver_option.xml index bda524f0f..09e26990b 100644 --- a/src/android/app/src/main/res/layout/card_driver_option.xml +++ b/src/android/app/src/main/res/layout/card_driver_option.xml | |||
| @@ -39,10 +39,7 @@ | |||
| 39 | style="@style/TextAppearance.Material3.TitleMedium" | 39 | style="@style/TextAppearance.Material3.TitleMedium" |
| 40 | android:layout_width="match_parent" | 40 | android:layout_width="match_parent" |
| 41 | android:layout_height="wrap_content" | 41 | android:layout_height="wrap_content" |
| 42 | android:ellipsize="none" | ||
| 43 | android:marqueeRepeatLimit="marquee_forever" | ||
| 44 | android:requiresFadingEdge="horizontal" | 42 | android:requiresFadingEdge="horizontal" |
| 45 | android:singleLine="true" | ||
| 46 | android:textAlignment="viewStart" | 43 | android:textAlignment="viewStart" |
| 47 | tools:text="@string/select_gpu_driver_default" /> | 44 | tools:text="@string/select_gpu_driver_default" /> |
| 48 | 45 | ||
| @@ -52,10 +49,7 @@ | |||
| 52 | android:layout_width="match_parent" | 49 | android:layout_width="match_parent" |
| 53 | android:layout_height="wrap_content" | 50 | android:layout_height="wrap_content" |
| 54 | android:layout_marginTop="6dp" | 51 | android:layout_marginTop="6dp" |
| 55 | android:ellipsize="none" | ||
| 56 | android:marqueeRepeatLimit="marquee_forever" | ||
| 57 | android:requiresFadingEdge="horizontal" | 52 | android:requiresFadingEdge="horizontal" |
| 58 | android:singleLine="true" | ||
| 59 | android:textAlignment="viewStart" | 53 | android:textAlignment="viewStart" |
| 60 | tools:text="@string/install_gpu_driver_description" /> | 54 | tools:text="@string/install_gpu_driver_description" /> |
| 61 | 55 | ||
| @@ -65,10 +59,7 @@ | |||
| 65 | android:layout_width="match_parent" | 59 | android:layout_width="match_parent" |
| 66 | android:layout_height="wrap_content" | 60 | android:layout_height="wrap_content" |
| 67 | android:layout_marginTop="6dp" | 61 | android:layout_marginTop="6dp" |
| 68 | android:ellipsize="none" | ||
| 69 | android:marqueeRepeatLimit="marquee_forever" | ||
| 70 | android:requiresFadingEdge="horizontal" | 62 | android:requiresFadingEdge="horizontal" |
| 71 | android:singleLine="true" | ||
| 72 | android:textAlignment="viewStart" | 63 | android:textAlignment="viewStart" |
| 73 | tools:text="@string/install_gpu_driver_description" /> | 64 | tools:text="@string/install_gpu_driver_description" /> |
| 74 | 65 | ||
diff --git a/src/android/app/src/main/res/layout/card_folder.xml b/src/android/app/src/main/res/layout/card_folder.xml index ed4a7ca8f..e3a5f1a86 100644 --- a/src/android/app/src/main/res/layout/card_folder.xml +++ b/src/android/app/src/main/res/layout/card_folder.xml | |||
| @@ -21,10 +21,7 @@ | |||
| 21 | android:layout_width="0dp" | 21 | android:layout_width="0dp" |
| 22 | android:layout_height="wrap_content" | 22 | android:layout_height="wrap_content" |
| 23 | android:layout_gravity="center_vertical|start" | 23 | android:layout_gravity="center_vertical|start" |
| 24 | android:ellipsize="none" | ||
| 25 | android:marqueeRepeatLimit="marquee_forever" | ||
| 26 | android:requiresFadingEdge="horizontal" | 24 | android:requiresFadingEdge="horizontal" |
| 27 | android:singleLine="true" | ||
| 28 | android:textAlignment="viewStart" | 25 | android:textAlignment="viewStart" |
| 29 | app:layout_constraintBottom_toBottomOf="parent" | 26 | app:layout_constraintBottom_toBottomOf="parent" |
| 30 | app:layout_constraintEnd_toStartOf="@+id/button_layout" | 27 | app:layout_constraintEnd_toStartOf="@+id/button_layout" |
diff --git a/src/android/app/src/main/res/layout/card_game.xml b/src/android/app/src/main/res/layout/card_game.xml index 6340171ec..411b50315 100644 --- a/src/android/app/src/main/res/layout/card_game.xml +++ b/src/android/app/src/main/res/layout/card_game.xml | |||
| @@ -40,10 +40,7 @@ | |||
| 40 | android:layout_width="0dp" | 40 | android:layout_width="0dp" |
| 41 | android:layout_height="wrap_content" | 41 | android:layout_height="wrap_content" |
| 42 | android:layout_marginTop="8dp" | 42 | android:layout_marginTop="8dp" |
| 43 | android:ellipsize="none" | ||
| 44 | android:marqueeRepeatLimit="marquee_forever" | ||
| 45 | android:requiresFadingEdge="horizontal" | 43 | android:requiresFadingEdge="horizontal" |
| 46 | android:singleLine="true" | ||
| 47 | android:textAlignment="center" | 44 | android:textAlignment="center" |
| 48 | android:textSize="14sp" | 45 | android:textSize="14sp" |
| 49 | app:layout_constraintEnd_toEndOf="@+id/image_game_screen" | 46 | app:layout_constraintEnd_toEndOf="@+id/image_game_screen" |
diff --git a/src/android/app/src/main/res/layout/card_simple_outlined.xml b/src/android/app/src/main/res/layout/card_simple_outlined.xml index b73930e7e..e29df6a2d 100644 --- a/src/android/app/src/main/res/layout/card_simple_outlined.xml +++ b/src/android/app/src/main/res/layout/card_simple_outlined.xml | |||
| @@ -59,9 +59,6 @@ | |||
| 59 | android:textAlignment="viewStart" | 59 | android:textAlignment="viewStart" |
| 60 | android:textSize="14sp" | 60 | android:textSize="14sp" |
| 61 | android:textStyle="bold" | 61 | android:textStyle="bold" |
| 62 | android:singleLine="true" | ||
| 63 | android:marqueeRepeatLimit="marquee_forever" | ||
| 64 | android:ellipsize="none" | ||
| 65 | android:requiresFadingEdge="horizontal" | 62 | android:requiresFadingEdge="horizontal" |
| 66 | android:layout_marginTop="6dp" | 63 | android:layout_marginTop="6dp" |
| 67 | android:visibility="gone" | 64 | android:visibility="gone" |
diff --git a/src/android/app/src/main/res/layout/fragment_game_properties.xml b/src/android/app/src/main/res/layout/fragment_game_properties.xml index 436ebd79d..5e3f3cf28 100644 --- a/src/android/app/src/main/res/layout/fragment_game_properties.xml +++ b/src/android/app/src/main/res/layout/fragment_game_properties.xml | |||
| @@ -76,10 +76,7 @@ | |||
| 76 | android:layout_marginTop="12dp" | 76 | android:layout_marginTop="12dp" |
| 77 | android:layout_marginBottom="12dp" | 77 | android:layout_marginBottom="12dp" |
| 78 | android:layout_marginHorizontal="16dp" | 78 | android:layout_marginHorizontal="16dp" |
| 79 | android:ellipsize="none" | ||
| 80 | android:marqueeRepeatLimit="marquee_forever" | ||
| 81 | android:requiresFadingEdge="horizontal" | 79 | android:requiresFadingEdge="horizontal" |
| 82 | android:singleLine="true" | ||
| 83 | android:textAlignment="center" | 80 | android:textAlignment="center" |
| 84 | tools:text="deko_basic" /> | 81 | tools:text="deko_basic" /> |
| 85 | 82 | ||