Skip to content

Commit

Permalink
file picker
Browse files Browse the repository at this point in the history
  • Loading branch information
weihuoya committed Feb 25, 2022
1 parent 2d4b932 commit c1eba2b
Show file tree
Hide file tree
Showing 20 changed files with 118 additions and 57 deletions.
3 changes: 3 additions & 0 deletions src/android/app/src/main/assets/3dstdb-zh_CN.txt
Expand Up @@ -302,6 +302,9 @@
000400000012C200 = 索尼克音爆 破碎水晶
000400000015DA00 = 跳出!猫猫大战争
0004000000078500 = 纸箱战机 爆 BOOST
0004000000168C00 = 纸箱战机 爆 BOOST
0004000000147200 = 纸箱战机 爆 BOOST
0004000000147100 = 纸箱战机 爆 BOOST
00040000000F4000 = 纸箱战机 WARS
00040000000DCA00 = 纸箱战机 W 超自制
00040000000CC600 = 摇滚西部 最后的游骑兵
Expand Down
Expand Up @@ -267,7 +267,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_open_archive:
jumpToExplore();
break;
return true;

case R.id.menu_delete_sdmc:
deleteAppSdmc();
Expand Down
@@ -1,7 +1,16 @@
package org.citra.emu.ui;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.net.Uri;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
Expand All @@ -12,21 +21,25 @@
import com.nononsenseapps.filepicker.FilePickerFragment;
import java.io.File;
import org.citra.emu.NativeLibrary;
import org.citra.emu.R;

public final class GameFilePickerActivity extends FilePickerActivity implements DialogInterface.OnClickListener {

private GameFilePickerFragment mFilePickerFragment;

public final class GameFilePickerActivity extends FilePickerActivity {
@Override
protected AbstractFilePickerFragment<File> getFragment(@Nullable final String startPath,
final int mode,
final boolean allowMultiple,
final boolean allowExistingFile,
final boolean singleClick) {
AbstractFilePickerFragment<File> fragment = new GameFilePickerFragment();
mFilePickerFragment = new GameFilePickerFragment();
// startPath is allowed to be null. In that case, default folder should be SD-card and not
// "/"
fragment.setArgs(startPath != null ? startPath
: Environment.getExternalStorageDirectory().getPath(),
mode, allowMultiple, allowExistingFile, singleClick);
return fragment;
mFilePickerFragment.setArgs(startPath != null ?
startPath : Environment.getExternalStorageDirectory().getPath(),
mode, allowMultiple, allowExistingFile, singleClick);
return mFilePickerFragment;
}

public static class GameFilePickerFragment extends FilePickerFragment {
Expand All @@ -48,5 +61,55 @@ protected boolean isItemVisible(final File file) {
return file.getName().endsWith(".cia");
return NativeLibrary.isValidFile(file.getName());
}

public String getCurrentPath() {
return mCurrentPath.toString();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_file_picker, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_current_directory:
showEditorDialog();
return true;
}

return false;
}

@Override
public void onClick(DialogInterface dialog, int which) {
EditText editor = ((AlertDialog)dialog).findViewById(R.id.setting_editor);
String text = editor.getText().toString();
File path = new File(text);
if (path.isDirectory()) {
mFilePickerFragment.goToDir(path);
} else {
Toast.makeText(this, R.string.nnf_need_valid_filename, Toast.LENGTH_SHORT).show();
}
}

private void showEditorDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);

LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.dialog_editor, null);

builder.setTitle(R.string.current_directory);
builder.setView(view);
builder.setPositiveButton(android.R.string.ok, this);
builder.show();

EditText editor = view.findViewById(R.id.setting_editor);
editor.setText(mFilePickerFragment.getCurrentPath());
editor.requestFocus();
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,16 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M15,16l-4,4l10,0l0,-4z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M12.06,7.19L3,16.25V20h3.75l9.06,-9.06L12.06,7.19zM5.92,18H5v-0.92l7.06,-7.06l0.92,0.92L5.92,18z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M18.71,8.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34C16.17,4.09 15.92,4 15.66,4c-0.25,0 -0.51,0.1 -0.7,0.29l-1.83,1.83l3.75,3.75L18.71,8.04z"/>
</vector>
10 changes: 10 additions & 0 deletions src/android/app/src/main/res/drawable/outline_refresh_24.xml
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z"/>
</vector>
45 changes: 0 additions & 45 deletions src/android/app/src/main/res/menu/menu_emulation.xml

