Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6863447c authored by Dave Mankoff's avatar Dave Mankoff
Browse files

1/N Add Controller for QSFooter

Not much too this CL. It adds QSFooterImplController, has it
implementing QSFooter, and then uses the controller anywhere the
view was being used before.

Bug: 168904199
Test: manual
Change-Id: Ie1d5125c8cd706e325a40f4b60a52bab1dd3d213
parent fccbf273
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ public class QSDetail extends LinearLayout {
    private int mOpenY;
    private boolean mAnimatingOpen;
    private boolean mSwitchState;
    private View mFooter;
    private QSFooter mFooter;

    public QSDetail(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
@@ -120,7 +120,8 @@ public class QSDetail extends LinearLayout {
        mDetailDoneButton.setOnClickListener(doneListener);
    }

    public void setQsPanel(QSPanel panel, QuickStatusBarHeader header, View footer) {
    /** */
    public void setQsPanel(QSPanel panel, QuickStatusBarHeader header, QSFooter footer) {
        mQsPanel = panel;
        mHeader = header;
        mFooter = footer;
+111 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 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.qs;

import android.view.View;

import androidx.annotation.Nullable;

import com.android.systemui.qs.dagger.QSScope;
import com.android.systemui.util.ViewController;

import javax.inject.Inject;

/**
 * Controller for {@link QSFooterImpl}.
 */
@QSScope
public class QSFooterImplController extends ViewController<QSFooterImpl> implements QSFooter {
    @Inject
    QSFooterImplController(QSFooterImpl view) {
        super(view);
    }

    @Override
    public void setQSPanel(@Nullable QSPanel panel) {
        mView.setQSPanel(panel);
    }

    @Override
    public void setVisibility(int visibility) {
        mView.setVisibility(visibility);
    }

    @Override
    public void setExpanded(boolean expanded) {
        mView.setExpanded(expanded);
    }

    @Override
    public int getHeight() {
        return mView.getHeight();
    }

    @Override
    public void setExpansion(float expansion) {
        mView.setExpansion(expansion);
    }

    @Override
    public void setListening(boolean listening) {
        mView.setListening(listening);
    }

    @Override
    public void setKeyguardShowing(boolean keyguardShowing) {
        mView.setKeyguardShowing(keyguardShowing);
    }

    @Override
    public void setExpandClickListener(View.OnClickListener onClickListener) {
        mView.setExpandClickListener(onClickListener);
    }

    @Override
    protected void onViewAttached() {
    }

    @Override
    protected void onViewDetached() {
    }

    @Override
    public void setQQSPanel(@Nullable QuickQSPanel panel) {
        mView.setQQSPanel(panel);
    }

    @Override
    public void disable(int state1, int state2, boolean animate) {
        mView.disable(state1, state2, animate);
    }

    /**
     * Factory for {@link QSFooterImplController}.
     *
     * TODO(b/168904199): Delete this once QSFooterImpl is no longer marked as injectable.
     */
    @QSScope
    public static class Factory {
        @Inject
        Factory() {
        }

        QSFooterImplController create(QSFooterImpl view) {
            return new QSFooterImplController(view);
        }
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -142,13 +142,14 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
        mQSDetail = view.findViewById(R.id.qs_detail);
        mHeader = view.findViewById(R.id.header);
        mQSPanelController.setHeaderContainer(view.findViewById(R.id.header_text_container));
        mFooter = view.findViewById(R.id.qs_footer);
        mFooter = qsFragmentComponent.getQSFooterFactory().create(
                view.findViewById(R.id.qs_footer));

        mQSContainerImplController = qsFragmentComponent.getQSContainerImplController();
        mQSContainerImplController.init();
        mContainer = mQSContainerImplController.getView();

        mQSDetail.setQsPanel(mQSPanelController.getView(), mHeader, (View) mFooter);
        mQSDetail.setQsPanel(mQSPanelController.getView(), mHeader, mFooter);
        mQSAnimator = qsFragmentComponent.getQSAnimator();

        mQSCustomizer = view.findViewById(R.id.qs_customize);
+4 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.qs.dagger;

import com.android.systemui.qs.QSAnimator;
import com.android.systemui.qs.QSContainerImplController;
import com.android.systemui.qs.QSFooterImplController;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.qs.QSPanelController;
import com.android.systemui.qs.QuickQSPanelController;
@@ -48,4 +49,7 @@ public interface QSFragmentComponent {

    /** Construct a {@link QSContainerImplController}. */
    QSContainerImplController getQSContainerImplController();

    /** */
    QSFooterImplController.Factory getQSFooterFactory();
}