From abaf41baa7ead3f4106a4493dc737cd9340bc448 Mon Sep 17 00:00:00 2001 From: Eder Bastos Date: Sun, 10 May 2015 11:07:16 -0400 Subject: [PATCH] Add a subtitle to AddDirectoryActivity containing the currently displayed folder's path. --- .../activities/AddDirectoryActivity.java | 16 ++++++--- .../activities/GameGridActivity.java | 9 +++-- .../dolphinemu/adapters/FileAdapter.java | 35 ++++++++++++------- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/AddDirectoryActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/AddDirectoryActivity.java index 04e6ffb9f6..1c536d8f91 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/AddDirectoryActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/AddDirectoryActivity.java @@ -24,6 +24,7 @@ public class AddDirectoryActivity extends Activity implements FileAdapter.FileCl public static final String KEY_CURRENT_PATH = BuildConfig.APPLICATION_ID + ".path"; private FileAdapter mAdapter; + private Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) @@ -32,8 +33,8 @@ public class AddDirectoryActivity extends Activity implements FileAdapter.FileCl setContentView(R.layout.activity_add_directory); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_folder_list); - setActionBar(toolbar); + mToolbar = (Toolbar) findViewById(R.id.toolbar_folder_list); + setActionBar(mToolbar); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list_files); @@ -46,7 +47,8 @@ public class AddDirectoryActivity extends Activity implements FileAdapter.FileCl if (savedInstanceState == null) { path = Environment.getExternalStorageDirectory().getPath(); - } else + } + else { // Get the path we were looking at before we rotated. path = savedInstanceState.getString(KEY_CURRENT_PATH); @@ -71,7 +73,7 @@ public class AddDirectoryActivity extends Activity implements FileAdapter.FileCl switch (item.getItemId()) { case R.id.menu_up_one_level: - mAdapter.setPath(mAdapter.getPath() + "/.."); + mAdapter.upOneLevel(); break; } @@ -101,4 +103,10 @@ public class AddDirectoryActivity extends Activity implements FileAdapter.FileCl finish(); } + + @Override + public void updateSubtitle(String path) + { + mToolbar.setSubtitle(path); + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/GameGridActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/GameGridActivity.java index e5a8572e5b..bd922ecbed 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/GameGridActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/GameGridActivity.java @@ -69,6 +69,8 @@ public final class GameGridActivity extends Activity public void onClick(View view) { Intent fileChooser = new Intent(GameGridActivity.this, AddDirectoryActivity.class); + + // The second argument to this method is read below in onActivityResult(). startActivityForResult(fileChooser, REQUEST_ADD_DIRECTORY); } }); @@ -85,9 +87,9 @@ public final class GameGridActivity extends Activity /** * Callback from AddDirectoryActivity. Applies any changes necessary to the GameGridActivity. * - * @param requestCode - * @param resultCode - * @param result + * @param requestCode An int describing whether the Activity that is returning did so successfully. + * @param resultCode An int describing what Activity is giving us this callback. + * @param result The information the returning Activity is providing us. */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent result) @@ -99,6 +101,7 @@ public final class GameGridActivity extends Activity // other activities might use this callback in the future (don't forget to change Javadoc!) if (requestCode == REQUEST_ADD_DIRECTORY) { + // Get the path the user selected in AddDirectoryActivity. String path = result.getStringExtra(AddDirectoryActivity.KEY_CURRENT_PATH); // Store this path as a preference. diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java index 2414883279..9ae238d36c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java @@ -26,12 +26,14 @@ public class FileAdapter extends RecyclerView.Adapter implements * Initializes the dataset to be displayed, and associates the Adapter with the * Activity as an event listener. * - * @param gameList + * @param path A String containing the path to the directory to be shown by this Adapter. + * @param listener An Activity that can respond to callbacks from this Adapter. */ public FileAdapter(String path, FileClickListener listener) { mFileList = generateFileList(new File(path)); mListener = listener; + mListener.updateSubtitle(path); } /** @@ -107,12 +109,12 @@ public class FileAdapter extends RecyclerView.Adapter implements * When a file is clicked, determine if it is a directory; if it is, show that new directory's * contents. If it is not, end the activity successfully. * - * @param view + * @param view The View representing the file the user clicked on. */ @Override public void onClick(final View view) { - String path = (String) view.getTag(); + final String path = (String) view.getTag(); File clickedFile = new File(path); @@ -135,6 +137,7 @@ public class FileAdapter extends RecyclerView.Adapter implements { mFileList = fileList; notifyDataSetChanged(); + mListener.updateSubtitle(path); } }, 200); } @@ -148,7 +151,7 @@ public class FileAdapter extends RecyclerView.Adapter implements /** * For a given directory, return a list of Files it contains. * - * @param directory + * @param directory A File representing the directory that should have its contents displayed. * @return */ private ArrayList generateFileList(File directory) @@ -176,26 +179,32 @@ public class FileAdapter extends RecyclerView.Adapter implements return mPath; } - /** - * Mostly just allows the activity's menu option to kick us up a level in the directory - * structure. - * - * @param path - */ public void setPath(String path) { - mPath = path; - File parentDirectory = new File(path); + File directory = new File(path); + + mFileList = generateFileList(directory); + notifyDataSetChanged(); + mListener.updateSubtitle(path); + } + + public void upOneLevel() + { + File currentDirectory = new File(mPath); + File parentDirectory = currentDirectory.getParentFile(); mFileList = generateFileList(parentDirectory); notifyDataSetChanged(); + mListener.updateSubtitle(mPath); } /** - * Callback for when the user wants to add the visible directory to the library. + * Callback to the containing Activity. */ public interface FileClickListener { void finishSuccessfully(); + + void updateSubtitle(String path); } }