This file was deleted.

11 changes: 11 additions & 0 deletions src/android/app/src/main/res/menu/menu_file_picker.xml
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
android:id="@+id/menu_current_directory"
android:title="@string/current_directory"
android:icon="@drawable/outline_drive_file_rename_outline_24"
app:showAsAction="always"/>

</menu>
2 changes: 1 addition & 1 deletion src/android/app/src/main/res/menu/menu_setting.xml
Expand Up @@ -5,7 +5,7 @@
<item
android:id="@+id/menu_reset_setting"
android:title="@string/reset_setting"
android:icon="@drawable/ic_refresh"
android:icon="@drawable/outline_refresh_24"
app:showAsAction="never"/>

</menu>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions src/android/app/src/main/res/values-es/strings.xml
Expand Up @@ -246,6 +246,7 @@
<string name="playtime_minutes">%1$s minutes</string>
<string name="playtime_hours">%1$s hours</string>
<string name="open_app_archive">Open Archive Directory</string>
<string name="current_directory">Directorio actual</string>
<string name="delete_app_sdmc">Eliminar directorio de instalación</string>
<string name="delete_shader_cache">Eliminar caché de sombreado</string>
<string name="delete_confirm_notice">¿Estás seguro de eliminar el directorio de archivos del juego?</string>
Expand Down
3 changes: 2 additions & 1 deletion src/android/app/src/main/res/values-zh/strings.xml
Expand Up @@ -246,6 +246,7 @@
<string name="playtime_minutes">%1$s 分钟</string>
<string name="playtime_hours">%1$s 小时</string>
<string name="open_app_archive">打开存档目录</string>
<string name="current_directory">当前目录</string>
<string name="delete_app_sdmc">删除安装目录</string>
<string name="delete_shader_cache">删除着色器缓存</string>
<string name="delete_confirm_notice">确定删除游戏安装目录?</string>
Expand Down Expand Up @@ -276,7 +277,7 @@
<string name="nnf_create_folder_error">Failed to create folder</string>
<string name="nnf_name">Name</string>
<string name="nnf_select_something_first">Please select something first</string>
<string name="nnf_need_valid_filename">Please enter or select a valid filename</string>
<string name="nnf_need_valid_filename">请输入或选择一个有效的文件名</string>
<string name="nnf_permission_external_write_denied">Permission to access filesystem denied</string>
<string name="nnf_filename">Filename</string>
<string name="nnf_list_ok">@android:string/ok</string>
Expand Down
1 change: 1 addition & 0 deletions src/android/app/src/main/res/values/strings.xml
Expand Up @@ -246,6 +246,7 @@
<string name="playtime_minutes">%1$s minutes</string>
<string name="playtime_hours">%1$s hours</string>
<string name="open_app_archive">Open Archive Directory</string>
<string name="current_directory">Current Directory</string>
<string name="delete_app_sdmc">Delete Install Directory</string>
<string name="delete_shader_cache">Delete Shader Cache</string>
<string name="delete_confirm_notice">Are you sure to delete the game install directory?</string>
Expand Down
6 changes: 3 additions & 3 deletions src/core/core.cpp
Expand Up @@ -116,10 +116,10 @@ static void LoadOverrides(u64 title_id) {
Settings::values.skip_slow_draw = true;
} else if (title_id == 0x00040000001CCD00 || title_id == 0x00040000001B4500) {
// The Alliance Alive
Settings::SetFMVHack(!Settings::values.core_downcount_hack);
Settings::values.core_downcount_hack = true;
} else if (title_id == 0x0004000000120900 || title_id == 0x0004000000164300) {
// Lord of Magna: Maiden Heaven
Settings::SetFMVHack(!Settings::values.core_downcount_hack);
Settings::values.core_downcount_hack = true;
} else if (title_id == 0x000400000015CB00) {
// New Atelier Rorona
Settings::values.skip_slow_draw = true;
Expand Down Expand Up @@ -149,7 +149,7 @@ static void LoadOverrides(u64 title_id) {
} else if (title_id == 0x000400000008FE00) {
// 1001 Spikes
Settings::values.stream_buffer_hack = false;
Settings::SetFMVHack(!Settings::values.core_downcount_hack);
Settings::values.core_downcount_hack = true;
} else if (title_id == 0x0004000000049100 || title_id == 0x0004000000030400 ||
title_id == 0x0004000000049000) {
// Star Fox 64
Expand Down

0 comments on commit c1eba2b

Please sign in to comment.