/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.android.utils; import android.content.Context; import android.content.DialogInterface; import android.view.MenuInflater; import android.view.MenuItem; import com.android.talkback.contextmenu.RadialMenu; import com.android.talkback.contextmenu.RadialMenuItem; import java.util.ArrayList; import java.util.List; /** * Acts as an extension of {@link MenuInflater} for {@link RadialMenu}s by * allowing inflated {@link RadialMenuItem}s from XML to be returned directly to * a caller. */ class RadialMenuInflater extends MenuInflater { private final DummyRadialMenu mHolderMenu; public RadialMenuInflater(Context context) { super(context); mHolderMenu = new DummyRadialMenu(context); } /** * Returns a list of {@link MenuItem}s as generated by the inflater. * * @param menuRes The resource ID of the menu to inflate. * @return a {@link List} of the menu items in the main content area of the * menu. */ public List<RadialMenuItem> inflate(int menuRes) { // TODO: See if supporting corners is feasible. mHolderMenu.clear(); inflate(menuRes, mHolderMenu); final ArrayList<RadialMenuItem> items = new ArrayList<>(mHolderMenu.size()); for (int i = 0; i < mHolderMenu.size(); ++i) { items.add(mHolderMenu.getItem(i)); } return items; } private static class DummyRadialMenu extends RadialMenu { public DummyRadialMenu(Context context) { super(context, new DialogInterface() { @Override public void dismiss() { // Do nothing. } @Override public void cancel() { // Do nothing. } }); } } }