From 883f63ddff2103ff2e9318452e077535386f4ed4 Mon Sep 17 00:00:00 2001 From: izzy2lost Date: Thu, 18 Dec 2025 01:41:02 -0500 Subject: [PATCH] ui improvements --- android/app/build.gradle.kts | 3 +- .../java/com/izzy2lost/super3/MainActivity.kt | 218 ++++++++++++++---- .../src/main/res/drawable/data_table_24px.xml | 10 + .../app/src/main/res/drawable/ic_menu_24.xml | 11 + .../src/main/res/drawable/refresh_24px.xml | 10 + .../res/drawable/stadia_controller_24px.xml | 10 + .../app/src/main/res/layout/activity_main.xml | 141 ++++++----- android/app/src/main/res/layout/item_game.xml | 40 ++++ .../app/src/main/res/layout/nav_header.xml | 75 ++++++ android/app/src/main/res/menu/drawer_menu.xml | 3 + .../app/src/main/res/values-night/colors.xml | 27 +++ android/app/src/main/res/values/colors.xml | 32 +++ android/app/src/main/res/values/styles.xml | 8 + android/app/src/main/res/values/themes.xml | 30 ++- 14 files changed, 503 insertions(+), 115 deletions(-) create mode 100644 android/app/src/main/res/drawable/data_table_24px.xml create mode 100644 android/app/src/main/res/drawable/ic_menu_24.xml create mode 100644 android/app/src/main/res/drawable/refresh_24px.xml create mode 100644 android/app/src/main/res/drawable/stadia_controller_24px.xml create mode 100644 android/app/src/main/res/layout/item_game.xml create mode 100644 android/app/src/main/res/layout/nav_header.xml create mode 100644 android/app/src/main/res/menu/drawer_menu.xml create mode 100644 android/app/src/main/res/values-night/colors.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 android/app/src/main/res/values/styles.xml diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 32d1cec..a11936c 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -63,7 +63,8 @@ dependencies { implementation("androidx.core:core-ktx:1.15.0") implementation("androidx.appcompat:appcompat:1.7.0") implementation("androidx.documentfile:documentfile:1.0.1") - implementation("com.google.android.material:material:1.12.0") + implementation("androidx.recyclerview:recyclerview:1.4.0") + implementation("com.google.android.material:material:1.14.0-alpha07") } kotlin { diff --git a/android/app/src/main/java/com/izzy2lost/super3/MainActivity.kt b/android/app/src/main/java/com/izzy2lost/super3/MainActivity.kt index 091b455..8774706 100644 --- a/android/app/src/main/java/com/izzy2lost/super3/MainActivity.kt +++ b/android/app/src/main/java/com/izzy2lost/super3/MainActivity.kt @@ -3,27 +3,53 @@ package com.izzy2lost.super3 import android.content.Intent import android.net.Uri import android.os.Bundle -import android.widget.* +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.GravityCompat +import androidx.core.widget.addTextChangedListener import androidx.documentfile.provider.DocumentFile +import androidx.drawerlayout.widget.DrawerLayout +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.appbar.MaterialToolbar +import com.google.android.material.button.MaterialButton +import com.google.android.material.color.MaterialColors +import com.google.android.material.navigation.NavigationView +import com.google.android.material.search.SearchBar +import com.google.android.material.search.SearchView import java.io.File import kotlin.concurrent.thread class MainActivity : AppCompatActivity() { private val prefs by lazy { getSharedPreferences("super3_prefs", MODE_PRIVATE) } + private lateinit var drawerLayout: DrawerLayout + private lateinit var navigationView: NavigationView + private lateinit var toolbar: MaterialToolbar + private lateinit var searchBar: SearchBar + private lateinit var searchView: SearchView + private lateinit var gamesFolderText: TextView private lateinit var userFolderText: TextView - private lateinit var gamesList: ListView + private lateinit var gamesList: RecyclerView + private lateinit var searchResultsList: RecyclerView private lateinit var statusText: TextView + private lateinit var gamesAdapter: GamesAdapter + private var gamesTreeUri: Uri? = null private var userTreeUri: Uri? = null private var games: List = emptyList() private var zipDocs: Map = emptyMap() + @Volatile + private var scanning = false + private val pickGamesFolder = registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { uri -> if (uri != null) { @@ -49,28 +75,69 @@ class MainActivity : AppCompatActivity() { applyImmersiveMode() setContentView(R.layout.activity_main) - gamesFolderText = findViewById(R.id.games_folder_text) - userFolderText = findViewById(R.id.user_folder_text) + drawerLayout = findViewById(R.id.drawer_layout) + navigationView = findViewById(R.id.navigation_view) + toolbar = findViewById(R.id.toolbar) + searchBar = findViewById(R.id.search_bar) + searchView = findViewById(R.id.search_view) gamesList = findViewById(R.id.games_list) - statusText = findViewById(R.id.status_text) + searchResultsList = findViewById(R.id.search_results_list) - findViewById