blob: d5fc8f280ca5fbf89a485a19a2f5c693bc8609ac [file] [log] [blame]
Ben Lin7c35b032016-05-31 13:24:01 -07001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Garfield Tan25676032016-09-19 13:52:35 -070017package com.android.documentsui.picker;
Ben Lin7c35b032016-05-31 13:24:01 -070018
Steve McKayd9caa6a2016-09-15 16:36:45 -070019import static com.android.documentsui.base.State.ACTION_CREATE;
20import static com.android.documentsui.base.State.ACTION_GET_CONTENT;
21import static com.android.documentsui.base.State.ACTION_OPEN;
22import static com.android.documentsui.base.State.ACTION_OPEN_TREE;
23import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION;
Ben Lin7c35b032016-05-31 13:24:01 -070024
Steve McKay92ae43d2016-11-08 12:06:58 -080025import android.view.KeyboardShortcutGroup;
Ben Lin7c35b032016-05-31 13:24:01 -070026import android.view.Menu;
27import android.view.MenuItem;
28
Steve McKayd9caa6a2016-09-15 16:36:45 -070029import com.android.documentsui.base.State;
Steve McKay3a268232016-10-19 11:15:47 -070030import com.android.documentsui.queries.SearchViewManager;
Steve McKayd9caa6a2016-09-15 16:36:45 -070031
Steve McKay92ae43d2016-11-08 12:06:58 -080032import java.util.List;
33import java.util.function.IntFunction;
34
Garfield Tan25676032016-09-19 13:52:35 -070035public final class MenuManager extends com.android.documentsui.MenuManager {
Ben Lin7c35b032016-05-31 13:24:01 -070036
Steve McKaye5d6ca22016-09-19 20:27:24 -070037 public MenuManager(SearchViewManager searchManager, State displayState, DirectoryDetails dirDetails) {
38 super(searchManager, displayState, dirDetails);
Ben Lin7c35b032016-05-31 13:24:01 -070039
Steve McKaye5d6ca22016-09-19 20:27:24 -070040 }
Ben Lin7c35b032016-05-31 13:24:01 -070041
Steve McKay92ae43d2016-11-08 12:06:58 -080042 @Override
43 public void updateKeyboardShortcutsMenu(
44 List<KeyboardShortcutGroup> data, IntFunction<String> stringSupplier) {
45 // None as of yet.
46 }
47
Steve McKaye5d6ca22016-09-19 20:27:24 -070048 private boolean picking() {
49 return mState.action == ACTION_CREATE
Ben Linebf2a172016-06-03 13:46:52 -070050 || mState.action == ACTION_OPEN_TREE
51 || mState.action == ACTION_PICK_COPY_DESTINATION;
52 }
Ben Lin7c35b032016-05-31 13:24:01 -070053
54 @Override
Steve McKaye5d6ca22016-09-19 20:27:24 -070055 public void updateOptionMenu(Menu menu) {
56 super.updateOptionMenu(menu);
57 if (picking()) {
Ben Lin7c35b032016-05-31 13:24:01 -070058 // May already be hidden because the root
59 // doesn't support search.
Tomasz Mikolajewski9e047852017-02-13 14:05:17 +090060 mSearchManager.showMenu(null);
Ben Lin7c35b032016-05-31 13:24:01 -070061 }
Ben Linebf2a172016-06-03 13:46:52 -070062 }
Ben Lin7c35b032016-05-31 13:24:01 -070063
Ben Linebf2a172016-06-03 13:46:52 -070064 @Override
Steve McKaye5d6ca22016-09-19 20:27:24 -070065 protected void updateModePicker(MenuItem grid, MenuItem list) {
Ben Lin25679912016-06-17 11:48:57 -070066 // No display options in recent directories
Steve McKaye5d6ca22016-09-19 20:27:24 -070067 if (picking() && mDirDetails.isInRecents()) {
Ben Lin7c35b032016-05-31 13:24:01 -070068 grid.setVisible(false);
69 list.setVisible(false);
Ben Lin25679912016-06-17 11:48:57 -070070 } else {
Steve McKaye5d6ca22016-09-19 20:27:24 -070071 super.updateModePicker(grid, list);
Ben Lin7c35b032016-05-31 13:24:01 -070072 }
Ben Linebf2a172016-06-03 13:46:52 -070073 }
Ben Lin7c35b032016-05-31 13:24:01 -070074
Ben Linebf2a172016-06-03 13:46:52 -070075 @Override
Garfield Tan25676032016-09-19 13:52:35 -070076 protected void updateSelectAll(MenuItem selectAll) {
Garfield Tanbcc79b32017-03-08 11:38:12 -080077 boolean enabled = mState.allowMultiple;
78 selectAll.setVisible(enabled);
79 selectAll.setEnabled(enabled);
Ben Linebf2a172016-06-03 13:46:52 -070080 }
81
82 @Override
Steve McKaye5d6ca22016-09-19 20:27:24 -070083 protected void updateCreateDir(MenuItem createDir) {
84 createDir.setVisible(picking());
85 createDir.setEnabled(picking() && mDirDetails.canCreateDirectory());
Ben Linebf2a172016-06-03 13:46:52 -070086 }
87
88 @Override
Garfield Tan25676032016-09-19 13:52:35 -070089 protected void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
Garfield Tan06c4b112016-09-14 11:05:58 -070090 updateOpen(open, selectionDetails);
91 }
92
93 @Override
Garfield Tan25676032016-09-19 13:52:35 -070094 protected void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
Garfield Tan06c4b112016-09-14 11:05:58 -070095 updateOpen(open, selectionDetails);
96 }
97
98 private void updateOpen(MenuItem open, SelectionDetails selectionDetails) {
Ben Linebf2a172016-06-03 13:46:52 -070099 open.setVisible(mState.action == ACTION_GET_CONTENT
100 || mState.action == ACTION_OPEN);
Garfield Tan06c4b112016-09-14 11:05:58 -0700101 open.setEnabled(selectionDetails.size() > 0);
Ben Linebf2a172016-06-03 13:46:52 -0700102 }
Ben Lin7c35b032016-05-31 13:24:01 -0700103}