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

Unverified Commit 6e8e64fd authored by Sam Mortimer's avatar Sam Mortimer Committed by Michael Bestas
Browse files

SystemUI: Network Traffic [1/3]

Author: Sam Mortimer <sam@mortimer.me.uk>
Date:   Sat Jan 13 23:26:48 2018 -0800

    SystemUI: Network Traffic [1/3]

    *) Add lineage-sdk internal NetworkTraffic to the statusbar
       using the LineageStatusBarItemHolder helper.

    Change-Id: Ib947832860970a3bccfac70d27a4761f6164d3d5

Author: LuK1337 <priv.luk@gmail.com>
Date:   Thu May 6 13:50:05 2021 +0200

    SystemUI: Force left-to-right for network traffic monitor holder

    Fixes: https://gitlab.com/LineageOS/issues/android/-/issues/3445
    Change-Id: I19ea852cedfd2a69a47006977f1b74a172008058

Author: Wolfram Liebchen <achalmgucker@googlemail.com>
Date:   Mon Jan 23 22:03:20 2023 +0100

    SystemUI: Network traffic with center cutout [1/3]

    Add possible network traffic display locations on the left
    and right side.

    Change-Id: Ic209aa1c0816cb22a5cf4ad9f19908746d38fc68

Change-Id: Ib947832860970a3bccfac70d27a4761f6164d3d5
parent e1031ee5
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright (c) 2017 The LineageOS Project
 * Copyright (c) 2017-2020 The LineageOS Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -19,6 +19,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.systemui">

    <!-- Network traffic monitor -->
    <uses-permission android:name="android.permission.MAINLINE_NETWORK_STACK" />

    <!-- QS Tiles -->
    <uses-permission android:name="android.permission.MAINLINE_NETWORK_STACK" />
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+55 −0
Original line number Diff line number Diff line
@@ -109,6 +109,25 @@
                        android:orientation="horizontal"
                        android:clipChildren="false"/>

                    <com.android.systemui.statusbar.LineageStatusBarItemHolder
                        android:id="@+id/network_traffic_holder_start"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layoutDirection="ltr"
                        android:gravity="center"
                        android:paddingStart="4dp"
                        >

                        <org.lineageos.internal.statusbar.NetworkTraffic
                            android:id="@+id/network_traffic_start"
                            android:layout_width="wrap_content"
                            android:layout_height="match_parent"
                            android:maxLines="2"
                            android:gravity="center"
                        />

                    </com.android.systemui.statusbar.LineageStatusBarItemHolder>

                </LinearLayout>
            </FrameLayout>
        </FrameLayout>
@@ -121,6 +140,23 @@
            android:gravity="center_horizontal|center_vertical"
        />

        <com.android.systemui.statusbar.LineageStatusBarItemHolder
            android:id="@+id/network_traffic_holder_center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layoutDirection="ltr"
            android:gravity="center"
            >

            <org.lineageos.internal.statusbar.NetworkTraffic
                android:id="@+id/network_traffic_center"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:maxLines="2"
                android:gravity="center" />

        </com.android.systemui.statusbar.LineageStatusBarItemHolder>

        <!-- Container for the entire end half of the status bar. It will always use the same
             width, independent of the number of visible children and sub-children. -->
        <FrameLayout
@@ -143,6 +179,25 @@
                android:gravity="center_vertical|end"
                android:clipChildren="false">

                <com.android.systemui.statusbar.LineageStatusBarItemHolder
                    android:id="@+id/network_traffic_holder_end"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layoutDirection="ltr"
                    android:gravity="center"
                    android:paddingLeft="2dp"
                    >

                    <org.lineageos.internal.statusbar.NetworkTraffic
                        android:id="@+id/network_traffic_end"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:maxLines="2"
                        android:gravity="center"
                    />

                </com.android.systemui.statusbar.LineageStatusBarItemHolder>

                <include
                    android:id="@+id/user_switcher_container"
                    android:layout_width="wrap_content"
+15 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import android.view.View;

import com.android.systemui.R;

import org.lineageos.internal.statusbar.NetworkTraffic;

