1e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes/*
2e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Copyright (C) 2012 The Android Open Source Project
3e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
4e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * you may not use this file except in compliance with the License.
6e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * You may obtain a copy of the License at
7e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
8e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes *
10e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * Unless required by applicable law or agreed to in writing, software
11e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * See the License for the specific language governing permissions and
14e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes * limitations under the License.
15e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes */
16e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.appcompat.view.menu;
18e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
19e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.content.ComponentName;
20d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banesimport android.content.Context;
21e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.content.Intent;
22e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banesimport android.view.KeyEvent;
23d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banesimport android.view.Menu;
2430837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuItem;
2530837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.SubMenu;
26e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
273de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikasimport androidx.core.internal.view.SupportMenu;
283de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikas
29d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes/**
30d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes * Wraps a support {@link SupportMenu} as a framework {@link android.view.Menu}
31d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes */
32d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banesclass MenuWrapperICS extends BaseMenuWrapper<SupportMenu> implements Menu {
33e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
34d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes    MenuWrapperICS(Context context, SupportMenu object) {
35d837ef307ff53290159c0d7c8cf9e3e0dc2fa410Chris Banes        super(context, object);
36e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
37e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
38e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
39e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(CharSequence title) {
40e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(title));
41e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
42e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
43e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
44e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int titleRes) {
45e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(titleRes));
46e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
47e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
48e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
49e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
50e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, title));
51e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
52e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
53e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
54e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem add(int groupId, int itemId, int order, int titleRes) {
55e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, titleRes));
56e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
57e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
58e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
59e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(CharSequence title) {
60e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(title));
61e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
62e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
63e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
64e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int titleRes) {
65e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(titleRes));
66e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
67e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
68e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
69e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
70e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(mWrappedObject.addSubMenu(groupId, itemId, order, title));
71e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
72e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
73e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
74e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
75e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getSubMenuWrapper(
76e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                mWrappedObject.addSubMenu(groupId, itemId, order, titleRes));
77e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
78e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
79e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
80e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller,
81e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) {
82e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        android.view.MenuItem[] items = null;
83e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        if (outSpecificItems != null) {
84e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            items = new android.view.MenuItem[outSpecificItems.length];
85e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
86e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
87e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        int result = mWrappedObject
88e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                .addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, items);
89e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
90e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        if (items != null) {
91e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            for (int i = 0, z = items.length; i < z; i++) {
92e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes                outSpecificItems[i] = getMenuItemWrapper(items[i]);
93e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes            }
94e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        }
95e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
96e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return result;
97e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
98e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
99e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
100e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void removeItem(int id) {
101e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalRemoveItem(id);
102e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.removeItem(id);
103e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
104e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
105e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
106e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void removeGroup(int groupId) {
107e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalRemoveGroup(groupId);
108e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.removeGroup(groupId);
109e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
110e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
111e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
112e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void clear() {
113e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        internalClear();
114e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.clear();
115e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
116e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
117e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
118e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
119e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupCheckable(group, checkable, exclusive);
120e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
121e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
122e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
123e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupVisible(int group, boolean visible) {
124e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupVisible(group, visible);
125e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
126e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
127e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
128e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setGroupEnabled(int group, boolean enabled) {
129e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setGroupEnabled(group, enabled);
130e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
131e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
132e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
133e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean hasVisibleItems() {
134e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.hasVisibleItems();
135e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
136e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
137e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
138e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem findItem(int id) {
139e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.findItem(id));
140e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
141e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
142e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
143e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public int size() {
144e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.size();
145e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
146e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
147e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
148e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public MenuItem getItem(int index) {
149e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return getMenuItemWrapper(mWrappedObject.getItem(index));
150e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
151e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
152e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
153e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void close() {
154e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.close();
155e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
156e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
157e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
158e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean performShortcut(int keyCode, KeyEvent event, int flags) {
159e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.performShortcut(keyCode, event, flags);
160e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
161e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
162e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
163e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean isShortcutKey(int keyCode, KeyEvent event) {
164e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.isShortcutKey(keyCode, event);
165e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
166e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
167e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
168e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public boolean performIdentifierAction(int id, int flags) {
169e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        return mWrappedObject.performIdentifierAction(id, flags);
170e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
171e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes
172e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    @Override
173e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    public void setQwertyMode(boolean isQwerty) {
174e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes        mWrappedObject.setQwertyMode(isQwerty);
175e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes    }
176e73e46ef5b69ecdf18aa1947e0a1b3e4ec5d1ee7Chris Banes}
177