Skip to content

Commit

Permalink
Android: Add a button to open the save directory
Browse files Browse the repository at this point in the history
  • Loading branch information
Ghabry committed Jan 20, 2025
1 parent 2304561 commit 587e071
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import androidx.annotation.NonNull;
import androidx.documentfile.provider.DocumentFile;

import org.easyrpg.player.Helper;
import org.easyrpg.player.settings.SettingsManager;

import java.io.ByteArrayOutputStream;
Expand Down Expand Up @@ -173,6 +174,20 @@ public String toString() {
return getDisplayTitle();
}

public Uri createSaveUri(Context context) {
if (!getSavePath().isEmpty()) {
DocumentFile saveFolder = Helper.createFolderInSave(context, getSavePath());

if (saveFolder != null) {
return saveFolder.getUri();
}
} else {
return Uri.parse(getGameFolderPath());
}

return null;
}

public static Game fromCacheEntry(Context context, String cache) {
String[] entries = cache.split(String.valueOf(escapeCode));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.text.InputType;
import android.util.DisplayMetrics;
import android.util.Log;
Expand All @@ -16,17 +15,14 @@
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
Expand All @@ -36,10 +32,13 @@
import com.google.android.material.navigation.NavigationView;

import org.easyrpg.player.BaseActivity;
import org.easyrpg.player.Helper;
import org.easyrpg.player.R;
import org.easyrpg.player.settings.SettingsManager;
import org.libsdl.app.SDL;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

Expand Down Expand Up @@ -343,22 +342,33 @@ public void onBindViewHolder(final ViewHolder holder, final int position) {

// Settings Button
holder.settingsButton.setOnClickListener(v -> {
String[] choices_list = {
ArrayList<String> choices_list = new ArrayList<String>(Arrays.asList(
activity.getResources().getString(R.string.select_game_region),
activity.getResources().getString(R.string.game_rename),
activity.getResources().getString(R.string.launch_debug_mode)
};
));

if (android.os.Build.VERSION.SDK_INT >= 26) {
choices_list.add(activity.getResources().getString(R.string.open_save_folder));
}

// It's 2025 and converting an ArrayList to an Array is still hot-garbage in Java
// because of type erasure and ugly APIs
String[] choices_list_arr = new String[choices_list.size()];
choices_list.toArray(choices_list_arr);

AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder
.setTitle(R.string.settings)
.setItems(choices_list, (dialog, which) -> {
.setItems(choices_list_arr, (dialog, which) -> {
if (which == 0) {
chooseRegion(activity, holder, gameList.get(position));
chooseRegion(activity, holder, game);
} else if (which == 1) {
renameGame(activity, holder, gameList.get(position));
renameGame(activity, holder, game);
} else if (which == 2) {
launchGame(position, true);
} else if (which == 3) {
Helper.openFileBrowser(activity, game.createSaveUri(activity));
}
});
builder.show();
Expand Down
1 change: 1 addition & 0 deletions builds/android/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
<string name="change_the_layout">Change the layout</string>
<string name="launch_debug_mode">Launch in debug mode</string>
<string name="game_rename">Rename game</string>
<string name="open_save_folder">Open savegame folder</string>
<string name="choose_layout">Choose a layout</string>
<string name="unknown_region">Unknown region</string>
<string name="region_modification_failed">Changing region failed</string>
Expand Down

0 comments on commit 587e071

Please sign in to comment.