133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell/* 233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Copyright (C) 2010 The Android Open Source Project 333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * 433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * you may not use this file except in compliance with the License. 633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * You may obtain a copy of the License at 733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * 833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * 1033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * Unless required by applicable law or agreed to in writing, software 1133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 1233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * See the License for the specific language governing permissions and 1433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * limitations under the License. 1533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell */ 1633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 1733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellpackage com.android.internal.view.menu; 1833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 1933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport java.util.ArrayList; 2033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport java.util.List; 2133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 2233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.content.ComponentName; 2333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.content.Context; 2433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.content.Intent; 2533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.content.pm.PackageManager; 2633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.content.pm.ResolveInfo; 2733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.KeyEvent; 2833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.Menu; 2933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.MenuItem; 3033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellimport android.view.SubMenu; 3133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 3233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell/** 3333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell * @hide 3433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell */ 3533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powellpublic class ActionMenu implements Menu { 3633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private Context mContext; 3733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 3833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private boolean mIsQwerty; 3933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 4033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private ArrayList<ActionMenuItem> mItems; 4133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 4233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public ActionMenu(Context context) { 4333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mContext = context; 4433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mItems = new ArrayList<ActionMenuItem>(); 4533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 4633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 4733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public Context getContext() { 4833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mContext; 4933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 5033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 5133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem add(CharSequence title) { 5233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return add(0, 0, 0, title); 5333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 5433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 5533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem add(int titleRes) { 5633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return add(0, 0, 0, titleRes); 5733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 5833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 5933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem add(int groupId, int itemId, int order, int titleRes) { 6033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return add(groupId, itemId, order, mContext.getResources().getString(titleRes)); 6133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 6233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 6333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem add(int groupId, int itemId, int order, CharSequence title) { 6433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ActionMenuItem item = new ActionMenuItem(getContext(), 6533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell groupId, itemId, 0, order, title); 6633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mItems.add(order, item); 6733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return item; 6833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 6933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 7033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public int addIntentOptions(int groupId, int itemId, int order, 7133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ComponentName caller, Intent[] specifics, Intent intent, int flags, 7233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell MenuItem[] outSpecificItems) { 7333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell PackageManager pm = mContext.getPackageManager(); 7433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final List<ResolveInfo> lri = 7533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell pm.queryIntentActivityOptions(caller, specifics, intent, 0); 7633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int N = lri != null ? lri.size() : 0; 7733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 7833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if ((flags & FLAG_APPEND_TO_GROUP) == 0) { 7933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell removeGroup(groupId); 8033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 8133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 8233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell for (int i=0; i<N; i++) { 8333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ResolveInfo ri = lri.get(i); 8433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell Intent rintent = new Intent( 8533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ri.specificIndex < 0 ? intent : specifics[ri.specificIndex]); 8633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell rintent.setComponent(new ComponentName( 8733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ri.activityInfo.applicationInfo.packageName, 8833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ri.activityInfo.name)); 8933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final MenuItem item = add(groupId, itemId, order, ri.loadLabel(pm)) 9033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell .setIcon(ri.loadIcon(pm)) 9133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell .setIntent(rintent); 9233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (outSpecificItems != null && ri.specificIndex >= 0) { 9333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell outSpecificItems[ri.specificIndex] = item; 9433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 9533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 9633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 9733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return N; 9833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 9933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 10033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public SubMenu addSubMenu(CharSequence title) { 10133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell // TODO Implement submenus 10233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return null; 10333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 10433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 10533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public SubMenu addSubMenu(int titleRes) { 10633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell // TODO Implement submenus 10733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return null; 10833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 10933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 11033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public SubMenu addSubMenu(int groupId, int itemId, int order, 11133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell CharSequence title) { 11233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell // TODO Implement submenus 11333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return null; 11433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 11533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 11633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) { 11733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell // TODO Implement submenus 11833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return null; 11933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 12033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 12133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void clear() { 12233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mItems.clear(); 12333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 12433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 12533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void close() { 12633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 12733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 12833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private int findItemIndex(int id) { 12933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ArrayList<ActionMenuItem> items = mItems; 13033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int itemCount = items.size(); 13133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell for (int i = 0; i < itemCount; i++) { 13233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (items.get(i).getItemId() == id) { 13333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return i; 13433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 13533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 13633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 13733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return -1; 13833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 13933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 14033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem findItem(int id) { 14133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mItems.get(findItemIndex(id)); 14233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 14333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 14433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public MenuItem getItem(int index) { 14533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mItems.get(index); 14633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 14733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 14833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean hasVisibleItems() { 14933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ArrayList<ActionMenuItem> items = mItems; 15033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int itemCount = items.size(); 15133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 15233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell for (int i = 0; i < itemCount; i++) { 15333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (items.get(i).isVisible()) { 15433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return true; 15533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 15633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 15733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 15833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return false; 15933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 16033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 16133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell private ActionMenuItem findItemWithShortcut(int keyCode, KeyEvent event) { 16233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell // TODO Make this smarter. 16333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final boolean qwerty = mIsQwerty; 16433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ArrayList<ActionMenuItem> items = mItems; 16533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int itemCount = items.size(); 16633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 16733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell for (int i = 0; i < itemCount; i++) { 16833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ActionMenuItem item = items.get(i); 16933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final char shortcut = qwerty ? item.getAlphabeticShortcut() : 17033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell item.getNumericShortcut(); 17133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (keyCode == shortcut) { 17233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return item; 17333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 17433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 17533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return null; 17633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 17733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 17833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean isShortcutKey(int keyCode, KeyEvent event) { 17933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return findItemWithShortcut(keyCode, event) != null; 18033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 18133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 18233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean performIdentifierAction(int id, int flags) { 18333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int index = findItemIndex(id); 18433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (index < 0) { 18533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return false; 18633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 18733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 18833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mItems.get(index).invoke(); 18933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 19033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 19133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public boolean performShortcut(int keyCode, KeyEvent event, int flags) { 19233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ActionMenuItem item = findItemWithShortcut(keyCode, event); 19333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (item == null) { 19433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return false; 19533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 19633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 19733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return item.invoke(); 19833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 19933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 20033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void removeGroup(int groupId) { 20133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ArrayList<ActionMenuItem> items = mItems; 20233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell int itemCount = items.size(); 20333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell int i = 0; 20433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell while (i < itemCount) { 20533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (items.get(i).getGroupId() == groupId) { 20633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell items.remove(i); 20733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell itemCount--; 20833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } else { 20933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell i++; 21033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 21133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 21233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 21333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 21433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void removeItem(int id) { 21533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mItems.remove(findItemIndex(id)); 21633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 21733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 21833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void setGroupCheckable(int group, boolean checkable, 21933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell boolean exclusive) { 22033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ArrayList<ActionMenuItem> items = mItems; 22133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int itemCount = items.size(); 22233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 22333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell for (int i = 0; i < itemCount; i++) { 22433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ActionMenuItem item = items.get(i); 22533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (item.getGroupId() == group) { 22633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell item.setCheckable(checkable); 22733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell item.setExclusiveCheckable(exclusive); 22833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 22933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 23033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 23133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 23233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void setGroupEnabled(int group, boolean enabled) { 23333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ArrayList<ActionMenuItem> items = mItems; 23433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int itemCount = items.size(); 23533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 23633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell for (int i = 0; i < itemCount; i++) { 23733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ActionMenuItem item = items.get(i); 23833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (item.getGroupId() == group) { 23933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell item.setEnabled(enabled); 24033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 24133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 24233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 24333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 24433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void setGroupVisible(int group, boolean visible) { 24533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final ArrayList<ActionMenuItem> items = mItems; 24633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell final int itemCount = items.size(); 24733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 24833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell for (int i = 0; i < itemCount; i++) { 24933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell ActionMenuItem item = items.get(i); 25033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell if (item.getGroupId() == group) { 25133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell item.setVisible(visible); 25233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 25333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 25433b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 25533b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 25633b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public void setQwertyMode(boolean isQwerty) { 25733b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell mIsQwerty = isQwerty; 25833b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 25933b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell 26033b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell public int size() { 26133b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell return mItems.size(); 26233b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell } 26333b974393b6fadcefc896ec4a0f9b66724f61e9fAdam Powell} 264