Pre alpha watermark
* android: Add pre-alpha warning dialog and banner * qt: android: Add pre-alpha warning banner
This commit is contained in:
parent
077592903e
commit
5f0542c2bf
8 changed files with 104 additions and 1 deletions
|
@ -240,6 +240,8 @@ dependencies {
|
||||||
implementation("androidx.navigation:navigation-ui-ktx:2.8.9")
|
implementation("androidx.navigation:navigation-ui-ktx:2.8.9")
|
||||||
implementation("info.debatty:java-string-similarity:2.0.0")
|
implementation("info.debatty:java-string-similarity:2.0.0")
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
|
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 {
|
fun runGitCommand(command: List<String>): String {
|
||||||
|
|
|
@ -30,6 +30,7 @@ object Settings {
|
||||||
YuzuApplication.appContext.getString(R.string.preferences_player, player)
|
YuzuApplication.appContext.getString(R.string.preferences_player, player)
|
||||||
|
|
||||||
const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch"
|
const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch"
|
||||||
|
const val PREF_SHOULD_SHOW_PRE_ALPHA_WARNING = "ShouldShowPreAlphaWarning"
|
||||||
const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown"
|
const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown"
|
||||||
|
|
||||||
// Deprecated input overlay preference keys
|
// Deprecated input overlay preference keys
|
||||||
|
|
|
@ -346,6 +346,7 @@ class SetupFragment : Fragment() {
|
||||||
.putBoolean(Settings.PREF_FIRST_APP_LAUNCH, false)
|
.putBoolean(Settings.PREF_FIRST_APP_LAUNCH, false)
|
||||||
.apply()
|
.apply()
|
||||||
mainActivity.finishSetup(binding.root.findNavController())
|
mainActivity.finishSetup(binding.root.findNavController())
|
||||||
|
mainActivity.showPreAlphaWarningDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun pageForward() {
|
fun pageForward() {
|
||||||
|
|
|
@ -7,13 +7,16 @@ import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.Gravity
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import android.widget.PopupMenu
|
import android.widget.PopupMenu
|
||||||
|
import android.widget.TextView
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.updatePadding
|
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 org.yuzu.yuzu_emu.utils.collect
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
|
import androidx.core.view.updateLayoutParams
|
||||||
|
|
||||||
class GamesFragment : Fragment() {
|
class GamesFragment : Fragment() {
|
||||||
private var _binding: FragmentGamesBinding? = null
|
private var _binding: FragmentGamesBinding? = null
|
||||||
|
@ -148,6 +152,7 @@ class GamesFragment : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
setInsets()
|
setInsets()
|
||||||
|
addPreAlphaBanner()
|
||||||
}
|
}
|
||||||
|
|
||||||
val applyGridGamesBinding = {
|
val applyGridGamesBinding = {
|
||||||
|
@ -218,6 +223,49 @@ class GamesFragment : Fragment() {
|
||||||
navController.navigate(R.id.action_gamesFragment_to_homeSettingsFragment)
|
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) {
|
private fun showViewMenu(anchor: View) {
|
||||||
val popup = PopupMenu(requireContext(), anchor)
|
val popup = PopupMenu(requireContext(), anchor)
|
||||||
popup.menuInflater.inflate(R.menu.menu_game_views, popup.menu)
|
popup.menuInflater.inflate(R.menu.menu_game_views, popup.menu)
|
||||||
|
|
|
@ -48,6 +48,7 @@ import java.io.BufferedInputStream
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
import java.util.zip.ZipEntry
|
import java.util.zip.ZipEntry
|
||||||
import java.util.zip.ZipInputStream
|
import java.util.zip.ZipInputStream
|
||||||
|
import androidx.core.content.edit
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity(), ThemeProvider {
|
class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||||
private lateinit var binding: ActivityMainBinding
|
private lateinit var binding: ActivityMainBinding
|
||||||
|
@ -83,6 +84,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||||
.getBoolean(Settings.PREF_FIRST_APP_LAUNCH, true)
|
.getBoolean(Settings.PREF_FIRST_APP_LAUNCH, true)
|
||||||
if (!firstTimeSetup) {
|
if (!firstTimeSetup) {
|
||||||
checkKeys()
|
checkKeys()
|
||||||
|
showPreAlphaWarningDialog()
|
||||||
}
|
}
|
||||||
checkedDecryption = true
|
checkedDecryption = true
|
||||||
}
|
}
|
||||||
|
@ -138,6 +140,30 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||||
setInsets()
|
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() {
|
private fun checkKeys() {
|
||||||
if (!NativeLibrary.areKeysPresent()) {
|
if (!NativeLibrary.areKeysPresent()) {
|
||||||
MessageDialogFragment.newInstance(
|
MessageDialogFragment.newInstance(
|
||||||
|
|
|
@ -32,6 +32,10 @@
|
||||||
<string name="view_list">List</string>
|
<string name="view_list">List</string>
|
||||||
<string name="view_grid">Grid</string>
|
<string name="view_grid">Grid</string>
|
||||||
<string name="folder">Folder</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="add_directory_success">"New game directory added successfully "</string>
|
||||||
<string name="home_games">Games</string>
|
<string name="home_games">Games</string>
|
||||||
<string name="home_search">Search</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
|
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.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -369,6 +369,25 @@ GameList::GameList(FileSys::VirtualFilesystem vfs_, FileSys::ManualContentProvid
|
||||||
|
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->setSpacing(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(tree_view);
|
||||||
layout->addWidget(search_field);
|
layout->addWidget(search_field);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
|
@ -172,6 +172,9 @@ private:
|
||||||
QFileSystemWatcher* watcher = nullptr;
|
QFileSystemWatcher* watcher = nullptr;
|
||||||
ControllerNavigation* controller_navigation = nullptr;
|
ControllerNavigation* controller_navigation = nullptr;
|
||||||
CompatibilityList compatibility_list;
|
CompatibilityList compatibility_list;
|
||||||
|
QHBoxLayout* warning_layout = nullptr;
|
||||||
|
QWidget* warning_widget = nullptr;
|
||||||
|
QLabel* pre_alpha_warning = nullptr;
|
||||||
|
|
||||||
friend class GameListSearchField;
|
friend class GameListSearchField;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue