blob: 0424382a1b88a72a20ea9bafd33daa2fe6fd69d5 [file] [log] [blame]
/*
* Copyright (C) 2016 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.systemui.plugins.qs;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import com.android.systemui.plugins.FragmentBase;
import com.android.systemui.plugins.annotations.DependsOn;
import com.android.systemui.plugins.annotations.ProvidesInterface;
import com.android.systemui.plugins.qs.QS.HeightListener;
import java.util.function.Consumer;
/**
* Fragment that contains QS in the notification shade. Most of the interface is for
* handling the expand/collapsing of the view interaction.
*/
@ProvidesInterface(action = QS.ACTION, version = QS.VERSION)
@DependsOn(target = HeightListener.class)
public interface QS extends FragmentBase {
String ACTION = "com.android.systemui.action.PLUGIN_QS";
int VERSION = 11;
String TAG = "QS";
void setPanelView(HeightListener notificationPanelView);
void hideImmediately();
int getQsMinExpansionHeight();
int getDesiredHeight();
void setHeightOverride(int desiredHeight);
void setHeaderClickable(boolean qsExpansionEnabled);
boolean isCustomizing();
void setOverscrolling(boolean overscrolling);
void setExpanded(boolean qsExpanded);
void setListening(boolean listening);
boolean isShowingDetail();
void closeDetail();
void animateHeaderSlidingOut();
void setQsExpansion(float qsExpansionFraction, float headerTranslation);
void setHeaderListening(boolean listening);
void notifyCustomizeChanged();
void setContainer(ViewGroup container);
void setExpandClickListener(OnClickListener onClickListener);
View getHeader();
default void setHasNotifications(boolean hasNotifications) {
}
/**
* Should touches from the notification panel be disallowed?
* The notification panel might grab any touches rom QS at any time to collapse the shade.
* We should disallow that in case we are showing the detail panel.
*/
default boolean disallowPanelTouches() {
return isShowingDetail();
}
/**
* If QS should translate as we pull it down, or if it should be static.
*/
void setTranslateWhileExpanding(boolean shouldTranslate);
/**
* Set the amount of pixels we have currently dragged down if we're transitioning to the full
* shade. 0.0f means we're not transitioning yet.
*/
default void setTransitionToFullShadeAmount(float pxAmount, boolean animated) {}
/**
* A rounded corner clipping that makes QS feel as if it were behind everything.
*/
void setFancyClipping(int top, int bottom, int cornerRadius, boolean visible);
/**
* @return if quick settings is fully collapsed currently
*/
default boolean isFullyCollapsed() {
return true;
}
/**
* Add a listener for when the collapsed media visibility changes.
*/
void setCollapsedMediaVisibilityChangedListener(Consumer<Boolean> listener);
/**
* Set a scroll listener for the QSPanel container
*/
default void setScrollListener(ScrollListener scrollListener) {}
/**
* Callback for when QSPanel container is scrolled
*/
@ProvidesInterface(version = ScrollListener.VERSION)
interface ScrollListener {
int VERSION = 1;
void onQsPanelScrollChanged(int scrollY);
}
@ProvidesInterface(version = HeightListener.VERSION)
interface HeightListener {
int VERSION = 1;
void onQsHeightChanged();
}
}