aboutsummaryrefslogtreecommitdiff
path: root/src
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
parent077592903e3a4204fb81655d2af0a8a69bd7f5e8 (diff)
Pre alpha watermark
* android: Add pre-alpha warning dialog and banner * qt: android: Add pre-alpha warning banner
Diffstat (limited to 'src')
-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
-rw-r--r--src/yuzu/game_list.cpp19
-rw-r--r--src/yuzu/game_list.h3
8 files changed, 104 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>
diff --git a/src/yuzu/game_list.cpp b/src/yuzu/game_list.cpp
index 19adef7a2b..d59e9c89e3 100644
--- a/src/yuzu/game_list.cpp
+++ b/src/yuzu/game_list.cpp
@@ -369,6 +369,25 @@ GameList::GameList(FileSys::VirtualFilesystem vfs_, FileSys::ManualContentProvid
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
+
+ warning_layout = new QHBoxLayout;
+ pre_alpha_warning = new QLabel;
+ pre_alpha_warning->setText(
+ tr("IMPORTANT: Eden is PRE-ALPHA SOFTWARE and is not meant to be used by or get shared to the public just yet; "
+ "Bugs and unfinished features are expected to be present at this stage."));
+ pre_alpha_warning->setOpenExternalLinks(true);
+ pre_alpha_warning->setStyleSheet(
+ QString::fromStdString("color: black; font-weight: bold;"));
+
+ warning_layout->addWidget(pre_alpha_warning);
+ warning_layout->addStretch();
+ warning_layout->setContentsMargins(3, 3, 3, 3);
+ warning_widget = new QWidget;
+ warning_widget->setStyleSheet(QString::fromStdString("background-color: khaki;"));
+ warning_widget->setLayout(warning_layout);
+
+ layout->addWidget(warning_widget);
+
layout->addWidget(tree_view);
layout->addWidget(search_field);
setLayout(layout);
diff --git a/src/yuzu/game_list.h b/src/yuzu/game_list.h
index 79f9c7ec0f..d51110758a 100644
--- a/src/yuzu/game_list.h
+++ b/src/yuzu/game_list.h
@@ -172,6 +172,9 @@ private:
QFileSystemWatcher* watcher = nullptr;
ControllerNavigation* controller_navigation = nullptr;
CompatibilityList compatibility_list;
+ QHBoxLayout* warning_layout = nullptr;
+ QWidget* warning_widget = nullptr;
+ QLabel* pre_alpha_warning = nullptr;
friend class GameListSearchField;