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

Commit 97592f60 authored by Evan Laird's avatar Evan Laird
Browse files

First pass at setting up a mobile connectivity pipeline

This CL is pretty WIP, but contains a rough overall structure for
monitoring mobile subscriptions, and info for each subscription.

Naming is still TBD. The general structure is this:

[Repo]
MobileSubscriptionRepo monitors the list of subscriptions known to the
device via SubscriptionManager, and can vend out a listener for a given
subscription ID that can be individually tracked

UserSetupRepo just tracks the isUserSetup bit

[Domain]
MobileInteractor defines the Interactor for the overall mobile feature,
and can vend out MobileConnectionInteractors which track the individual
subscriptionID from the repo

[UI]
Currently this is the least fleshed out, but there is a similar pair of
MobileConnectivityViewModel and MobileIconViewModel to track the same as
above -- the overall state and the states for each subId.

Test: adb shell settings put global systemui/tag/SbConnectivity verbose
Test: adb logcat | grep SbConnectivity
Test: should output: SbConnectivity: Output: subId(1) level: 1
Bug: 240492102
Change-Id: I22d7e9e5b449057a92071ac00bc823460d5f58a6
parent f12d6c28
Loading
Loading
Loading
Loading
+93 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
**
** Copyright 2022, 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.
*/
-->

<merge
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:systemui="http://schemas.android.com/apk/res-auto" >

    <com.android.keyguard.AlphaOptimizedLinearLayout
        android:id="@+id/mobile_group"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <FrameLayout
            android:id="@+id/inout_container"
            android:layout_height="17dp"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical">
            <ImageView
                android:id="@+id/mobile_in"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:src="@drawable/ic_activity_down"
                android:visibility="gone"
                android:paddingEnd="2dp"
                />
            <ImageView
                android:id="@+id/mobile_out"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:src="@drawable/ic_activity_up"
                android:paddingEnd="2dp"
                android:visibility="gone"
                />
        </FrameLayout>
        <ImageView
            android:id="@+id/mobile_type"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical"
            android:paddingStart="2.5dp"
            android:paddingEnd="1dp"
            android:visibility="gone" />
        <Space
            android:id="@+id/mobile_roaming_space"
            android:layout_height="match_parent"
            android:layout_width="@dimen/roaming_icon_start_padding"
            android:visibility="gone"
            />
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical">
            <com.android.systemui.statusbar.AnimatedImageView
                android:id="@+id/mobile_signal"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                systemui:hasOverlappingRendering="false"
                />
            <ImageView
                android:id="@+id/mobile_roaming"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/stat_sys_roaming"
                android:contentDescription="@string/data_connection_roaming"
                android:visibility="gone" />
        </FrameLayout>
        <ImageView
            android:id="@+id/mobile_roaming_large"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/stat_sys_roaming_large"
            android:contentDescription="@string/data_connection_roaming"
            android:visibility="gone" />
    </com.android.keyguard.AlphaOptimizedLinearLayout>
</merge>
+29 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
**
** Copyright 2022, 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.
*/
-->
<com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mobile_combo"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center_vertical" >

    <include layout="@layout/status_bar_mobile_signal_group_inner" />

</com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView>
+1 −69
Original line number Diff line number Diff line
@@ -18,80 +18,12 @@
-->
<com.android.systemui.statusbar.StatusBarMobileView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:systemui="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mobile_combo"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:gravity="center_vertical" >

    <com.android.keyguard.AlphaOptimizedLinearLayout
        android:id="@+id/mobile_group"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:orientation="horizontal" >
    <include layout="@layout/status_bar_mobile_signal_group_inner" />

        <FrameLayout
            android:id="@+id/inout_container"
            android:layout_height="17dp"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical">
            <ImageView
                android:id="@+id/mobile_in"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:src="@drawable/ic_activity_down"
                android:visibility="gone"
                android:paddingEnd="2dp"
            />
            <ImageView
                android:id="@+id/mobile_out"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:src="@drawable/ic_activity_up"
                android:paddingEnd="2dp"
                android:visibility="gone"
            />
        </FrameLayout>
        <ImageView
            android:id="@+id/mobile_type"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical"
            android:paddingStart="2.5dp"
            android:paddingEnd="1dp"
            android:visibility="gone" />
        <Space
            android:id="@+id/mobile_roaming_space"
            android:layout_height="match_parent"
            android:layout_width="@dimen/roaming_icon_start_padding"
            android:visibility="gone"
        />
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical">
            <com.android.systemui.statusbar.AnimatedImageView
                android:id="@+id/mobile_signal"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                systemui:hasOverlappingRendering="false"
            />
            <ImageView
                android:id="@+id/mobile_roaming"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/stat_sys_roaming"
                android:contentDescription="@string/data_connection_roaming"
                android:visibility="gone" />
        </FrameLayout>
        <ImageView
            android:id="@+id/mobile_roaming_large"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/stat_sys_roaming_large"
            android:contentDescription="@string/data_connection_roaming"
            android:visibility="gone" />
    </com.android.keyguard.AlphaOptimizedLinearLayout>
</com.android.systemui.statusbar.StatusBarMobileView>
+6 −4
Original line number Diff line number Diff line
@@ -20,14 +20,16 @@ import android.util.AttributeSet
import android.widget.FrameLayout

/**
 * A temporary base class that's shared between our old status bar wifi view implementation
 * ([StatusBarWifiView]) and our new status bar wifi view implementation
 * ([ModernStatusBarWifiView]).
 * A temporary base class that's shared between our old status bar connectivity view implementations
 * ([StatusBarWifiView], [StatusBarMobileView]) and our new status bar implementations (
 * [ModernStatusBarWifiView], [ModernStatusBarMobileView]).
 *
 * Once our refactor is over, we should be able to delete this go-between class and the old view
 * class.
 */
abstract class BaseStatusBarWifiView @JvmOverloads constructor(
abstract class BaseStatusBarFrameLayout
@JvmOverloads
constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttrs: Int = 0,
+4 −7
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;

@@ -43,7 +42,10 @@ import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconStat

import java.util.ArrayList;

public class StatusBarMobileView extends FrameLayout implements DarkReceiver,
/**
 * View group for the mobile icon in the status bar
 */
public class StatusBarMobileView extends BaseStatusBarFrameLayout implements DarkReceiver,
        StatusIconDisplayable {
    private static final String TAG = "StatusBarMobileView";

@@ -101,11 +103,6 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver,
        super(context, attrs, defStyleAttr);
    }

    public StatusBarMobileView(Context context, AttributeSet attrs, int defStyleAttr,
            int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public void getDrawingRect(Rect outRect) {
        super.getDrawingRect(outRect);
Loading