diff --git a/app/build.gradle b/app/build.gradle
index 1c2d236..0ea9a38 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,18 +3,18 @@ plugins {
}
android {
- namespace 'com.izzy2lost.psx2'
- compileSdk 36
- ndkVersion '28.2.13676358'
+ namespace = 'com.izzy2lost.psx2'
+ compileSdk = 36
+ ndkVersion = '28.2.13676358'
defaultConfig {
- applicationId "com.izzy2lost.psx2"
- minSdk 26
- targetSdk 36
+ applicationId = "com.izzy2lost.psx2"
+ minSdk = 26
+ targetSdk = 36
versionCode 10
versionName "1.0.8"
// APK
- setProperty("archivesBaseName","PSX2_${versionCode}_${new Date().format('yyyyMMddHHmm')}")
+ base.archivesName = "PSX2_${versionCode}_${new Date().format('yyyyMMddHHmm')}"
externalNativeBuild {
cmake {
@@ -36,8 +36,8 @@ android {
buildTypes {
release {
- minifyEnabled true
- shrinkResources true
+ minifyEnabled = true
+ shrinkResources = true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
ndk {
debugSymbolLevel 'SYMBOL_TABLE'
@@ -46,13 +46,13 @@ android {
}
// Relax lint for test release builds
lint {
- checkReleaseBuilds false
- abortOnError false
+ checkReleaseBuilds = false
+ abortOnError = false
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_21
- targetCompatibility JavaVersion.VERSION_21
- coreLibraryDesugaringEnabled true
+ sourceCompatibility = JavaVersion.VERSION_21
+ targetCompatibility = JavaVersion.VERSION_21
+ coreLibraryDesugaringEnabled = true
}
externalNativeBuild {
cmake {
@@ -66,7 +66,7 @@ android {
}
exclude 'META-INF/DEPENDENCIES'
}
- buildToolsVersion '36.0.0'
+ buildToolsVersion = '36.0.0'
}
tasks.register('bumpVersion') {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b9724f3..75278aa 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -43,7 +43,8 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="false"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppTheme"
+ tools:ignore="UnusedAttribute">
diff --git a/app/src/main/java/com/izzy2lost/psx2/MainActivity.java b/app/src/main/java/com/izzy2lost/psx2/MainActivity.java
index 58c91a1..a44cf2e 100644
--- a/app/src/main/java/com/izzy2lost/psx2/MainActivity.java
+++ b/app/src/main/java/com/izzy2lost/psx2/MainActivity.java
@@ -423,19 +423,12 @@ public class MainActivity extends AppCompatActivity implements GamesCoverDialogF
@Override
protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // Force dark mode for consistent appearance
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
- // Android 12+ (API 31+)
- getWindow().getDecorView().getWindowInsetsController().setSystemBarsAppearance(0,
- android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS |
- android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS);
- }
- // Force dark mode using AppCompat
+ // FORCE dark mode always - ignore system setting
androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode(
androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES);
+ super.onCreate(savedInstanceState);
+
// Enable edge-to-edge for Android 15+ compatibility
EdgeToEdge.enable(this);
@@ -1277,14 +1270,9 @@ public class MainActivity extends AppCompatActivity implements GamesCoverDialogF
Uri treeUri = data.getData();
if (treeUri != null) {
final int takeFlags = (data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION));
- if ((takeFlags & Intent.FLAG_GRANT_READ_URI_PERMISSION) != 0) {
+ if (takeFlags != 0) {
try {
- getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
- } catch (SecurityException ignored) {}
- }
- if ((takeFlags & Intent.FLAG_GRANT_WRITE_URI_PERMISSION) != 0) {
- try {
- getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+ getContentResolver().takePersistableUriPermission(treeUri, takeFlags);
} catch (SecurityException ignored) {}
}
// Save folder and optionally show games
@@ -1670,12 +1658,6 @@ public class MainActivity extends AppCompatActivity implements GamesCoverDialogF
return true;
}
- // Handle back button for non-gamepad sources
- if (p_keyCode == KeyEvent.KEYCODE_BACK) {
- showExitDialog();
- return true;
- }
-
// Skip SDL controller manager to avoid mapping conflicts
return super.onKeyDown(p_keyCode, p_event);
}
@@ -1795,12 +1777,7 @@ public class MainActivity extends AppCompatActivity implements GamesCoverDialogF
}
}
- @Override
- public void onBackPressed() {
- // Fallback for older Android versions
- super.onBackPressed();
- showExitDialog();
- }
+ // Removed deprecated onBackPressed() - using OnBackPressedCallback instead
private void showExitDialog() {
new MaterialAlertDialogBuilder(this,
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..b2a61fe
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/dialog_covers_grid.xml b/app/src/main/res/layout/dialog_covers_grid.xml
new file mode 100644
index 0000000..4a8fb38
--- /dev/null
+++ b/app/src/main/res/layout/dialog_covers_grid.xml
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/brand_aliases.xml b/app/src/main/res/values/brand_aliases.xml
index 69606cf..7455129 100644
--- a/app/src/main/res/values/brand_aliases.xml
+++ b/app/src/main/res/values/brand_aliases.xml
@@ -5,10 +5,10 @@
@color/md_theme_secondary
@color/md_theme_outline
@color/md_theme_secondary
-
- #800061A3
+
+ #809ECAFF
-
+
#B31C2026
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index f3d7c7f..cc3f012 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,32 +1,33 @@
- #0061A3
- #FFFFFF
+
+ #9ECAFF
+ #003258
#33A1FF
#00365E
- #416184
- #FFFFFF
- #B4D4FE
- #3C5C7F
- #883DA4
- #FFFFFF
+ #A9C9F2
+ #0C3253
+ #2A4B6E
+ #9BBBE3
+ #EEB1FF
+ #53006F
#CD7DE8
#580375
- #BA1A1A
- #FFFFFF
- #FFDAD6
- #93000A
- #F8F9FF
- #181C22
- #F8F9FF
- #181C22
- #DBE3F0
- #404752
- #707883
- #BFC7D4
+ #FFB4AB
+ #690005
+ #93000A
+ #FFDAD6
+ #0F1419
+ #DFE2EA
+ #0F1419
+ #DFE2EA
+ #404752
+ #BFC7D4
+ #89919E
+ #404752
#000000
- #2C3137
- #EEF1F9
- #9ECAFF
+ #DFE2EA
+ #2C3137
+ #0061A3
#D1E4FF
#001D36
#9ECAFF
@@ -39,107 +40,107 @@
#330045
#EEB1FF
#6E228A
- #D7DAE2
- #F8F9FF
- #FFFFFF
- #F0F3FC
- #EBEEF6
- #E5E8F0
- #DFE2EA
- #003861
+ #0F1419
+ #353940
+ #0A0E14
+ #181C22
+ #1C2026
+ #262A30
+ #31353B
+ #003A5F
#FFFFFF
- #0070BB
+ #1F76C5
#FFFFFF
- #143859
+ #384355
#FFFFFF
- #506F94
+ #6A7588
#FFFFFF
- #5B0777
+ #513A5B
#FFFFFF
- #994DB4
+ #846C8E
#FFFFFF
- #740006
+ #8C0009
#FFFFFF
- #CF2C27
+ #DA342E
#FFFFFF
- #F8F9FF
- #181C22
- #F8F9FF
- #0D1117
- #DBE3F0
- #2F3741
- #4B535E
- #666E79
+ #E8E8EA
+ #191C1E
+ #E8E8EA
+ #191C1E
+ #E0E2EC
+ #40434A
+ #5C5F66
+ #787A82
#000000
- #2C3137
- #EEF1F9
- #9ECAFF
- #0070BB
+ #2E3036
+ #F0F0F4
+ #A6C8FF
+ #1F76C5
#FFFFFF
- #005794
+ #005DAB
#FFFFFF
- #506F94
+ #6A7588
#FFFFFF
- #37577A
+ #515C6F
#FFFFFF
- #994DB4
+ #846C8E
#FFFFFF
- #7D3299
+ #6A5474
#FFFFFF
- #C3C6CE
- #F8F9FF
+ #D9D9DC
+ #F9F9FC
#FFFFFF
- #F0F3FC
- #E5E8F0
- #DADDE5
- #CED2D9
- #002E51
+ #F3F3F6
+ #EDEDF0
+ #E7E8EA
+ #E2E2E5
+ #00213D
#FFFFFF
- #004B80
+ #003A5F
#FFFFFF
- #052E4F
+ #172332
#FFFFFF
- #2A4B6E
+ #384355
#FFFFFF
- #4C0066
+ #2E1A39
#FFFFFF
- #70258C
+ #513A5B
#FFFFFF
- #600004
+ #4E0002
#FFFFFF
- #98000A
+ #8C0009
#FFFFFF
- #F8F9FF
- #181C22
- #F8F9FF
+ #E8E8EA
+ #191C1E
+ #E8E8EA
#000000
- #DBE3F0
- #000000
- #252D37
- #424A55
+ #E0E2EC
+ #21242A
+ #40434A
+ #40434A
#000000
- #2C3137
+ #2E3036
#FFFFFF
- #9ECAFF
- #004B80
+ #E1ECFF
+ #003A5F
#FFFFFF
- #00345C
+ #002541
#FFFFFF
- #2A4B6E
+ #384355
#FFFFFF
- #0F3456
+ #222C3D
#FFFFFF
- #70258C
+ #513A5B
#FFFFFF
- #570074
+ #3A2444
#FFFFFF
- #B5B9C1
- #F8F9FF
+ #D9D9DC
+ #F9F9FC
#FFFFFF
- #EEF1F9
- #DFE2EA
- #D1D4DC
- #C3C6CE
+ #F3F3F6
+ #EDEDF0
+ #E7E8EA
+ #E2E2E5
#FFEB3B
diff --git a/app/src/main/res/values/styles_buttons.xml b/app/src/main/res/values/styles_buttons.xml
index 9b5c84d..ac90a99 100644
--- a/app/src/main/res/values/styles_buttons.xml
+++ b/app/src/main/res/values/styles_buttons.xml
@@ -13,6 +13,7 @@
- @color/brand_ripple
- @color/brand_surface_container_semi
- true
+
- @android:color/transparent
- 0dp
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 8a8653b..5efbd97 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,6 +1,9 @@
-
+