From 1d3964588c3455ff782da7a4afde02d2f002950d Mon Sep 17 00:00:00 2001 From: TwistedUmbrella Date: Thu, 29 Mar 2018 22:41:30 -0400 Subject: [PATCH] Add basic shell for game search functionaliy Implement search using current file handling --- .../com/reicast/emulator/FileBrowser.java | 11 +++++-- .../com/reicast/emulator/MainActivity.java | 29 +++++++++++++++++++ .../app/src/main/res/layout/app_bar_main.xml | 8 +++++ .../app/src/main/res/values/strings.xml | 1 + 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/shell/android-studio/app/src/main/java/com/reicast/emulator/FileBrowser.java b/shell/android-studio/app/src/main/java/com/reicast/emulator/FileBrowser.java index 81b52b3b8..f1fb5bd41 100644 --- a/shell/android-studio/app/src/main/java/com/reicast/emulator/FileBrowser.java +++ b/shell/android-studio/app/src/main/java/com/reicast/emulator/FileBrowser.java @@ -58,6 +58,7 @@ public class FileBrowser extends Fragment { private Drawable orig_bg; private boolean ImgBrowse; private boolean games; + private String searchQuery = null; private OnItemSelectedListener mCallback; private SharedPreferences mPrefs; @@ -85,8 +86,10 @@ public class FileBrowser extends Fragment { game_directory = b.getString("path_entry"); } } + if (b.getString("search_params") != null) { + searchQuery = b.getString("search_params"); + } } - } public static HashSet getExternalMounts() { @@ -253,9 +256,11 @@ public class FileBrowser extends Fragment { return false; } else if (array == R.array.flash && !name.startsWith("dc_")) { return false; - } else { + } else if (searchQuery == null || name.toLowerCase(Locale.getDefault()) + .contains(searchQuery.toLowerCase(Locale.getDefault()))) return StringUtils.endsWithIgnoreCase(name, "." + type); - } + else + return false; } }; diff --git a/shell/android-studio/app/src/main/java/com/reicast/emulator/MainActivity.java b/shell/android-studio/app/src/main/java/com/reicast/emulator/MainActivity.java index 848795e99..c79733d42 100644 --- a/shell/android-studio/app/src/main/java/com/reicast/emulator/MainActivity.java +++ b/shell/android-studio/app/src/main/java/com/reicast/emulator/MainActivity.java @@ -9,6 +9,7 @@ import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Configuration; +import android.database.Cursor; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -22,6 +23,7 @@ import android.support.v4.app.Fragment; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Gravity; @@ -192,6 +194,33 @@ public class MainActivity extends AppCompatActivity implements navigationView.getMenu().findItem(R.id.rateme_menu).setVisible(false); } navigationView.setNavigationItemSelectedListener(this); + + final SearchView searchView = (SearchView) findViewById(R.id.searchView); + if (searchView != null) { + searchView.setQueryHint(getString(R.string.search_hint)); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + FileBrowser fragment = new FileBrowser(); + Bundle args = new Bundle(); + args.putBoolean("ImgBrowse", true); + args.putString("browse_entry", home_directory); + args.putBoolean("games_entry", true); + args.putString("search_params", query); + fragment.setArguments(args); + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragment_container, fragment, "MAIN_BROWSER") + .addToBackStack(null).commit(); + setTitle(R.string.browser); + searchView.onActionViewCollapsed(); + return false; + } + @Override + public boolean onQueryTextChange(String s) { + return false; + } + }); + } } public void generateErrorLog() { diff --git a/shell/android-studio/app/src/main/res/layout/app_bar_main.xml b/shell/android-studio/app/src/main/res/layout/app_bar_main.xml index 4baf9cf14..a14b7c6d6 100644 --- a/shell/android-studio/app/src/main/res/layout/app_bar_main.xml +++ b/shell/android-studio/app/src/main/res/layout/app_bar_main.xml @@ -18,6 +18,14 @@ android:background="@android:color/black" app:popupTheme="@style/AppTheme.PopupOverlay"> + + diff --git a/shell/android-studio/app/src/main/res/values/strings.xml b/shell/android-studio/app/src/main/res/values/strings.xml index 329ed9a58..693fc4a25 100644 --- a/shell/android-studio/app/src/main/res/values/strings.xml +++ b/shell/android-studio/app/src/main/res/values/strings.xml @@ -55,6 +55,7 @@ Default Disk Game List + Game (ie. Crazy Taxi) Game Info - %1$s Game Info Unavailable