mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
Show file format details in game properties
This commit is contained in:
@ -449,6 +449,8 @@ public final class NativeLibrary
|
||||
|
||||
public static native boolean InstallWAD(String file);
|
||||
|
||||
public static native String FormatSize(long bytes, int decimals);
|
||||
|
||||
private static boolean alertResult = false;
|
||||
|
||||
public static boolean displayAlertMsg(final String caption, final String text,
|
||||
|
@ -10,6 +10,7 @@ import android.widget.TextView;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.model.GameFile;
|
||||
import org.dolphinemu.dolphinemu.services.GameFileCacheService;
|
||||
@ -50,8 +51,17 @@ public final class GameDetailsDialog extends DialogFragment
|
||||
TextView textGameId = contents.findViewById(R.id.text_game_id);
|
||||
TextView textRevision = contents.findViewById(R.id.text_revision);
|
||||
|
||||
TextView textFileFormat = contents.findViewById(R.id.text_file_format);
|
||||
TextView textCompression = contents.findViewById(R.id.text_compression);
|
||||
TextView textBlockSize = contents.findViewById(R.id.text_block_size);
|
||||
|
||||
TextView labelFileFormat = contents.findViewById(R.id.label_file_format);
|
||||
TextView labelCompression = contents.findViewById(R.id.label_compression);
|
||||
TextView labelBlockSize = contents.findViewById(R.id.label_block_size);
|
||||
|
||||
String country = getResources().getStringArray(R.array.countryNames)[gameFile.getCountry()];
|
||||
String description = gameFile.getDescription();
|
||||
String fileSize = NativeLibrary.FormatSize(gameFile.getFileSize(), 2);
|
||||
|
||||
textTitle.setText(gameFile.getTitle());
|
||||
textDescription.setText(gameFile.getDescription());
|
||||
@ -59,11 +69,49 @@ public final class GameDetailsDialog extends DialogFragment
|
||||
{
|
||||
textDescription.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
textCountry.setText(country);
|
||||
textCompany.setText(gameFile.getCompany());
|
||||
textGameId.setText(gameFile.getGameId());
|
||||
textRevision.setText(Integer.toString(gameFile.getRevision()));
|
||||
|
||||
if (!gameFile.shouldShowFileFormatDetails())
|
||||
{
|
||||
labelFileFormat.setText(R.string.game_details_file_size);
|
||||
textFileFormat.setText(fileSize);
|
||||
|
||||
labelCompression.setVisibility(View.GONE);
|
||||
textCompression.setVisibility(View.GONE);
|
||||
labelBlockSize.setVisibility(View.GONE);
|
||||
textBlockSize.setVisibility(View.GONE);
|
||||
}
|
||||
else
|
||||
{
|
||||
long blockSize = gameFile.getBlockSize();
|
||||
String compression = gameFile.getCompressionMethod();
|
||||
|
||||
textFileFormat.setText(String.format("%1$s (%2$s)", gameFile.getBlobTypeString(), fileSize));
|
||||
|
||||
if (compression.isEmpty())
|
||||
{
|
||||
textCompression.setText(R.string.game_details_no_compression);
|
||||
}
|
||||
else
|
||||
{
|
||||
textCompression.setText(gameFile.getCompressionMethod());
|
||||
}
|
||||
|
||||
if (blockSize > 0)
|
||||
{
|
||||
textBlockSize.setText(NativeLibrary.FormatSize(blockSize, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
labelBlockSize.setVisibility(View.GONE);
|
||||
textBlockSize.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
PicassoUtils.loadGameBanner(banner, gameFile);
|
||||
|
||||
builder.setView(contents);
|
||||
|
@ -38,6 +38,16 @@ public class GameFile
|
||||
|
||||
public native int getRevision();
|
||||
|
||||
public native String getBlobTypeString();
|
||||
|
||||
public native long getBlockSize();
|
||||
|
||||
public native String getCompressionMethod();
|
||||
|
||||
public native boolean shouldShowFileFormatDetails();
|
||||
|
||||
public native long getFileSize();
|
||||
|
||||
public native int[] getBanner();
|
||||
|
||||
public native int getBannerWidth();
|
||||
|
@ -42,7 +42,7 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/text_description" />
|
||||
|
||||
<View
|
||||
android:id="@+id/divider"
|
||||
android:id="@+id/divider_1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:background="#1F000000"
|
||||
@ -59,7 +59,7 @@
|
||||
android:gravity="start"
|
||||
android:text="@string/game_details_country"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/divider" />
|
||||
app:layout_constraintTop_toBottomOf="@id/divider_1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/label_company"
|
||||
@ -89,15 +89,14 @@
|
||||
android:gravity="start"
|
||||
android:text="@string/game_details_revision"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/label_game_id"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
app:layout_constraintTop_toBottomOf="@id/label_game_id" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
android:id="@+id/label_barrier"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:barrierDirection="end"
|
||||
app:constraint_referenced_ids="label_country,label_company,label_game_id,label_revision" />
|
||||
app:constraint_referenced_ids="label_country,label_company,label_game_id,label_revision,label_file_format,label_compression,label_block_size" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_country"
|
||||
@ -143,4 +142,77 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/label_revision" />
|
||||
|
||||
<View
|
||||
android:id="@+id/divider_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:background="#1F000000"
|
||||
android:layout_marginTop="32dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/label_revision" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/label_file_format"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:gravity="start"
|
||||
android:text="@string/game_details_file_format"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/divider_2" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/label_compression"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:gravity="start"
|
||||
android:text="@string/game_details_compression"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/label_file_format" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/label_block_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:gravity="start"
|
||||
android:text="@string/game_details_block_size"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/label_compression" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_file_format"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:gravity="end"
|
||||
tools:text="ISO (4.38 GiB)"
|
||||
app:layout_constraintStart_toEndOf="@id/label_barrier"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/label_file_format" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_compression"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:gravity="end"
|
||||
tools:text="No Compression"
|
||||
app:layout_constraintStart_toEndOf="@id/label_barrier"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/label_compression" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_block_size"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:gravity="end"
|
||||
tools:text="0 B"
|
||||
app:layout_constraintStart_toEndOf="@id/label_barrier"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/label_block_size" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@ -317,6 +317,11 @@
|
||||
<string name="game_details_company">Company</string>
|
||||
<string name="game_details_game_id">Game ID</string>
|
||||
<string name="game_details_revision">Revision</string>
|
||||
<string name="game_details_file_size">File Size</string>
|
||||
<string name="game_details_file_format">File Format</string>
|
||||
<string name="game_details_compression">Compression</string>
|
||||
<string name="game_details_block_size">Block Size</string>
|
||||
<string name="game_details_no_compression">No Compression</string>
|
||||
|
||||
<!-- Emulation Menu -->
|
||||
<string name="emulation_screenshot">Take Screenshot</string>
|
||||
|
Reference in New Issue
Block a user