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("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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -346,6 +346,7 @@ class SetupFragment : Fragment() {
|
|||
.putBoolean(Settings.PREF_FIRST_APP_LAUNCH, false)
|
||||
.apply()
|
||||
mainActivity.finishSetup(binding.root.findNavController())
|
||||
mainActivity.showPreAlphaWarningDialog()
|
||||
}
|
||||
|
||||
fun pageForward() {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue