1/*
2 * Copyright (C) 2012 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
17package android.support.v7.internal.view.menu;
18
19import android.content.ComponentName;
20import android.content.Context;
21import android.content.Intent;
22import android.support.v4.internal.view.SupportMenu;
23import android.support.v4.internal.view.SupportMenuItem;
24import android.view.KeyEvent;
25import android.view.Menu;
26import android.view.MenuItem;
27import android.view.SubMenu;
28
29/**
30 * Wraps a support {@link SupportMenu} as a framework {@link android.view.Menu}
31 * @hide
32 */
33class MenuWrapperICS extends BaseMenuWrapper<SupportMenu> implements Menu {
34
35    MenuWrapperICS(Context context, SupportMenu object) {
36        super(context, object);
37    }
38
39    @Override
40    public MenuItem add(CharSequence title) {
41        return getMenuItemWrapper(mWrappedObject.add(title));
42    }
43
44    @Override
45    public MenuItem add(int titleRes) {
46        return getMenuItemWrapper(mWrappedObject.add(titleRes));
47    }
48
49    @Override
50    public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
51        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, title));
52    }
53
54    @Override
55    public MenuItem add(int groupId, int itemId, int order, int titleRes) {
56        return getMenuItemWrapper(mWrappedObject.add(groupId, itemId, order, titleRes));
57    }
58
59    @Override
60    public SubMenu addSubMenu(CharSequence title) {
61        return getSubMenuWrapper(mWrappedObject.addSubMenu(title));
62    }
63
64    @Override
65    public SubMenu addSubMenu(int titleRes) {
66        return getSubMenuWrapper(mWrappedObject.addSubMenu(titleRes));
67    }
68
69    @Override
70    public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
71        return getSubMenuWrapper(mWrappedObject.addSubMenu(groupId, itemId, order, title));
72    }
73
74    @Override
75    public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
76        return getSubMenuWrapper(
77                mWrappedObject.addSubMenu(groupId, itemId, order, titleRes));
78    }
79
80    @Override
81    public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller,
82            Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) {
83        android.view.MenuItem[] items = null;
84        if (outSpecificItems != null) {
85            items = new android.view.MenuItem[outSpecificItems.length];
86        }
87
88        int result = mWrappedObject
89                .addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, items);
90
91        if (items != null) {
92            for (int i = 0, z = items.length; i < z; i++) {
93                outSpecificItems[i] = getMenuItemWrapper(items[i]);
94            }
95        }
96
97        return result;
98    }
99
100    @Override
101    public void removeItem(int id) {
102        internalRemoveItem(id);
103        mWrappedObject.removeItem(id);
104    }
105
106    @Override
107    public void removeGroup(int groupId) {
108        internalRemoveGroup(groupId);
109        mWrappedObject.removeGroup(groupId);
110    }
111
112    @Override
113    public void clear() {
114        internalClear();
115        mWrappedObject.clear();
116    }
117
118    @Override
119    public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
120        mWrappedObject.setGroupCheckable(group, checkable, exclusive);
121    }
122
123    @Override
124    public void setGroupVisible(int group, boolean visible) {
125        mWrappedObject.setGroupVisible(group, visible);
126    }
127
128    @Override
129    public void setGroupEnabled(int group, boolean enabled) {
130        mWrappedObject.setGroupEnabled(group, enabled);
131    }
132
133    @Override
134    public boolean hasVisibleItems() {
135        return mWrappedObject.hasVisibleItems();
136    }
137
138    @Override
139    public MenuItem findItem(int id) {
140        return getMenuItemWrapper(mWrappedObject.findItem(id));
141    }
142
143    @Override
144    public int size() {
145        return mWrappedObject.size();
146    }
147
148    @Override
149    public MenuItem getItem(int index) {
150        return getMenuItemWrapper(mWrappedObject.getItem(index));
151    }
152
153    @Override
154    public void close() {
155        mWrappedObject.close();
156    }
157
158    @Override
159    public boolean performShortcut(int keyCode, KeyEvent event, int flags) {
160        return mWrappedObject.performShortcut(keyCode, event, flags);
161    }
162
163    @Override
164    public boolean isShortcutKey(int keyCode, KeyEvent event) {
165        return mWrappedObject.isShortcutKey(keyCode, event);
166    }
167
168    @Override
169    public boolean performIdentifierAction(int id, int flags) {
170        return mWrappedObject.performIdentifierAction(id, flags);
171    }
172
173    @Override
174    public void setQwertyMode(boolean isQwerty) {
175        mWrappedObject.setQwertyMode(isQwerty);
176    }
177}
178