multi file and multi dumpstate support

This commit is contained in:
2025-04-15 13:15:47 -04:00
parent 2e4d02b503
commit 418520c000
11 changed files with 1112 additions and 27 deletions

View File

@@ -84,13 +84,64 @@
android:textSize="18sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/dumpstateStatusText"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="4dp">
<TextView
android:id="@+id/dumpstateStatusText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/looking_for_dumpstate"
android:textSize="16sp"
android:maxLines="3"
android:ellipsize="start"/>
<Button
android:id="@+id/toggleDumpstateListButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/show_dumpstates"
android:textSize="12sp"
style="@style/Widget.AppCompat.Button.Small" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dumpstateRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/looking_for_dumpstate"
android:textSize="16sp"/>
android:visibility="gone"/>
<LinearLayout
android:id="@+id/multiSelectButtonsLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="8dp"
android:visibility="gone">
<Button
android:id="@+id/selectAllButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/select_all"
android:textSize="12sp"
style="@style/Widget.AppCompat.Button.Borderless.Colored" />
<Button
android:id="@+id/clearSelectionsButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/clear_selections"
android:textSize="12sp"
style="@style/Widget.AppCompat.Button.Borderless.Colored" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/titleText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/dumpstate_selection_title"
android:textSize="18sp"
android:textStyle="bold"
android:layout_marginBottom="16dp"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dumpstateRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight="300dp"/>
<TextView
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_dumpstate_found"
android:gravity="center"
android:visibility="gone"
android:padding="16dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="end"
android:layout_marginTop="16dp">
<Button
android:id="@+id/cancelButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@android:string/cancel"
style="@style/Widget.AppCompat.Button.Borderless"/>
<Button
android:id="@+id/selectButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/select_button"
android:enabled="false"/>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:background="?attr/selectableItemBackground">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/fileNameText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textStyle="bold"
android:ellipsize="start"
android:singleLine="true"
android:layout_marginStart="8dp"
app:layout_constraintStart_toEndOf="@id/checkBox"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/fileDateText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_marginStart="8dp"
app:layout_constraintStart_toEndOf="@id/checkBox"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/fileNameText"/>
<TextView
android:id="@+id/fileSizeText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_marginStart="8dp"
app:layout_constraintStart_toEndOf="@id/checkBox"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/fileDateText"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -37,4 +37,23 @@
<!-- Permissions -->
<string name="permission_storage_required">Storage permission is required</string>
<string name="permission_not_granted">Permission not granted!</string>
<!-- Dumpstate Selection Dialog -->
<string name="dumpstate_selection_title">Select a Dumpstate File</string>
<string name="dumpstate_selection_subtitle">Found %1$d dumpstate files</string>
<string name="select_button">Select</string>
<string name="dumpstate_date_format">Created: %1$s</string>
<string name="dumpstate_size_format">Size: %1$s</string>
<string name="multiple_dumpstates_found">Multiple dumpstate files found</string>
<string name="choose_dumpstate">Choose a dumpstate file</string>
<!-- Multi-select Dumpstate -->
<string name="show_dumpstates">Show Files</string>
<string name="hide_dumpstates">Hide Files</string>
<string name="select_all">Select All</string>
<string name="clear_selections">Clear All</string>
<string name="upload_multiple_dumpstates">Upload Selected Files (%1$d)</string>
<string name="no_dumpstates_selected">No files selected</string>
<string name="preparing_multiple_files">Preparing %1$d files for upload…</string>
<string name="uploading_multiple_files">Uploading %1$d files as one package</string>
</resources>