165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen/* 265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Copyright (C) 2016 The Android Open Source Project 365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * 465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Licensed under the Apache License, Version 2.0 (the "License"); 565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * you may not use this file except in compliance with the License. 665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * You may obtain a copy of the License at 765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * 865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * http://www.apache.org/licenses/LICENSE-2.0 965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * 1065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Unless required by applicable law or agreed to in writing, software 1165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * distributed under the License is distributed on an "AS IS" BASIS, 1265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * See the License for the specific language governing permissions and 1465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * limitations under the License. 1565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 1665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chenpackage android.car.app.menu; 1765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 1865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chenimport android.os.Bundle; 1965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 2065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen/** 2165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * The callbacks that a car app needs to pass to a car ui provider for car menu interactions. 2265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 2365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chenpublic abstract class CarMenuCallbacks { 2465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 2565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when the car menu wants to get the root. 2665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * 2765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * @param hints Hints that the Drawer can use to modify behavior. It can be null. 2865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * @return The {@link RootMenu} which contains the root id and any hints 2965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 3065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract RootMenu getRootMenu(Bundle hints); 3165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 3265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 3365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Query for information about the menu items that are contained within 3465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * the specified id and subscribes to receive updates when they change. 3565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * 3665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * @param parentId The id of the parent menu item whose list of children 3765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * will be subscribed. 3865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * @param callback The callback to receive the list of children. 3965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 4065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract void subscribe(String parentId, SubscriptionCallbacks callback); 4165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 4265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 4365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Unsubscribe for changes to the children of the specified id. 4465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * @param parentId The id of the parent menu item whose list of children 4565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * will be unsubscribed. 4665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 4765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract void unsubscribe(String parentId, SubscriptionCallbacks callbacks); 4865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 4965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 5065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when the car menu has been opened. 5165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 5265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract void onCarMenuOpened(); 5365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 5465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 5565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when the car menu has been closed. 5665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 5765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract void onCarMenuClosed(); 5865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 5965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 6065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when a car menu item with the specified id has been clicked. 6165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 6265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract void onItemClicked(String id); 6365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 6465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 6565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when a car menu item with the specified id has been long clicked. 6665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 6765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract boolean onItemLongClicked(String id); 6865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 6965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 7065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when the menu button is clicked. 7165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 7265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract boolean onMenuClicked(); 7365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 7465de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 7565de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when the menu is opening. 7665de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 7765de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract void onCarMenuOpening(); 7865de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen 7965de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen /** 8065de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen * Called when the menu is closing. 8165de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen */ 8265de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen public abstract void onCarMenuClosing(); 8365de2039a94251f62d02a32e3136c0db4fc80d90Yao Chen} 84