summaryrefslogtreecommitdiff
path: root/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
diff options
context:
space:
mode:
authorBen Lin <linben@google.com>2016-05-31 13:24:01 -0700
committerBen Lin <linben@google.com>2016-06-08 22:45:42 +0000
commita433c6dc4d141fa39a8b36ad9a782ac2dfe1f67c (patch)
tree65a110040668b40664232341c7f94f8be39c9a86 /packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
parentdc37031cc94eac00f58be555300faee332dc7941 (diff)
Isolate Menu/Action management into dedicated manager classes.
We are now also returning fragmentTuner at the activity level, so that directoryFragment does not have to do a .pick() logic depending on the activity type. Rather, the logic lies within the activity itself. Bug: 24416336 Change-Id: Idb200864f6c9468b9193781f6ac505b557ffbce9 (cherry picked from commit bc330a4bf53c3a766292097d1815b9abd469a945)
Diffstat (limited to 'packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java')
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java b/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
new file mode 100644
index 000000000000..f7256ff4857d
--- /dev/null
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.documentsui;
+
+import android.view.Menu;
+import android.view.MenuItem;
+
+import com.android.documentsui.R;
+
+final class FilesMenuManager implements MenuManager {
+
+ private final SearchViewManager mSearchManager;
+
+ public FilesMenuManager(SearchViewManager searchManager) {
+ mSearchManager = searchManager;
+ }
+
+ @Override
+ public void updateActionMenu(Menu menu, SelectionDetails selection) {
+
+ menu.findItem(R.id.menu_open).setVisible(false); // "open" is never used in Files.
+
+ // Commands accessible only via keyboard...
+ MenuItem copy = menu.findItem(R.id.menu_copy_to_clipboard);
+ MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard);
+
+ // Commands visible in the UI...
+ MenuItem rename = menu.findItem(R.id.menu_rename);
+ MenuItem moveTo = menu.findItem(R.id.menu_move_to);
+ MenuItem copyTo = menu.findItem(R.id.menu_copy_to);
+ MenuItem share = menu.findItem(R.id.menu_share);
+ MenuItem delete = menu.findItem(R.id.menu_delete);
+
+ // Commands usually on action-bar, so we always manage visibility.
+ share.setVisible(!selection.containsDirectories() && !selection.containsPartialFiles());
+ delete.setVisible(selection.canDelete());
+
+ // Commands always in overflow, so we don't bother showing/hiding...
+ copyTo.setVisible(true);
+ moveTo.setVisible(true);
+ rename.setVisible(true);
+
+ // copy is not visible, keyboard only
+ copy.setEnabled(!selection.containsPartialFiles());
+
+ copyTo.setEnabled(!selection.containsPartialFiles());
+ moveTo.setEnabled(!selection.containsPartialFiles() && selection.canDelete());
+ rename.setEnabled(!selection.containsPartialFiles() && selection.canRename());
+
+ Menus.disableHiddenItems(menu, copy, paste);
+ }
+
+ @Override
+ public void updateOptionMenu(Menu menu, DirectoryDetails details) {
+
+ final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
+ final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);
+ final MenuItem settings = menu.findItem(R.id.menu_settings);
+ final MenuItem newWindow = menu.findItem(R.id.menu_new_window);
+
+ createDir.setVisible(true);
+ createDir.setEnabled(details.canCreateDirectory());
+ pasteFromCb.setEnabled(details.hasItemsToPaste());
+ settings.setVisible(details.hasRootSettings());
+ newWindow.setVisible(details.shouldShowFancyFeatures());
+
+ Menus.disableHiddenItems(menu, pasteFromCb);
+
+ // It hides icon if searching in progress
+ mSearchManager.updateMenu();
+ }
+
+}