1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 * except in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the 10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11 * KIND, either express or implied. See the License for the specific language governing 12 * permissions and limitations under the License. 13 */ 14 15 package com.android.systemui.plugins.statusbar.phone; 16 17 import android.annotation.Nullable; 18 import android.graphics.drawable.Drawable; 19 import android.view.View; 20 import android.view.ViewGroup; 21 22 import com.android.systemui.plugins.Plugin; 23 import com.android.systemui.plugins.annotations.ProvidesInterface; 24 25 @ProvidesInterface(action = NavBarButtonProvider.ACTION, version = NavBarButtonProvider.VERSION) 26 public interface NavBarButtonProvider extends Plugin { 27 28 public static final String ACTION = "com.android.systemui.action.PLUGIN_NAV_BUTTON"; 29 30 public static final int VERSION = 2; 31 32 /** 33 * Returns a view in the nav bar. If the id is set "back", "home", "recent_apps", "menu", 34 * or "ime_switcher", it is expected to implement ButtonInterface. 35 */ createView(String spec, ViewGroup parent)36 public View createView(String spec, ViewGroup parent); 37 38 /** 39 * Interface for button actions. 40 */ 41 interface ButtonInterface { 42 setImageDrawable(@ullable Drawable drawable)43 void setImageDrawable(@Nullable Drawable drawable); 44 abortCurrentGesture()45 void abortCurrentGesture(); 46 setVertical(boolean vertical)47 void setVertical(boolean vertical); 48 setCarMode(boolean carMode)49 default void setCarMode(boolean carMode) { 50 } 51 setDarkIntensity(float intensity)52 void setDarkIntensity(float intensity); 53 setDelayTouchFeedback(boolean shouldDelay)54 void setDelayTouchFeedback(boolean shouldDelay); 55 } 56 } 57