diff options
author | Ben Lin <linben@google.com> | 2016-05-31 13:24:01 -0700 |
---|---|---|
committer | Ben Lin <linben@google.com> | 2016-06-08 22:45:42 +0000 |
commit | a433c6dc4d141fa39a8b36ad9a782ac2dfe1f67c (patch) | |
tree | 65a110040668b40664232341c7f94f8be39c9a86 /packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java | |
parent | dc37031cc94eac00f58be555300faee332dc7941 (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.java | 87 |
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(); + } + +} |