136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley/* 236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Copyright (C) 2017 The Android Open Source Project 336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Licensed under the Apache License, Version 2.0 (the "License"); 536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * you may not use this file except in compliance with the License. 636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * You may obtain a copy of the License at 736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * http://www.apache.org/licenses/LICENSE-2.0 936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 1036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Unless required by applicable law or agreed to in writing, software 1136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * distributed under the License is distributed on an "AS IS" BASIS, 1236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * See the License for the specific language governing permissions and 1436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * limitations under the License. 1536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley */ 1636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.wear.widget.drawer; 1836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 1936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.content.ComponentName; 2036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.content.Context; 2136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.content.Intent; 2236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.graphics.drawable.Drawable; 2336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.ActionProvider; 2436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.ContextMenu; 2536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.KeyEvent; 2636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.Menu; 2736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.MenuItem; 2836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.SubMenu; 2936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport android.view.View; 3036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 31d75a466859fee504b717c529094e318d1278f831Aurimas Liutikasimport androidx.annotation.Nullable; 32d75a466859fee504b717c529094e318d1278f831Aurimas Liutikas 3336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport java.util.ArrayList; 3436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelleyimport java.util.List; 3536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 3636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley/* package */ class WearableActionDrawerMenu implements Menu { 3736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 3836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final Context mContext; 3936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final List<WearableActionDrawerMenuItem> mItems = new ArrayList<>(); 4036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final WearableActionDrawerMenuListener mListener; 4136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final WearableActionDrawerMenuItem.MenuItemChangedListener mItemChangedListener = 4236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley new WearableActionDrawerMenuItem.MenuItemChangedListener() { 4336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 4436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void itemChanged(WearableActionDrawerMenuItem item) { 4536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley for (int i = 0; i < mItems.size(); i++) { 4636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (mItems.get(i) == item) { 4736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuItemChanged(i); 4836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 4936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 5036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 5136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley }; 5236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 5336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley WearableActionDrawerMenu(Context context, WearableActionDrawerMenuListener listener) { 5436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mContext = context; 5536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener = listener; 5636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 5736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 5836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 5936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(CharSequence title) { 6036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return add(0, 0, 0, title); 6136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 6236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 6336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 6436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(int titleRes) { 6536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return add(0, 0, 0, titleRes); 6636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 6736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 6836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 6936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(int groupId, int itemId, int order, int titleRes) { 7036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return add(groupId, itemId, order, mContext.getResources().getString(titleRes)); 7136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 7236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 7336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 7436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem add(int groupId, int itemId, int order, CharSequence title) { 7536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley WearableActionDrawerMenuItem item = 7636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley new WearableActionDrawerMenuItem(mContext, itemId, title, mItemChangedListener); 7736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItems.add(item); 7836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuItemAdded(mItems.size() - 1); 7936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return item; 8036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 8136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 8236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 8336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void clear() { 8436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItems.clear(); 8536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuChanged(); 8636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 8736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 8836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 8936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void removeItem(int id) { 9036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int index = findItemIndex(id); 9136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if ((index < 0) || (index >= mItems.size())) { 9236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return; 9336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 9436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItems.remove(index); 9536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mListener.menuItemRemoved(index); 9636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 9736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 9836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 9936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem findItem(int id) { 10036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int index = findItemIndex(id); 10136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if ((index < 0) || (index >= mItems.size())) { 10236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 10336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 10436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mItems.get(index); 10536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 10636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 10736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 10836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int size() { 10936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mItems.size(); 11036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 11136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 11236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 11336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Nullable 11436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem getItem(int index) { 11536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if ((index < 0) || (index >= mItems.size())) { 11636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 11736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 11836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mItems.get(index); 11936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 12036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 12136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private int findItemIndex(int id) { 12236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley final List<WearableActionDrawerMenuItem> items = mItems; 12336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley final int itemCount = items.size(); 12436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley for (int i = 0; i < itemCount; i++) { 12536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (items.get(i).getItemId() == id) { 12636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return i; 12736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 12836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 12936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 13036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return -1; 13136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 13236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 13336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 13436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void close() { 13536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("close is not implemented"); 13636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 13736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 13836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 13936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(CharSequence title) { 14036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 14136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 14236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 14336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 14436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(int titleRes) { 14536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 14636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 14736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 14836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 14936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) { 15036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 15136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 15236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 15336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 15436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) { 15536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addSubMenu is not implemented"); 15636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 15736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 15836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 15936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int addIntentOptions( 16036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int groupId, 16136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int itemId, 16236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int order, 16336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley ComponentName caller, 16436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley Intent[] specifics, 16536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley Intent intent, 16636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley int flags, 16736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley MenuItem[] outSpecificItems) { 16836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("addIntentOptions is not implemented"); 16936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 17036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 17136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 17236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void removeGroup(int groupId) { 17336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 17436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 17536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 17636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setGroupCheckable(int group, boolean checkable, boolean exclusive) { 17736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setGroupCheckable is not implemented"); 17836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 17936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 18036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 18136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setGroupVisible(int group, boolean visible) { 18236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setGroupVisible is not implemented"); 18336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 18436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 18536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 18636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setGroupEnabled(int group, boolean enabled) { 18736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setGroupEnabled is not implemented"); 18836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 18936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 19036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 19136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean hasVisibleItems() { 19236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 19336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 19436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 19536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 19636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean performShortcut(int keyCode, KeyEvent event, int flags) { 19736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("performShortcut is not implemented"); 19836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 19936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 20036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 20136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isShortcutKey(int keyCode, KeyEvent event) { 20236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 20336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 20436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 20536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 20636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean performIdentifierAction(int id, int flags) { 20736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("performIdentifierAction is not implemented"); 20836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 20936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 21036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 21136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setQwertyMode(boolean isQwerty) { 21236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 21336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 21436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley /* package */ interface WearableActionDrawerMenuListener { 21536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 21636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuItemChanged(int position); 21736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 21836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuItemAdded(int position); 21936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuItemRemoved(int position); 22136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void menuChanged(); 22336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 22436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public static final class WearableActionDrawerMenuItem implements MenuItem { 22636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final int mId; 22836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 22936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final Context mContext; 23036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private final MenuItemChangedListener mItemChangedListener; 23136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private CharSequence mTitle; 23236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private Drawable mIconDrawable; 23336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private MenuItem.OnMenuItemClickListener mClickListener; 23436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 23536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley WearableActionDrawerMenuItem( 23636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley Context context, int id, CharSequence title, MenuItemChangedListener listener) { 23736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mContext = context; 23836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mId = id; 23936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mTitle = title; 24036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItemChangedListener = listener; 24136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 24236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 24336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 24436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int getItemId() { 24536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mId; 24636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 24736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 24836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 24936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setTitle(CharSequence title) { 25036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mTitle = title; 25136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (mItemChangedListener != null) { 25236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItemChangedListener.itemChanged(this); 25336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 25436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 25536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 25636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 25736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 25836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setTitle(int title) { 25936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return setTitle(mContext.getResources().getString(title)); 26036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 26136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 26236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 26336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public CharSequence getTitle() { 26436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mTitle; 26536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 26636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 26736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 26836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setIcon(Drawable icon) { 26936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mIconDrawable = icon; 27036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley if (mItemChangedListener != null) { 27136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mItemChangedListener.itemChanged(this); 27236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 27336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 27436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 27536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 27636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 27736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setIcon(int iconRes) { 27836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return setIcon(mContext.getResources().getDrawable(iconRes)); 27936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 28036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 28136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 28236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public Drawable getIcon() { 28336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mIconDrawable; 28436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 28536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 28636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 28736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) { 28836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley mClickListener = menuItemClickListener; 28936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 29036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 29136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 29236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 29336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int getGroupId() { 29436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 29536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 29636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 29736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 29836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public int getOrder() { 29936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 30036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 30136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 30236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 30336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setTitleCondensed(CharSequence title) { 30436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 30536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 30636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 30736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 30836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public CharSequence getTitleCondensed() { 30936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 31036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 31136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 31236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 31336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setIntent(Intent intent) { 31436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setIntent is not implemented"); 31536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 31636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 31736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 31836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public Intent getIntent() { 31936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 32036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 32136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 32236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 32336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setShortcut(char numericChar, char alphaChar) { 32436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setShortcut is not implemented"); 32536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 32636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 32736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 32836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setNumericShortcut(char numericChar) { 32936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 33036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 33136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 33236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 33336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public char getNumericShortcut() { 33436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 33536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 33636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 33736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 33836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setAlphabeticShortcut(char alphaChar) { 33936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 34036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 34136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 34236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 34336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public char getAlphabeticShortcut() { 34436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return 0; 34536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 34636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 34736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 34836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setCheckable(boolean checkable) { 34936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 35036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 35136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 35236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 35336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isCheckable() { 35436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 35536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 35636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 35736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 35836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setChecked(boolean checked) { 35936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 36036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 36136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 36236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 36336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isChecked() { 36436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 36536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 36636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 36736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 36836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setVisible(boolean visible) { 36936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 37036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 37136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 37236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 37336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isVisible() { 37436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 37536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 37636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 37736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 37836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setEnabled(boolean enabled) { 37936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return this; 38036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 38136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 38236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 38336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isEnabled() { 38436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 38536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 38636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 38736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 38836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean hasSubMenu() { 38936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return false; 39036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 39136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 39236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 39336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public SubMenu getSubMenu() { 39436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 39536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 39636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 39736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 39836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public ContextMenu.ContextMenuInfo getMenuInfo() { 39936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 40036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 40136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 40236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 40336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public void setShowAsAction(int actionEnum) { 40436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setShowAsAction is not implemented"); 40536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 40636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 40736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 40836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setShowAsActionFlags(int actionEnum) { 40936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setShowAsActionFlags is not implemented"); 41036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 41136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 41236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 41336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setActionView(View view) { 41436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setActionView is not implemented"); 41536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 41636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 41736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 41836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setActionView(int resId) { 41936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setActionView is not implemented"); 42036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 42136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 42236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 42336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public View getActionView() { 42436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 42536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 42636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 42736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 42836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setActionProvider(ActionProvider actionProvider) { 42936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setActionProvider is not implemented"); 43036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 43136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 43236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 43336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public ActionProvider getActionProvider() { 43436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return null; 43536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 43636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 43736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 43836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean expandActionView() { 43936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("expandActionView is not implemented"); 44036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 44136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 44236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 44336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean collapseActionView() { 44436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("collapseActionView is not implemented"); 44536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 44636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 44736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 44836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public boolean isActionViewExpanded() { 44936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("isActionViewExpanded is not implemented"); 45036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 45136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 45236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley @Override 45336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley public MenuItem setOnActionExpandListener(OnActionExpandListener listener) { 45436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley throw new UnsupportedOperationException("setOnActionExpandListener is not implemented"); 45536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 45636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 45736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley /** 45836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * Invokes the item by calling the listener if set. 45936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * 46036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley * @return true if the invocation was handled, false otherwise 46136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley */ 46236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley /* package */ boolean invoke() { 46336545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley return mClickListener != null && mClickListener.onMenuItemClick(this); 46436545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 46536545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 46636545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 46736545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley private interface MenuItemChangedListener { 46836545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley 46936545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley void itemChanged(WearableActionDrawerMenuItem item); 47036545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 47136545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley } 47236545bb3f2b12af352e550c278cff9026a18ca54Sean Kelley} 473