aboutsummaryrefslogtreecommitdiff
path: root/src/android
diff options
context:
space:
mode:
authorPabloMK7 <hackyglitch2@gmail.com>2025-04-09 23:45:12 +0200
committerBriar <205427297+icy-briar@users.noreply.github.com>2025-04-10 00:18:18 +0200
commit5f0542c2bf2edb3481ca042e6ad3367b68634bf0 (patch)
treeb0808bf3b0ac7ed90ba1181d7557fdab30a59da3 /src/android
parent077592903e3a4204fb81655d2af0a8a69bd7f5e8 (diff)
Pre alpha watermark
* android: Add pre-alpha warning dialog and banner * qt: android: Add pre-alpha warning banner
Diffstat (limited to 'src/android')
-rw-r--r--src/android/app/build.gradle.kts2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt1
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt1
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt48
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt26
-rw-r--r--src/android/app/src/main/res/values/strings.xml5
6 files changed, 82 insertions, 1 deletions
diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts
index 24f0f8c818..8517855abc 100644
--- a/src/android/app/build.gradle.kts
+++ b/src/android/app/build.gradle.kts
@@ -240,6 +240,8 @@ dependencies {
implementation("androidx.navigation:navigation-ui-ktx:2.8.9")
implementation("info.debatty:java-string-similarity:2.0.0")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
+ implementation("androidx.compose.ui:ui-graphics-android:1.7.8")
+ implementation("androidx.compose.ui:ui-text-android:1.7.8")
}
fun runGitCommand(command: List<String>): String {
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
index 9aa8eeed13..e189c21560 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
@@ -30,6 +30,7 @@ object Settings {
YuzuApplication.appContext.getString(R.string.preferences_player, player)
const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch"
+ const val PREF_SHOULD_SHOW_PRE_ALPHA_WARNING = "ShouldShowPreAlphaWarning"
const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown"
// Deprecated input overlay preference keys
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 5110145001..bf622b9299 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
@@ -346,6 +346,7 @@ class SetupFragment : Fragment() {
.putBoolean(Settings.PREF_FIRST_APP_LAUNCH, false)
.apply()
mainActivity.finishSetup(binding.root.findNavController())
+ mainActivity.showPreAlphaWarningDialog()
}
fun pageForward() {
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 78abd974f6..dd5f8518c3 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
@@ -7,13 +7,16 @@ import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.os.Bundle
+import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.PopupMenu
+import android.widget.TextView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
+import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
@@ -39,6 +42,7 @@ import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect
import java.util.Locale
import androidx.core.content.edit
+import androidx.core.view.updateLayoutParams
class GamesFragment : Fragment() {
private var _binding: FragmentGamesBinding? = null
@@ -148,6 +152,7 @@ class GamesFragment : Fragment() {
}
setInsets()
+ addPreAlphaBanner()
}
val applyGridGamesBinding = {
@@ -218,6 +223,49 @@ class GamesFragment : Fragment() {
navController.navigate(R.id.action_gamesFragment_to_homeSettingsFragment)
}
+ private fun addPreAlphaBanner() {
+ val preAlphaBanner = TextView(requireContext()).apply {
+ id = "pre_alpha_banner".hashCode()
+ layoutParams = ConstraintLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT
+ ).apply {
+ marginStart = resources.getDimensionPixelSize(R.dimen.spacing_med)
+ marginEnd = resources.getDimensionPixelSize(R.dimen.spacing_med)
+ topMargin = resources.getDimensionPixelSize(R.dimen.spacing_large)
+ topToBottom = R.id.frame_search
+ }
+ setPadding(
+ resources.getDimensionPixelSize(R.dimen.spacing_med),
+ resources.getDimensionPixelSize(R.dimen.spacing_large),
+ resources.getDimensionPixelSize(R.dimen.spacing_med),
+ resources.getDimensionPixelSize(R.dimen.spacing_med)
+ )
+
+ setBackgroundColor(
+ MaterialColors.getColor(
+ this,
+ com.google.android.material.R.attr.colorPrimary
+ )
+ )
+ text = getString(R.string.pre_alpha_warning)
+ setTextAppearance(
+ com.google.android.material.R.style.TextAppearance_Material3_HeadlineSmall
+ )
+ setTextColor(
+ MaterialColors.getColor(
+ this,
+ com.google.android.material.R.attr.colorOnError
+ )
+ )
+ gravity = Gravity.CENTER
+ }
+ binding.root.addView(preAlphaBanner)
+ binding.swipeRefresh.updateLayoutParams<ConstraintLayout.LayoutParams> {
+ topToBottom = preAlphaBanner.id
+ }
+ }
+
private fun showViewMenu(anchor: View) {
val popup = PopupMenu(requireContext(), anchor)
popup.menuInflater.inflate(R.menu.menu_game_views, popup.menu)
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 58ff109deb..f1f05e6b20 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
@@ -48,6 +48,7 @@ import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
+import androidx.core.content.edit
class MainActivity : AppCompatActivity(), ThemeProvider {
private lateinit var binding: ActivityMainBinding
@@ -83,6 +84,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
.getBoolean(Settings.PREF_FIRST_APP_LAUNCH, true)
if (!firstTimeSetup) {
checkKeys()
+ showPreAlphaWarningDialog()
}
checkedDecryption = true
}
@@ -138,6 +140,30 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
setInsets()
}
+ fun showPreAlphaWarningDialog() {
+ val shouldDisplayAlphaWarning =
+ PreferenceManager.getDefaultSharedPreferences(applicationContext)
+ .getBoolean(Settings.PREF_SHOULD_SHOW_PRE_ALPHA_WARNING, true)
+ if (shouldDisplayAlphaWarning) {
+ MessageDialogFragment.newInstance(
+ this,
+ titleId = R.string.pre_alpha_warning_title,
+ descriptionId = R.string.pre_alpha_warning_description,
+ positiveButtonTitleId = R.string.dont_show_again,
+ negativeButtonTitleId = R.string.close,
+ showNegativeButton = true,
+ positiveAction = {
+ PreferenceManager.getDefaultSharedPreferences(applicationContext)
+ .edit() {
+ putBoolean(Settings.PREF_SHOULD_SHOW_PRE_ALPHA_WARNING, false)
+ }
+ }
+ ).show(supportFragmentManager, MessageDialogFragment.TAG)
+ }
+ }
+
+
+
private fun checkKeys() {
if (!NativeLibrary.areKeysPresent()) {
MessageDialogFragment.newInstance(
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index c4ae05860e..bb0b5c58dc 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -32,6 +32,10 @@
<string name="view_list">List</string>
<string name="view_grid">Grid</string>
<string name="folder">Folder</string>
+ <string name="pre_alpha_warning_title">Pre-Alpha Software</string>
+ <string name="pre_alpha_warning_description">"WARNING: This build is not meant to be shared or shown to the public. This software is in pre-alpha stages and may have bugs and incomplete feature implementations. \nIf you somehow got unauthorized access to this build; it's heavily recommended to uninstall it immediately "</string>
+ <string name="dont_show_again">Dont Show Again</string>
+ <string name="pre_alpha_warning">PRE-ALPHA SOFTWARE; NOT MEANT FOR PUBLIC USE</string>\
<string name="add_directory_success">"New game directory added successfully "</string>
<string name="home_games">Games</string>
<string name="home_search">Search</string>
@@ -1174,5 +1178,4 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</string>
-
</resources>