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

Commit 43cdc3e9 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Add ViewController to CarrierText.

Rename CarrierTextController to CarrierTextManager to avoid confusion.

Removes several calls to Dependency.get(). This was the primary
impetus for this change.

Bug: 179775696
Test: atest SystemUITests
Change-Id: I6d027169247e8b93fe979e54c04a61bbacb4cca5
parent d74bfec9
Loading
Loading
Loading
Loading
+11 −54
Original line number Diff line number Diff line
@@ -24,41 +24,14 @@ import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;

import com.android.systemui.Dependency;
import com.android.systemui.R;

import java.util.Locale;

public class CarrierText extends TextView {
    private static final boolean DEBUG = KeyguardConstants.DEBUG;
    private static final String TAG = "CarrierText";
    private final boolean mShowMissingSim;

    private static CharSequence mSeparator;

    private boolean mShowMissingSim;

    private boolean mShowAirplaneMode;
    private boolean mShouldMarquee;

    private CarrierTextController mCarrierTextController;

    private CarrierTextController.CarrierTextCallback mCarrierTextCallback =
            new CarrierTextController.CarrierTextCallback() {
                @Override
                public void updateCarrierInfo(CarrierTextController.CarrierTextCallbackInfo info) {
                    setText(info.carrierText);
                }

                @Override
                public void startedGoingToSleep() {
                    setSelected(false);
                }

                @Override
                public void finishedWakingUp() {
                    setSelected(true);
                }
            };
    private final boolean mShowAirplaneMode;

    public CarrierText(Context context) {
        this(context, null);
@@ -78,30 +51,6 @@ public class CarrierText extends TextView {
        }
        setTransformationMethod(new CarrierTextTransformationMethod(mContext, useAllCaps));
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        mSeparator = getResources().getString(
                com.android.internal.R.string.kg_text_message_separator);
        mCarrierTextController = new CarrierTextController(mContext, mSeparator, mShowAirplaneMode,
                mShowMissingSim);
        mShouldMarquee = Dependency.get(KeyguardUpdateMonitor.class).isDeviceInteractive();
        setSelected(mShouldMarquee); // Allow marquee to work.
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        mCarrierTextController.setListening(mCarrierTextCallback);
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        mCarrierTextController.setListening(null);
    }

    @Override
    protected void onVisibilityChanged(View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
@@ -113,7 +62,15 @@ public class CarrierText extends TextView {
        }
    }

    private class CarrierTextTransformationMethod extends SingleLineTransformationMethod {
    public boolean getShowAirplaneMode() {
        return mShowAirplaneMode;
    }

    public boolean getShowMissingSim() {
        return mShowMissingSim;
    }

    private static class CarrierTextTransformationMethod extends SingleLineTransformationMethod {
        private final Locale mLocale;
        private final boolean mAllCaps;

+36 −655

File changed.

Preview size limit exceeded, changes collapsed.

+720 −0

File added.

Preview size limit exceeded, changes collapsed.

+42 −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.keyguard.dagger;

import com.android.keyguard.KeyguardStatusViewController;
import com.android.systemui.statusbar.phone.KeyguardStatusBarView;
import com.android.systemui.statusbar.phone.KeyguardStatusBarViewController;

import dagger.BindsInstance;
import dagger.Subcomponent;

/**
 * Subcomponent for helping work with KeyguardStatusView and its children.
 *
 * TODO: unify this with {@link KeyguardStatusViewComponent}
 */
@Subcomponent(modules = {KeyguardStatusBarViewModule.class})
@KeyguardStatusBarViewScope
public interface KeyguardStatusBarViewComponent {
    /** Simple factory for {@link KeyguardStatusBarViewComponent}. */
    @Subcomponent.Factory
    interface Factory {
        KeyguardStatusBarViewComponent build(@BindsInstance KeyguardStatusBarView view);
    }

    /** Builds a {@link KeyguardStatusViewController}. */
    KeyguardStatusBarViewController getKeyguardStatusBarViewController();
}
+34 −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.keyguard.dagger;

import com.android.keyguard.CarrierText;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.KeyguardStatusBarView;

import dagger.Module;
import dagger.Provides;

/** Dagger module for {@link KeyguardStatusBarViewComponent}. */
@Module
public abstract class KeyguardStatusBarViewModule {
    @Provides
    @KeyguardStatusBarViewScope
    static CarrierText getCarrierText(KeyguardStatusBarView view) {
        return view.findViewById(R.id.keyguard_carrier_text);
    }
}
Loading