Inject DirectoryDetails into MenuManager Const.
Rather than passing to *every* method.
Change-Id: I5890891fa8c98b7db542775655b67c270e699886
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index d41c521..c96d605 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -152,12 +152,6 @@
*/
public abstract MenuManager getMenuManager();
- /**
- * Provides Activity a means of injection into and specialization of
- * DirectoryFragment.
- */
- public abstract DirectoryDetails getDirectoryDetails();
-
public abstract void onDocumentPicked(DocumentInfo doc, Model model);
public abstract void onDocumentsPicked(List<DocumentInfo> docs);
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index 55dffb1..ac45c16 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -31,12 +31,17 @@
public abstract class MenuManager {
- final protected State mState;
final protected SearchViewManager mSearchManager;
+ final protected State mState;
+ final protected DirectoryDetails mDirDetails;
- public MenuManager(SearchViewManager searchManager, State displayState) {
+ public MenuManager(
+ SearchViewManager searchManager,
+ State displayState,
+ DirectoryDetails dirDetails) {
mSearchManager = searchManager;
mState = displayState;
+ mDirDetails = dirDetails;
}
/** @see ActionModeController */
@@ -53,14 +58,13 @@
}
/** @see BaseActivity#onPrepareOptionsMenu */
- public void updateOptionMenu(Menu menu, DirectoryDetails directoryDetails) {
- updateCreateDir(menu.findItem(R.id.menu_create_dir), directoryDetails);
- updateSettings(menu.findItem(R.id.menu_settings), directoryDetails);
- updateNewWindow(menu.findItem(R.id.menu_new_window), directoryDetails);
- updateModePicker(menu.findItem(
- R.id.menu_grid), menu.findItem(R.id.menu_list), directoryDetails);
+ public void updateOptionMenu(Menu menu) {
+ updateCreateDir(menu.findItem(R.id.menu_create_dir));
+ updateSettings(menu.findItem(R.id.menu_settings));
+ updateNewWindow(menu.findItem(R.id.menu_new_window));
+ updateModePicker(menu.findItem(R.id.menu_grid), menu.findItem(R.id.menu_list));
// Sort menu item is managed by SortMenuManager
- updateAdvanced(menu.findItem(R.id.menu_advanced), directoryDetails);
+ updateAdvanced(menu.findItem(R.id.menu_advanced));
Menus.disableHiddenItems(menu);
}
@@ -77,8 +81,7 @@
// Pickers don't have any context menu at this moment.
}
- public void inflateContextMenuForContainer(
- Menu menu, MenuInflater inflater, DirectoryDetails directoryDetails) {
+ public void inflateContextMenuForContainer(Menu menu, MenuInflater inflater) {
throw new UnsupportedOperationException("Pickers don't allow context menu.");
}
@@ -166,11 +169,11 @@
* Called when user tries to generate a context menu anchored to an empty pane.
*/
@VisibleForTesting
- public void updateContextMenuForContainer(Menu menu, DirectoryDetails directoryDetails) {
+ public void updateContextMenuForContainer(Menu menu) {
MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard);
MenuItem selectAll = menu.findItem(R.id.menu_select_all);
- paste.setEnabled(directoryDetails.hasItemsToPaste() && directoryDetails.canCreateDoc());
+ paste.setEnabled(mDirDetails.hasItemsToPaste() && mDirDetails.canCreateDoc());
updateSelectAll(selectAll);
}
@@ -185,19 +188,18 @@
updateEject(eject, root);
}
- protected void updateModePicker(
- MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
+ protected void updateModePicker(MenuItem grid, MenuItem list) {
grid.setVisible(mState.derivedMode != State.MODE_GRID);
list.setVisible(mState.derivedMode != State.MODE_LIST);
}
- protected void updateAdvanced(MenuItem advanced, DirectoryDetails directoryDetails) {
+ protected void updateAdvanced(MenuItem advanced) {
advanced.setVisible(mState.showAdvancedOption);
advanced.setTitle(mState.showAdvancedOption && mState.showAdvanced
? R.string.menu_advanced_hide : R.string.menu_advanced_show);
}
- protected void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
+ protected void updateSettings(MenuItem settings) {
settings.setVisible(false);
}
@@ -209,7 +211,7 @@
eject.setVisible(false);
}
- protected void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
+ protected void updateNewWindow(MenuItem newWindow) {
newWindow.setVisible(false);
}
@@ -253,7 +255,7 @@
protected abstract void updateOpenInContextMenu(
MenuItem open, SelectionDetails selectionDetails);
protected abstract void updateSelectAll(MenuItem selectAll);
- protected abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
+ protected abstract void updateCreateDir(MenuItem createDir);
/**
* Access to meta data about the selection.
diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java
index bcd1f30..997fc8a 100644
--- a/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -448,8 +448,7 @@
// TODO: inject DirectoryDetails into MenuManager constructor
// Since both classes are supplied by Activity and created
// at the same time.
- mMenuManager.inflateContextMenuForContainer(
- menu, inflater, getBaseActivity().getDirectoryDetails());
+ mMenuManager.inflateContextMenuForContainer(menu, inflater);
} else {
mMenuManager.inflateContextMenuForDocs(menu, inflater, mSelectionMetadata);
}
diff --git a/src/com/android/documentsui/manager/ManageActivity.java b/src/com/android/documentsui/manager/ManageActivity.java
index 0b4c982..77ff743 100644
--- a/src/com/android/documentsui/manager/ManageActivity.java
+++ b/src/com/android/documentsui/manager/ManageActivity.java
@@ -81,7 +81,6 @@
private long mDrawerLastFiddled;
private Tuner mTuner;
private MenuManager mMenuManager;
- private DirectoryDetails mDetails;
private DocumentClipper mClipper;
public ManageActivity() {
@@ -93,14 +92,16 @@
super.onCreate(icicle);
mClipper = DocumentsApplication.getDocumentClipper(this);
- mMenuManager = new MenuManager(mSearchManager, mState);
+ mMenuManager = new MenuManager(
+ mSearchManager,
+ mState,
+ new DirectoryDetails(this) {
+ @Override
+ public boolean hasItemsToPaste() {
+ return mClipper.hasItemsToPaste();
+ }
+ });
mTuner = new Tuner(this, mState);
- mDetails = new DirectoryDetails(this) {
- @Override
- public boolean hasItemsToPaste() {
- return mClipper.hasItemsToPaste();
- }
- };
mClipper = DocumentsApplication.getDocumentClipper(this);
RootsFragment.show(getFragmentManager(), this::openRootSettings);
@@ -223,7 +224,7 @@
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- mMenuManager.updateOptionMenu(menu, mDetails);
+ mMenuManager.updateOptionMenu(menu);
return true;
}
@@ -543,11 +544,6 @@
return mMenuManager;
}
- @Override
- public DirectoryDetails getDirectoryDetails() {
- return mDetails;
- }
-
/**
* Builds a stack for the specific Uris. Multi roots are not supported, as it's impossible
* to know which root to select. Also, the stack doesn't contain intermediate directories.
diff --git a/src/com/android/documentsui/manager/MenuManager.java b/src/com/android/documentsui/manager/MenuManager.java
index 7fca108..7b611ac 100644
--- a/src/com/android/documentsui/manager/MenuManager.java
+++ b/src/com/android/documentsui/manager/MenuManager.java
@@ -29,13 +29,16 @@
public final class MenuManager extends com.android.documentsui.MenuManager {
- public MenuManager(SearchViewManager searchManager, State displayState) {
- super(searchManager, displayState);
+ public MenuManager(
+ SearchViewManager searchManager,
+ State displayState,
+ DirectoryDetails dirDetails) {
+ super(searchManager, displayState, dirDetails);
}
@Override
- public void updateOptionMenu(Menu menu, DirectoryDetails details) {
- super.updateOptionMenu(menu, details);
+ public void updateOptionMenu(Menu menu) {
+ super.updateOptionMenu(menu);
// It hides icon if searching in progress
mSearchManager.updateMenu();
@@ -50,10 +53,9 @@
}
@Override
- public void inflateContextMenuForContainer(
- Menu menu, MenuInflater inflater, DirectoryDetails directoryDetails) {
+ public void inflateContextMenuForContainer(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.container_context_menu, menu);
- updateContextMenuForContainer(menu, directoryDetails);
+ updateContextMenuForContainer(menu);
}
@Override
@@ -92,13 +94,13 @@
}
@Override
- protected void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
- settings.setVisible(directoryDetails.hasRootSettings());
+ protected void updateSettings(MenuItem settings) {
+ settings.setVisible(mDirDetails.hasRootSettings());
}
@Override
- protected void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
- newWindow.setVisible(directoryDetails.shouldShowFancyFeatures());
+ protected void updateNewWindow(MenuItem newWindow) {
+ newWindow.setVisible(mDirDetails.shouldShowFancyFeatures());
}
@Override
@@ -143,9 +145,9 @@
}
@Override
- protected void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
+ protected void updateCreateDir(MenuItem createDir) {
createDir.setVisible(true);
- createDir.setEnabled(directoryDetails.canCreateDirectory());
+ createDir.setEnabled(mDirDetails.canCreateDirectory());
}
@Override
@@ -164,4 +166,4 @@
rename.setVisible(true);
rename.setEnabled(!selectionDetails.containsPartialFiles() && selectionDetails.canRename());
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/documentsui/picker/MenuManager.java b/src/com/android/documentsui/picker/MenuManager.java
index 5385482..a61081b 100644
--- a/src/com/android/documentsui/picker/MenuManager.java
+++ b/src/com/android/documentsui/picker/MenuManager.java
@@ -30,20 +30,21 @@
public final class MenuManager extends com.android.documentsui.MenuManager {
- private boolean mPicking;
+ public MenuManager(SearchViewManager searchManager, State displayState, DirectoryDetails dirDetails) {
+ super(searchManager, displayState, dirDetails);
- public MenuManager(SearchViewManager searchManager, State displayState) {
- super(searchManager, displayState);
+ }
- mPicking = mState.action == ACTION_CREATE
+ private boolean picking() {
+ return mState.action == ACTION_CREATE
|| mState.action == ACTION_OPEN_TREE
|| mState.action == ACTION_PICK_COPY_DESTINATION;
}
@Override
- public void updateOptionMenu(Menu menu, DirectoryDetails details) {
- super.updateOptionMenu(menu, details);
- if (mPicking) {
+ public void updateOptionMenu(Menu menu) {
+ super.updateOptionMenu(menu);
+ if (picking()) {
// May already be hidden because the root
// doesn't support search.
mSearchManager.showMenu(false);
@@ -51,14 +52,13 @@
}
@Override
- protected void updateModePicker(
- MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
+ protected void updateModePicker(MenuItem grid, MenuItem list) {
// No display options in recent directories
- if (mPicking && directoryDetails.isInRecents()) {
+ if (picking() && mDirDetails.isInRecents()) {
grid.setVisible(false);
list.setVisible(false);
} else {
- super.updateModePicker(grid, list, directoryDetails);
+ super.updateModePicker(grid, list);
}
}
@@ -68,9 +68,9 @@
}
@Override
- protected void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
- createDir.setVisible(mPicking);
- createDir.setEnabled(mPicking && directoryDetails.canCreateDirectory());
+ protected void updateCreateDir(MenuItem createDir) {
+ createDir.setVisible(picking());
+ createDir.setEnabled(picking() && mDirDetails.canCreateDirectory());
}
@Override
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index 83e446a..2e88c54 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -69,7 +69,6 @@
private static final String TAG = "DocumentsActivity";
private MenuManager mMenuManager;
private Tuner mTuner;
- private DirectoryDetails mDetails;
public PickActivity() {
super(R.layout.documents_activity, TAG);
@@ -79,8 +78,7 @@
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
mTuner = new Tuner(this, mState);
- mMenuManager = new MenuManager(mSearchManager, mState);
- mDetails = new DirectoryDetails(this);
+ mMenuManager = new MenuManager(mSearchManager, mState, new DirectoryDetails(this));
if (mState.action == ACTION_CREATE) {
final String mimeType = getIntent().getType();
@@ -223,7 +221,7 @@
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- mMenuManager.updateOptionMenu(menu, mDetails);
+ mMenuManager.updateOptionMenu(menu);
final DocumentInfo cwd = getCurrentDirectory();
@@ -406,11 +404,6 @@
return mMenuManager;
}
- @Override
- public DirectoryDetails getDirectoryDetails() {
- return mDetails;
- }
-
private static final class PickFinishTask extends PairedTask<PickActivity, Void, Void> {
private final Uri mUri;