public final class PhoneStatusBarTransitions extends BarTransitions {
    private static final float ICON_ALPHA_WHEN_NOT_OPAQUE = 1;
    private static final float ICON_ALPHA_WHEN_LIGHTS_OUT_BATTERY_CLOCK = 0.5f;
@@ -34,6 +36,7 @@ public final class PhoneStatusBarTransitions extends BarTransitions {
    private boolean mIsHeadsUp;

    private View mStartSide, mStatusIcons, mBattery;
    private NetworkTraffic mNetworkTrafficStart, mNetworkTrafficCenter, mNetworkTrafficEnd;
    private Animator mCurrentAnimation;

    /**
@@ -45,7 +48,13 @@ public final class PhoneStatusBarTransitions extends BarTransitions {
        mIconAlphaWhenOpaque = res.getFraction(R.dimen.status_bar_icon_drawing_alpha, 1, 1);
        mStartSide = statusBarView.findViewById(R.id.status_bar_start_side_except_heads_up);
        mStatusIcons = statusBarView.findViewById(R.id.statusIcons);
        mNetworkTrafficStart = statusBarView.findViewById(R.id.network_traffic_start);
        mNetworkTrafficCenter = statusBarView.findViewById(R.id.network_traffic_center);
        mNetworkTrafficEnd = statusBarView.findViewById(R.id.network_traffic_end);
        mBattery = statusBarView.findViewById(R.id.battery);
        mNetworkTrafficStart.setViewPosition(0);        /* start side display */
        mNetworkTrafficCenter.setViewPosition(1);       /* center display */
        mNetworkTrafficEnd.setViewPosition(2);          /* end side display */
        applyModeBackground(-1, getMode(), false /*animate*/);
        applyMode(getMode(), false /*animate*/);
    }
@@ -114,6 +123,9 @@ public final class PhoneStatusBarTransitions extends BarTransitions {
            anims.playTogether(
                    animateTransitionTo(mStartSide, newStartSideAlpha),
                    animateTransitionTo(mStatusIcons, newStatusIconsAlpha),
                    animateTransitionTo(mNetworkTrafficStart, newStatusIconsAlpha),
                    animateTransitionTo(mNetworkTrafficCenter, newStatusIconsAlpha),
                    animateTransitionTo(mNetworkTrafficEnd, newStatusIconsAlpha),
                    animateTransitionTo(mBattery, newBatteryAlpha)
                    );
            if (isLightsOut(mode)) {
@@ -124,6 +136,9 @@ public final class PhoneStatusBarTransitions extends BarTransitions {
        } else {
            mStartSide.setAlpha(newStartSideAlpha);
            mStatusIcons.setAlpha(newStatusIconsAlpha);
            mNetworkTrafficStart.setAlpha(newStatusIconsAlpha);
            mNetworkTrafficCenter.setAlpha(newStatusIconsAlpha);
            mNetworkTrafficEnd.setAlpha(newStatusIconsAlpha);
            mBattery.setAlpha(newBatteryAlpha);
        }
    }
+51 −0
Original line number Diff line number Diff line
@@ -111,9 +111,15 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
    private final KeyguardStateController mKeyguardStateController;
    private final ShadeViewController mShadeViewController;
    private MultiSourceMinAlphaController mEndSideAlphaController;
    private MultiSourceMinAlphaController mNetworkTrafficStartAlphaController;
    private MultiSourceMinAlphaController mNetworkTrafficCenterAlphaController;
    private MultiSourceMinAlphaController mNetworkTrafficEndAlphaController;
    private LinearLayout mEndSideContent;
    private View mOngoingCallChip;
    private View mNotificationIconAreaInner;
    private View mNetworkTrafficHolderStart;
    private View mNetworkTrafficHolderCenter;
    private View mNetworkTrafficHolderEnd;
    // Visibilities come in from external system callers via disable flags, but we also sometimes
    // modify the visibilities internally. We need to store both so that we don't accidentally
    // propagate our internally modified flags for too long.
@@ -307,6 +313,15 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
        mStatusBarIconController.addIconGroup(mDarkIconManager);
        mEndSideContent = mStatusBar.findViewById(R.id.status_bar_end_side_content);
        mEndSideAlphaController = new MultiSourceMinAlphaController(mEndSideContent);
        mNetworkTrafficHolderStart = mStatusBar.findViewById(R.id.network_traffic_holder_start);
        mNetworkTrafficHolderCenter = mStatusBar.findViewById(R.id.network_traffic_holder_center);
        mNetworkTrafficHolderEnd = mStatusBar.findViewById(R.id.network_traffic_holder_end);
        mNetworkTrafficStartAlphaController =
                new MultiSourceMinAlphaController(mNetworkTrafficHolderStart);
        mNetworkTrafficCenterAlphaController =
                new MultiSourceMinAlphaController(mNetworkTrafficHolderCenter);
        mNetworkTrafficEndAlphaController =
                new MultiSourceMinAlphaController(mNetworkTrafficHolderEnd);
        mClockController = mStatusBar.getClockController();
        mOngoingCallChip = mStatusBar.findViewById(R.id.ongoing_call_chip);
        showEndSideContent(false);
@@ -626,15 +641,27 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
    private void hideEndSideContent(boolean animate) {
        if (!animate) {
            mEndSideAlphaController.setAlpha(/*alpha*/ 0f, SOURCE_OTHER);
            mNetworkTrafficStartAlphaController.setAlpha(/*alpha*/ 0f, SOURCE_OTHER);
            mNetworkTrafficCenterAlphaController.setAlpha(/*alpha*/ 0f, SOURCE_OTHER);
            mNetworkTrafficEndAlphaController.setAlpha(/*alpha*/ 0f, SOURCE_OTHER);
        } else {
            mEndSideAlphaController.animateToAlpha(/*alpha*/ 0f, SOURCE_OTHER, FADE_OUT_DURATION,
                    InterpolatorsAndroidX.ALPHA_OUT, /*startDelay*/ 0);
            mNetworkTrafficStartAlphaController.animateToAlpha(/*alpha*/ 0f, SOURCE_OTHER,
                    FADE_OUT_DURATION, InterpolatorsAndroidX.ALPHA_OUT, /*startDelay*/ 0);
            mNetworkTrafficCenterAlphaController.animateToAlpha(/*alpha*/ 0f, SOURCE_OTHER,
                    FADE_OUT_DURATION, InterpolatorsAndroidX.ALPHA_OUT, /*startDelay*/ 0);
            mNetworkTrafficEndAlphaController.animateToAlpha(/*alpha*/ 0f, SOURCE_OTHER,
                    FADE_OUT_DURATION, InterpolatorsAndroidX.ALPHA_OUT, /*startDelay*/ 0);
        }
    }

    private void showEndSideContent(boolean animate) {
        if (!animate) {
            mEndSideAlphaController.setAlpha(1f, SOURCE_OTHER);
            mNetworkTrafficStartAlphaController.setAlpha(1f, SOURCE_OTHER);
            mNetworkTrafficCenterAlphaController.setAlpha(1f, SOURCE_OTHER);
            mNetworkTrafficEndAlphaController.setAlpha(1f, SOURCE_OTHER);
            return;
        }
        if (mKeyguardStateController.isKeyguardFadingAway()) {
@@ -642,9 +669,27 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
                    mKeyguardStateController.getKeyguardFadingAwayDuration(),
                    InterpolatorsAndroidX.LINEAR_OUT_SLOW_IN,
                    mKeyguardStateController.getKeyguardFadingAwayDelay());
            mNetworkTrafficStartAlphaController.animateToAlpha(/*alpha*/ 1f, SOURCE_OTHER,
                    mKeyguardStateController.getKeyguardFadingAwayDuration(),
                    InterpolatorsAndroidX.LINEAR_OUT_SLOW_IN,
                    mKeyguardStateController.getKeyguardFadingAwayDelay());
            mNetworkTrafficCenterAlphaController.animateToAlpha(/*alpha*/ 1f, SOURCE_OTHER,
                    mKeyguardStateController.getKeyguardFadingAwayDuration(),
                    InterpolatorsAndroidX.LINEAR_OUT_SLOW_IN,
                    mKeyguardStateController.getKeyguardFadingAwayDelay());
            mNetworkTrafficEndAlphaController.animateToAlpha(/*alpha*/ 1f, SOURCE_OTHER,
                    mKeyguardStateController.getKeyguardFadingAwayDuration(),
                    InterpolatorsAndroidX.LINEAR_OUT_SLOW_IN,
                    mKeyguardStateController.getKeyguardFadingAwayDelay());
        } else {
            mEndSideAlphaController.animateToAlpha(/*alpha*/ 1f, SOURCE_OTHER, FADE_IN_DURATION,
                    InterpolatorsAndroidX.ALPHA_IN, FADE_IN_DELAY);
            mNetworkTrafficStartAlphaController.animateToAlpha(/*alpha*/ 1f, SOURCE_OTHER,
                    FADE_IN_DURATION, InterpolatorsAndroidX.ALPHA_IN, FADE_IN_DELAY);
            mNetworkTrafficCenterAlphaController.animateToAlpha(/*alpha*/ 1f, SOURCE_OTHER,
                    FADE_IN_DURATION, InterpolatorsAndroidX.ALPHA_IN, FADE_IN_DELAY);
            mNetworkTrafficEndAlphaController.animateToAlpha(/*alpha*/ 1f, SOURCE_OTHER,
                    FADE_IN_DURATION, InterpolatorsAndroidX.ALPHA_IN, FADE_IN_DELAY);
        }
    }

@@ -798,9 +843,15 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
    private StatusBarSystemEventDefaultAnimator getSystemEventAnimator() {
        return new StatusBarSystemEventDefaultAnimator(getResources(), (alpha) -> {
            mEndSideAlphaController.setAlpha(alpha, SOURCE_SYSTEM_EVENT_ANIMATOR);
            mNetworkTrafficStartAlphaController.setAlpha(alpha, SOURCE_SYSTEM_EVENT_ANIMATOR);
            mNetworkTrafficCenterAlphaController.setAlpha(alpha, SOURCE_SYSTEM_EVENT_ANIMATOR);
            mNetworkTrafficEndAlphaController.setAlpha(alpha, SOURCE_SYSTEM_EVENT_ANIMATOR);
            return Unit.INSTANCE;
        }, (translationX) -> {
            mEndSideContent.setTranslationX(translationX);
            mNetworkTrafficHolderStart.setTranslationX(translationX);
            mNetworkTrafficHolderCenter.setTranslationX(translationX);
            mNetworkTrafficHolderEnd.setTranslationX(translationX);
            return Unit.INSTANCE;
        }, /*isAnimationRunning*/ false);
    }