From 22adcee0528cc9aa0ba47607e20b4643acaab68b Mon Sep 17 00:00:00 2001 From: TwistedUmbrella Date: Thu, 16 Oct 2014 14:55:07 -0400 Subject: [PATCH] Implement functional locator and path navigation --- .../src/com/reicast/emulator/FileBrowser.java | 53 ++++++++++--------- .../com/reicast/emulator/MainActivity.java | 2 +- .../emulator/config/OptionsFragment.java | 11 ++-- 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/shell/android/src/com/reicast/emulator/FileBrowser.java b/shell/android/src/com/reicast/emulator/FileBrowser.java index d09c2c32e..f2440e9ad 100644 --- a/shell/android/src/com/reicast/emulator/FileBrowser.java +++ b/shell/android/src/com/reicast/emulator/FileBrowser.java @@ -60,8 +60,8 @@ public class FileBrowser extends Fragment { private SharedPreferences mPrefs; private File sdcard = Environment.getExternalStorageDirectory(); - private String home_directory = sdcard + "/dc"; - private String game_directory = sdcard + "/dc"; + private String home_directory = sdcard.getAbsolutePath(); + private String game_directory = sdcard.getAbsolutePath(); @Override public void onCreate(Bundle savedInstanceState) { @@ -193,12 +193,11 @@ public class FileBrowser extends Fragment { Toast.LENGTH_LONG).show(); } - if (!ImgBrowse) { -// navigate(sdcard); + if (!ImgBrowse && !games) { LocateGames mLocateGames = new LocateGames(R.array.flash); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mLocateGames - .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, home_directory); + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, home_directory); } else { mLocateGames.execute(home_directory); } @@ -254,31 +253,38 @@ public class FileBrowser extends Fragment { @Override protected void onPostExecute(List items) { - final LinearLayout list = (LinearLayout) parentActivity.findViewById(R.id.game_list); - if (list != null) { - list.removeAllViews(); - } - - String heading = parentActivity.getString(R.string.games_listing); - createListHeader(heading, list, array == R.array.images); if (items != null && !items.isEmpty()) { + final LinearLayout list = (LinearLayout) parentActivity.findViewById(R.id.game_list); + if (list != null) { + list.removeAllViews(); + } + + String heading = parentActivity.getString(R.string.games_listing); + createListHeader(heading, list, array == R.array.images); for (int i = 0; i < items.size(); i++) { createListItem(list, items.get(i), i, array == R.array.images); } + list.invalidate(); } else { - HashSet extStorage = FileBrowser.getExternalMounts(); - if (extStorage != null && !extStorage.isEmpty()) { - for (Iterator sd = extStorage.iterator(); sd.hasNext();) { - String sdCardPath = sd.next(); - if (!sdCardPath.equals(sdcard)) { - sdcard = new File(sdCardPath); - } + browseStorage(); + } + } + } + + private void browseStorage() { + HashSet extStorage = FileBrowser.getExternalMounts(); + if (extStorage != null && !extStorage.isEmpty()) { + for (Iterator sd = extStorage.iterator(); sd.hasNext();) { + String sdCardPath = sd.next().replace("mnt/media_rw", "storage"); + if (!sdCardPath.equals(sdcard.getAbsolutePath())) { + if (new File(sdCardPath).canRead()) { + navigate(new File(sdCardPath)); + return; } } - navigate(sdcard); } - list.invalidate(); } + navigate(sdcard); } private static final class DirSort implements Comparator { @@ -352,12 +358,8 @@ public class FileBrowser extends Fragment { final XMLParser xmlParser = new XMLParser(game, index, mPrefs); xmlParser.setViewParent(parentActivity, childview); - xmlParser.execute(game.getName()); - orig_bg = childview.getBackground(); - // vw.findViewById(R.id.childview).setBackgroundColor(0xFFFFFFFF); - childview.findViewById(R.id.childview).setOnClickListener( new OnClickListener() { public void onClick(View view) { @@ -421,6 +423,7 @@ public class FileBrowser extends Fragment { } }); list.addView(childview); + xmlParser.execute(game.getName()); } void navigate(final File root_sd) { diff --git a/shell/android/src/com/reicast/emulator/MainActivity.java b/shell/android/src/com/reicast/emulator/MainActivity.java index 3b64076ee..60a8bc55c 100644 --- a/shell/android/src/com/reicast/emulator/MainActivity.java +++ b/shell/android/src/com/reicast/emulator/MainActivity.java @@ -46,7 +46,7 @@ public class MainActivity extends SlidingFragmentActivity implements private SharedPreferences mPrefs; private static File sdcard = Environment.getExternalStorageDirectory(); - public static String home_directory = sdcard + "/dc"; + public static String home_directory = sdcard.getAbsolutePath(); private TextView menuHeading; private boolean hasAndroidMarket = false; diff --git a/shell/android/src/com/reicast/emulator/config/OptionsFragment.java b/shell/android/src/com/reicast/emulator/config/OptionsFragment.java index a3333a2ae..035d4cd14 100644 --- a/shell/android/src/com/reicast/emulator/config/OptionsFragment.java +++ b/shell/android/src/com/reicast/emulator/config/OptionsFragment.java @@ -50,8 +50,8 @@ public class OptionsFragment extends Fragment { private SharedPreferences mPrefs; private File sdcard = Environment.getExternalStorageDirectory(); - private String home_directory = sdcard + "/dc"; - private String game_directory = sdcard + "/dc"; + private String home_directory = sdcard.getAbsolutePath(); + private String game_directory = sdcard.getAbsolutePath(); private String[] codes; @@ -91,10 +91,9 @@ public class OptionsFragment extends Fragment { HashSet extStorage = FileBrowser.getExternalMounts(); if (extStorage != null && !extStorage.isEmpty()) { for (Iterator sd = extStorage.iterator(); sd.hasNext();) { - String sdCardPath = sd.next(); - if (!sdCardPath.equals(sdcard)) { -// home_directory = sdCardPath + "/dc"; - game_directory = sdCardPath + "/dc"; + String sdCardPath = sd.next().replace("mnt/media_rw", "storage"); + if (!sdCardPath.equals(sdcard.getAbsolutePath())) { + game_directory = sdCardPath; } } }