mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
add about info
This commit is contained in:
@@ -6,6 +6,7 @@ import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.ProgressBar
|
||||
@@ -18,6 +19,7 @@ import androidx.documentfile.provider.DocumentFile
|
||||
import coil.load
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import com.google.android.material.button.MaterialButtonToggleGroup
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.materialswitch.MaterialSwitch
|
||||
import java.net.URLEncoder
|
||||
import java.util.ArrayDeque
|
||||
@@ -57,6 +59,7 @@ class GameLibraryActivity : AppCompatActivity() {
|
||||
private lateinit var gamesListContainer: LinearLayout
|
||||
private lateinit var gamesGridContainer: LinearLayout
|
||||
private lateinit var btnChangeFolder: MaterialButton
|
||||
private lateinit var btnAbout: ImageButton
|
||||
private lateinit var viewModeToggle: MaterialButtonToggleGroup
|
||||
private lateinit var switchBoxArtLookup: MaterialSwitch
|
||||
|
||||
@@ -89,6 +92,7 @@ class GameLibraryActivity : AppCompatActivity() {
|
||||
gamesListContainer = findViewById(R.id.library_games_container)
|
||||
gamesGridContainer = findViewById(R.id.library_games_grid_container)
|
||||
btnChangeFolder = findViewById(R.id.btn_change_games_folder)
|
||||
btnAbout = findViewById(R.id.btn_library_about)
|
||||
viewModeToggle = findViewById(R.id.library_view_mode_toggle)
|
||||
switchBoxArtLookup = findViewById(R.id.switch_box_art_lookup)
|
||||
|
||||
@@ -103,6 +107,9 @@ class GameLibraryActivity : AppCompatActivity() {
|
||||
btnChangeFolder.setOnClickListener {
|
||||
pickGamesFolder.launch(gamesFolderUri)
|
||||
}
|
||||
btnAbout.setOnClickListener {
|
||||
showAboutDialog()
|
||||
}
|
||||
viewModeToggle.addOnButtonCheckedListener { _, checkedId, isChecked ->
|
||||
if (!isChecked) {
|
||||
return@addOnButtonCheckedListener
|
||||
@@ -619,5 +626,42 @@ class GameLibraryActivity : AppCompatActivity() {
|
||||
private fun dp(value: Int): Int {
|
||||
return (value * resources.displayMetrics.density).toInt()
|
||||
}
|
||||
|
||||
private fun showAboutDialog() {
|
||||
val labels = arrayOf(
|
||||
getString(R.string.library_about_link_source),
|
||||
getString(R.string.library_about_link_privacy),
|
||||
getString(R.string.library_about_link_fork),
|
||||
getString(R.string.library_about_link_license),
|
||||
getString(R.string.library_about_link_disclaimer)
|
||||
)
|
||||
val urls = arrayOf(
|
||||
getString(R.string.library_about_url_source),
|
||||
getString(R.string.library_about_url_privacy),
|
||||
getString(R.string.library_about_url_fork),
|
||||
getString(R.string.library_about_url_license),
|
||||
getString(R.string.library_about_url_disclaimer)
|
||||
)
|
||||
|
||||
MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.library_about_title)
|
||||
.setMessage(R.string.library_about_message)
|
||||
.setItems(labels) { _, which ->
|
||||
openExternalLink(urls[which])
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun openExternalLink(url: String) {
|
||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)).apply {
|
||||
addCategory(Intent.CATEGORY_BROWSABLE)
|
||||
}
|
||||
try {
|
||||
startActivity(intent)
|
||||
} catch (_: Exception) {
|
||||
Toast.makeText(this, getString(R.string.library_about_open_failed), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,19 +39,29 @@
|
||||
android:orientation="vertical"
|
||||
android:padding="24dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/library_title"
|
||||
android:textAppearance="@style/TextAppearance.Material3.HeadlineMedium" />
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:text="@string/library_subtitle"
|
||||
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:textColor="@color/xemu_text_muted" />
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/library_title"
|
||||
android:textAppearance="@style/TextAppearance.Material3.HeadlineMedium" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btn_library_about"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/library_about_button_desc"
|
||||
android:padding="6dp"
|
||||
android:src="@android:drawable/ic_dialog_info"
|
||||
android:tint="@color/xemu_green" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/library_folder_text"
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
<string name="setup_disc_value">Games Folder: %1$s</string>
|
||||
|
||||
<string name="library_title">Game Library</string>
|
||||
<string name="library_subtitle">Pick a game to launch in xemu.</string>
|
||||
<string name="library_change_folder">Change Folder</string>
|
||||
<string name="library_view_list">List</string>
|
||||
<string name="library_view_cover_grid">Cover Grid</string>
|
||||
@@ -40,4 +39,18 @@
|
||||
<string name="library_game_size">Size: %1$s</string>
|
||||
<string name="library_game_path">Path: %1$s</string>
|
||||
<string name="library_open_game">Open</string>
|
||||
<string name="library_about_button_desc">About X1 BOX</string>
|
||||
<string name="library_about_title">About X1 BOX</string>
|
||||
<string name="library_about_message">X1 BOX is a community project based on xemu. Select a link below:</string>
|
||||
<string name="library_about_open_failed">Unable to open link.</string>
|
||||
<string name="library_about_link_source">Source Code (X1 BOX)</string>
|
||||
<string name="library_about_link_privacy">Privacy Policy</string>
|
||||
<string name="library_about_link_fork">Forked From (xemu)</string>
|
||||
<string name="library_about_link_license">License (LICENSE)</string>
|
||||
<string name="library_about_link_disclaimer">License Disclaimer (COPYING)</string>
|
||||
<string name="library_about_url_source" translatable="false">https://github.com/izzy2lost/xemu</string>
|
||||
<string name="library_about_url_privacy" translatable="false">https://www.izzy2lost.com/x1box-privacy</string>
|
||||
<string name="library_about_url_fork" translatable="false">https://github.com/xemu-project/xemu</string>
|
||||
<string name="library_about_url_license" translatable="false">https://github.com/izzy2lost/xemu/blob/master/LICENSE</string>
|
||||
<string name="library_about_url_disclaimer" translatable="false">https://github.com/izzy2lost/xemu/blob/master/COPYING</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user