From 68f356427fd3907a3ade1d272aa115ddd4be2806 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Thu, 7 Sep 2023 21:42:22 +0530 Subject: [PATCH 001/879] base: Add stub files Signed-off-by: Pranav Vashi --- core/res/res/values/cr_arrays.xml | 8 ++++++++ core/res/res/values/cr_attrs.xml | 12 ++++++++++++ core/res/res/values/cr_colors.xml | 8 ++++++++ core/res/res/values/cr_config.xml | 8 ++++++++ core/res/res/values/cr_dimens.xml | 8 ++++++++ core/res/res/values/cr_strings.xml | 8 ++++++++ core/res/res/values/cr_styles.xml | 8 ++++++++ core/res/res/values/cr_symbols.xml | 8 ++++++++ packages/SystemUI/res/values-night/cr_colors.xml | 8 ++++++++ packages/SystemUI/res/values/cr_arrays.xml | 8 ++++++++ packages/SystemUI/res/values/cr_attrs.xml | 8 ++++++++ packages/SystemUI/res/values/cr_colors.xml | 8 ++++++++ packages/SystemUI/res/values/cr_config.xml | 8 ++++++++ packages/SystemUI/res/values/cr_dimens.xml | 8 ++++++++ packages/SystemUI/res/values/cr_strings.xml | 8 ++++++++ packages/SystemUI/res/values/cr_styles.xml | 8 ++++++++ packages/SystemUI/res/values/cr_symbols.xml | 8 ++++++++ 17 files changed, 140 insertions(+) create mode 100644 core/res/res/values/cr_arrays.xml create mode 100644 core/res/res/values/cr_attrs.xml create mode 100644 core/res/res/values/cr_colors.xml create mode 100644 core/res/res/values/cr_config.xml create mode 100644 core/res/res/values/cr_dimens.xml create mode 100644 core/res/res/values/cr_strings.xml create mode 100644 core/res/res/values/cr_styles.xml create mode 100644 core/res/res/values/cr_symbols.xml create mode 100644 packages/SystemUI/res/values-night/cr_colors.xml create mode 100644 packages/SystemUI/res/values/cr_arrays.xml create mode 100644 packages/SystemUI/res/values/cr_attrs.xml create mode 100644 packages/SystemUI/res/values/cr_colors.xml create mode 100644 packages/SystemUI/res/values/cr_config.xml create mode 100644 packages/SystemUI/res/values/cr_dimens.xml create mode 100644 packages/SystemUI/res/values/cr_strings.xml create mode 100644 packages/SystemUI/res/values/cr_styles.xml create mode 100644 packages/SystemUI/res/values/cr_symbols.xml diff --git a/core/res/res/values/cr_arrays.xml b/core/res/res/values/cr_arrays.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/core/res/res/values/cr_arrays.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/core/res/res/values/cr_attrs.xml b/core/res/res/values/cr_attrs.xml new file mode 100644 index 0000000000000..359efbead321f --- /dev/null +++ b/core/res/res/values/cr_attrs.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/core/res/res/values/cr_colors.xml b/core/res/res/values/cr_colors.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/core/res/res/values/cr_colors.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/core/res/res/values/cr_config.xml b/core/res/res/values/cr_config.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/core/res/res/values/cr_config.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/core/res/res/values/cr_dimens.xml b/core/res/res/values/cr_dimens.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/core/res/res/values/cr_dimens.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/core/res/res/values/cr_strings.xml b/core/res/res/values/cr_strings.xml new file mode 100644 index 0000000000000..f64316a150bb9 --- /dev/null +++ b/core/res/res/values/cr_strings.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/core/res/res/values/cr_styles.xml b/core/res/res/values/cr_styles.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/core/res/res/values/cr_styles.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/core/res/res/values/cr_symbols.xml b/core/res/res/values/cr_symbols.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/core/res/res/values/cr_symbols.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values-night/cr_colors.xml b/packages/SystemUI/res/values-night/cr_colors.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values-night/cr_colors.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_arrays.xml b/packages/SystemUI/res/values/cr_arrays.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values/cr_arrays.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_attrs.xml b/packages/SystemUI/res/values/cr_attrs.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values/cr_attrs.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_colors.xml b/packages/SystemUI/res/values/cr_colors.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values/cr_colors.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_config.xml b/packages/SystemUI/res/values/cr_config.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values/cr_config.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_dimens.xml b/packages/SystemUI/res/values/cr_dimens.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values/cr_dimens.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_strings.xml b/packages/SystemUI/res/values/cr_strings.xml new file mode 100644 index 0000000000000..f64316a150bb9 --- /dev/null +++ b/packages/SystemUI/res/values/cr_strings.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_styles.xml b/packages/SystemUI/res/values/cr_styles.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values/cr_styles.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/packages/SystemUI/res/values/cr_symbols.xml b/packages/SystemUI/res/values/cr_symbols.xml new file mode 100644 index 0000000000000..ae31375594fee --- /dev/null +++ b/packages/SystemUI/res/values/cr_symbols.xml @@ -0,0 +1,8 @@ + + + + + From c190e47dca61d0c1a9f4cd42c03259c10df187c0 Mon Sep 17 00:00:00 2001 From: Bruno Martins Date: Mon, 17 Sep 2018 11:52:04 +0100 Subject: [PATCH 002/879] fw/b: Add support for runtime toggle of navbar Co-authored-by: Adnan Begovic Co-authored-by: jhenrique09 Co-authored-by: LuK1337 Co-authored-by: Paul Keith Co-authored-by: Timo Wendt Change-Id: I4a6d3f89bc171c3921875b24c077cb78c03517ad Signed-off-by: Pranav Vashi --- .../server/power/PowerManagerService.java | 27 +++++++++---- .../com/android/server/wm/DisplayPolicy.java | 38 ++++++++++++++++++- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index ff600c7d0a2b1..25dca815a9fdd 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -1250,6 +1250,8 @@ interface PowerPropertiesWrapper { private static native boolean nativeSetPowerMode(int mode, boolean enabled); private static native boolean nativeForceSuspend(); + private boolean mForceNavbar; + // Whether proximity check on wake is enabled by default private boolean mProximityWakeEnabledByDefaultConfig; @@ -1621,6 +1623,9 @@ private void systemReady() { resolver.registerContentObserver(LineageSettings.Secure.getUriFor( LineageSettings.Secure.KEYBOARD_BRIGHTNESS), false, mSettingsObserver, UserHandle.USER_ALL); + resolver.registerContentObserver(LineageSettings.System.getUriFor( + LineageSettings.System.FORCE_SHOW_NAVBAR), + false, mSettingsObserver, UserHandle.USER_ALL); // Register for broadcasts from other components of the system. IntentFilter filter = new IntentFilter(); @@ -1768,6 +1773,10 @@ private void updateSettingsLocked() { LineageSettings.Secure.KEYBOARD_BRIGHTNESS, mKeyboardBrightnessDefault, UserHandle.USER_CURRENT); + mForceNavbar = LineageSettings.System.getIntForUser(resolver, + LineageSettings.System.FORCE_SHOW_NAVBAR, + 0, UserHandle.USER_CURRENT) == 1; + mDirty |= DIRTY_SETTINGS; } @@ -3314,15 +3323,17 @@ private void updateUserActivitySummaryLocked(long now, int dirty) { if (wakefulness == WAKEFULNESS_AWAKE) { if (mButtonsLight != null) { float buttonBrightness = BRIGHTNESS_OFF_FLOAT; - if (isValidBrightness( - mButtonBrightnessOverrideFromWindowManager)) { - if (mButtonBrightnessOverrideFromWindowManager > - PowerManager.BRIGHTNESS_MIN) { - buttonBrightness = - mButtonBrightnessOverrideFromWindowManager; + if (!mForceNavbar) { + if (isValidBrightness( + mButtonBrightnessOverrideFromWindowManager)) { + if (mButtonBrightnessOverrideFromWindowManager > + PowerManager.BRIGHTNESS_MIN) { + buttonBrightness = + mButtonBrightnessOverrideFromWindowManager; + } + } else if (isValidButtonBrightness(mButtonBrightness)) { + buttonBrightness = mButtonBrightness; } - } else if (isValidButtonBrightness(mButtonBrightness)) { - buttonBrightness = mButtonBrightness; } if (!mButtonLightOnKeypressOnly) { diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index b05de11ffc613..66f47d7b46be1 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -85,10 +85,12 @@ import android.app.LoadedApk; import android.app.ResourcesManager; import android.app.WindowConfiguration; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; +import android.database.ContentObserver; import android.graphics.Insets; import android.graphics.PixelFormat; import android.graphics.Rect; @@ -149,6 +151,8 @@ import com.android.server.wallpaper.WallpaperManagerInternal; import com.android.wm.shell.Flags; +import lineageos.providers.LineageSettings; + import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; @@ -252,6 +256,7 @@ UiModeManagerInternal getUiModeManagerInternal() { private volatile boolean mHasStatusBar; private volatile boolean mHasNavigationBar; + private volatile boolean mForceNavbar; // Can the navigation bar ever move to the side? private volatile boolean mNavigationBarCanMove; private volatile boolean mNavigationBarAlwaysShowOnSideGesture; @@ -395,6 +400,8 @@ UiModeManagerInternal getUiModeManagerInternal() { private RefreshRatePolicy mRefreshRatePolicy; + private SettingsObserver mSettingsObserver; + /** * If true, attach the navigation bar to the current transition app. * The value is read from config_attachNavBarToAppDuringTransition and could be overlaid by RRO @@ -432,6 +439,24 @@ public void handleMessage(Message msg) { } } + private class SettingsObserver extends ContentObserver { + public SettingsObserver(Handler handler) { + super(handler); + + ContentResolver resolver = mContext.getContentResolver(); + resolver.registerContentObserver(LineageSettings.System.getUriFor( + LineageSettings.System.FORCE_SHOW_NAVBAR), false, this, + UserHandle.USER_ALL); + + updateSettings(); + } + + @Override + public void onChange(boolean selfChange) { + updateSettings(); + } + } + DisplayPolicy(WindowManagerService service, DisplayContent displayContent) { mService = service; mContext = displayContent.isDefaultDisplay ? service.mContext @@ -686,6 +711,9 @@ public void onAppTransitionFinishedLocked(IBinder token) { } else if ("0".equals(navBarOverride)) { mHasNavigationBar = true; } + + // Register content observer only for main display + mSettingsObserver = new SettingsObserver(mHandler); } else { mHasStatusBar = false; mHasNavigationBar = mDisplayContent.isSystemDecorationsSupported(); @@ -732,6 +760,14 @@ void systemReady() { } } + public void updateSettings() { + ContentResolver resolver = mContext.getContentResolver(); + + mForceNavbar = LineageSettings.System.getIntForUser(resolver, + LineageSettings.System.FORCE_SHOW_NAVBAR, 0, + UserHandle.USER_CURRENT) == 1; + } + private int getDisplayId() { return mDisplayContent.getDisplayId(); } @@ -780,7 +816,7 @@ public int getDockMode() { } public boolean hasNavigationBar() { - return mHasNavigationBar; + return mHasNavigationBar || mForceNavbar; } void updateHasNavigationBarIfNeeded() { From fa77ff11b2055075898a0c08d1849f108bf33bf7 Mon Sep 17 00:00:00 2001 From: Utkarsh Gupta Date: Thu, 28 Dec 2017 21:55:45 +0100 Subject: [PATCH 003/879] Allow screen unpinning on devices without navbar Change-Id: Iedfc08f4d95bbee3c8578c0d2450b90739e63603 Screen Pinning: Show correct text for on screen nav. Similar to I09c2ef661bff272cb4f7ca43bac0e45f4b20a4d4, we're not getting an instance of PhoneWindowManager which we can rely on to update dynamically. TICKET: OPO-393 Change-Id: Iacf8221066461fb6940dd88432e665812545c3ff Signed-off-by: Pranav Vashi --- packages/SystemUI/res/values/cm_strings.xml | 6 ++++++ .../navigationbar/ScreenPinningNotify.java | 16 +++++++++++++++- .../recents/ScreenPinningRequest.java | 16 ++++++++++------ .../server/policy/PhoneWindowManager.java | 19 ++++++++++++++++++- 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/res/values/cm_strings.xml b/packages/SystemUI/res/values/cm_strings.xml index f918477d575bc..381dc02c91103 100644 --- a/packages/SystemUI/res/values/cm_strings.xml +++ b/packages/SystemUI/res/values/cm_strings.xml @@ -129,4 +129,10 @@ Remove the 3 second wait HEVC encoding Use the more efficient HEVC encoder + + + This keeps it in view until you unpin. Touch & hold Back to unpin. + + + To unpin this screen, touch & hold Back button diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/ScreenPinningNotify.java b/packages/SystemUI/src/com/android/systemui/navigationbar/ScreenPinningNotify.java index 1e40dd9945d28..06994346210fd 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/ScreenPinningNotify.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/ScreenPinningNotify.java @@ -17,8 +17,10 @@ package com.android.systemui.navigationbar; import android.content.Context; +import android.os.RemoteException; import android.os.SystemClock; import android.util.Slog; +import android.view.WindowManagerGlobal; import android.widget.Toast; import com.android.systemui.SysUIToast; @@ -60,7 +62,9 @@ public void showEscapeToast(boolean isGestureNavEnabled, boolean isRecentsButton if (mLastToast != null) { mLastToast.cancel(); } - mLastToast = makeAllUserToastAndShow(isGestureNavEnabled + mLastToast = makeAllUserToastAndShow(!hasSoftNavigationBar() + ? R.string.screen_pinning_toast_no_navbar + : isGestureNavEnabled ? R.string.screen_pinning_toast_gesture_nav : isRecentsButtonVisible ? R.string.screen_pinning_toast @@ -73,4 +77,14 @@ private Toast makeAllUserToastAndShow(int resId) { toast.show(); return toast; } + + private boolean hasSoftNavigationBar() { + try { + return WindowManagerGlobal.getWindowManagerService() + .hasNavigationBar(mContext.getDisplayId()); + } catch (RemoteException e) { + Slog.e(TAG, "Failed to check soft navigation bar", e); + return false; + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java index a1281ec23f92b..d83ccfc16f206 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java +++ b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java @@ -302,16 +302,20 @@ && hasSoftNavigationBar(mContext.getDisplayId()) && !isLargeScreen(mContext)) { mLayout.findViewById(R.id.screen_pinning_recents_group).setVisibility(VISIBLE); mLayout.findViewById(R.id.screen_pinning_home_bg_light).setVisibility(INVISIBLE); mLayout.findViewById(R.id.screen_pinning_home_bg).setVisibility(INVISIBLE); - descriptionStringResId = touchExplorationEnabled - ? R.string.screen_pinning_description_accessible - : R.string.screen_pinning_description; + descriptionStringResId = !hasSoftNavigationBar(displayId) + ? R.string.screen_pinning_description_no_navbar + : touchExplorationEnabled + ? R.string.screen_pinning_description_accessible + : R.string.screen_pinning_description; } else { mLayout.findViewById(R.id.screen_pinning_recents_group).setVisibility(INVISIBLE); mLayout.findViewById(R.id.screen_pinning_home_bg_light).setVisibility(VISIBLE); mLayout.findViewById(R.id.screen_pinning_home_bg).setVisibility(VISIBLE); - descriptionStringResId = touchExplorationEnabled - ? R.string.screen_pinning_description_recents_invisible_accessible - : R.string.screen_pinning_description_recents_invisible; + descriptionStringResId = !hasSoftNavigationBar(displayId) + ? R.string.screen_pinning_description_no_navbar + : touchExplorationEnabled + ? R.string.screen_pinning_description_recents_invisible_accessible + : R.string.screen_pinning_description_recents_invisible; } NavigationBarView navigationBarView = diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 6ecbf2b3942bd..57c45002f8ce7 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -1720,7 +1720,10 @@ private void powerVeryLongPress() { } private void backLongPress() { - if (hasLongPressOnBackBehavior()) { + if (unpinActivity()) { + mBackKeyHandled = true; + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, "Back - Long Press"); + } else if (hasLongPressOnBackBehavior()) { mBackKeyHandled = true; long now = SystemClock.uptimeMillis(); @@ -4317,6 +4320,20 @@ private boolean dispatchKeyToKeyHandlers(KeyEvent event) { return false; } + private boolean unpinActivity() { + if (!hasNavigationBar()) { + try { + if (ActivityTaskManager.getService().isInLockTaskMode()) { + ActivityTaskManager.getService().stopSystemLockTaskMode(); + return true; + } + } catch (RemoteException e) { + // ignore + } + } + return false; + } + // TODO(b/117479243): handle it in InputPolicy /** {@inheritDoc} */ @Override From 98a270c11cbe7992705da5e23151e478927bf9e7 Mon Sep 17 00:00:00 2001 From: Luca Stefani Date: Thu, 22 May 2025 17:13:25 +0200 Subject: [PATCH 004/879] fixup! Firewall: Transport-based toggle support (1/3) Strip unwanted policies when updating background restriction rules and fix one strict equality with a bit check. Change-Id: I51628940f64fe98c930168dc0fe2e487f63ccfde Signed-off-by: Pranav Vashi --- .../server/net/NetworkPolicyManagerService.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index d81103ca52d5e..5e4f941864839 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -3461,10 +3461,10 @@ private void setUidPolicyUncheckedUL(int uid, int oldPolicy, int policy, boolean if (!isUidValidForAllowlistRulesUL(uid)) { notifyApp = false; } else { - final boolean wasDenied = oldPolicy == POLICY_REJECT_METERED_BACKGROUND; - final boolean isDenied = policy == POLICY_REJECT_METERED_BACKGROUND; - final boolean wasAllowed = oldPolicy == POLICY_ALLOW_METERED_BACKGROUND; - final boolean isAllowed = policy == POLICY_ALLOW_METERED_BACKGROUND; + final boolean wasDenied = (oldPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0; + final boolean isDenied = (policy & POLICY_REJECT_METERED_BACKGROUND) != 0; + final boolean wasAllowed = (oldPolicy & POLICY_ALLOW_METERED_BACKGROUND) != 0; + final boolean isAllowed = (policy & POLICY_ALLOW_METERED_BACKGROUND) != 0; final boolean wasBlocked = wasDenied || (mRestrictBackground && !wasAllowed); final boolean isBlocked = isDenied || (mRestrictBackground && !isAllowed); if ((wasAllowed && (!isAllowed || isDenied)) @@ -3874,7 +3874,7 @@ private int getRestrictBackgroundStatusInternal(int uid) { } finally { Binder.restoreCallingIdentity(token); } - if (policy == POLICY_REJECT_METERED_BACKGROUND) { + if ((policy & POLICY_REJECT_METERED_BACKGROUND) != 0) { // App is restricted. return RESTRICT_BACKGROUND_STATUS_ENABLED; } From 27888cd7ea8915044cb8416c6a3b8095443f60d9 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Mon, 9 Mar 2026 20:24:51 +0530 Subject: [PATCH 005/879] Revert "LineageStatusBarItemHolder: Implement receivers removal methods" This reverts commit a9589527dd926c7fadece0135d58306ab57e99f0. --- .../statusbar/LineageStatusBarItemHolder.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java b/packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java index c2053fa573612..ba8b14c8ecd82 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2018-2026 The LineageOS project + * Copyright (C) 2018 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. @@ -145,13 +145,4 @@ public void addVisibilityReceiver(LineageStatusBarItem.VisibilityReceiver visibi mVisibilityReceivers.add(visibilityReceiver); visibilityReceiver.onVisibilityChanged(mItemHolderIsVisible); } - - public void removeDarkReceiver(LineageStatusBarItem.DarkReceiver darkReceiver) { - mDarkReceivers.remove(darkReceiver); - } - - public void removeVisibilityReceiver( - LineageStatusBarItem.VisibilityReceiver visibilityReceiver) { - mVisibilityReceivers.remove(visibilityReceiver); - } } From eba4f8b5031cf4948691180ffc178acb527d83f9 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Thu, 19 Feb 2026 10:11:48 +0530 Subject: [PATCH 006/879] Revert "SystemUI: Network Traffic" This reverts commit a0758a4d29891d4384989a830846f6d137703e06. --- packages/SystemUI/LineageManifest.xml | 5 +- packages/SystemUI/res/layout/status_bar.xml | 51 ------------------- .../phone/PhoneStatusBarTransitions.java | 15 ------ .../ui/binder/HomeStatusBarViewBinder.kt | 10 ---- 4 files changed, 1 insertion(+), 80 deletions(-) diff --git a/packages/SystemUI/LineageManifest.xml b/packages/SystemUI/LineageManifest.xml index 7b1b48de3fb0c..52bd7d2f6165c 100644 --- a/packages/SystemUI/LineageManifest.xml +++ b/packages/SystemUI/LineageManifest.xml @@ -1,7 +1,7 @@ - - diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml index 63c344cbfbd70..8d895c9b9fbd3 100644 --- a/packages/SystemUI/res/layout/status_bar.xml +++ b/packages/SystemUI/res/layout/status_bar.xml @@ -118,23 +118,6 @@ android:orientation="horizontal" android:clipChildren="false"/> - - - - - - @@ -169,23 +152,6 @@ android:gravity="center_vertical|end" android:clipChildren="false"> - - - - - - - - - - - - - diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java index 7fc61dbfcf118..6676a7f7cdf8f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java @@ -25,8 +25,6 @@ import com.android.systemui.res.R; import com.android.systemui.shared.statusbar.phone.BarTransitions; -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; @@ -37,7 +35,6 @@ public final class PhoneStatusBarTransitions extends BarTransitions { private boolean mIsHeadsUp; private View mStartSide, mStatusIcons, mBattery; - private NetworkTraffic mNetworkTrafficStart, mNetworkTrafficCenter, mNetworkTrafficEnd; private Animator mCurrentAnimation; /** @@ -49,13 +46,7 @@ public PhoneStatusBarTransitions(PhoneStatusBarView statusBarView, View backgrou 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*/); } @@ -124,9 +115,6 @@ private void applyMode(int mode, boolean animate) { anims.playTogether( animateTransitionTo(mStartSide, newStartSideAlpha), animateTransitionTo(mStatusIcons, newStatusIconsAlpha), - animateTransitionTo(mNetworkTrafficStart, newStatusIconsAlpha), - animateTransitionTo(mNetworkTrafficCenter, newStatusIconsAlpha), - animateTransitionTo(mNetworkTrafficEnd, newStatusIconsAlpha), animateTransitionTo(mBattery, newBatteryAlpha) ); if (isLightsOut(mode)) { @@ -137,9 +125,6 @@ private void applyMode(int mode, boolean animate) { } else { mStartSide.setAlpha(newStartSideAlpha); mStatusIcons.setAlpha(newStatusIconsAlpha); - mNetworkTrafficStart.setAlpha(newStatusIconsAlpha); - mNetworkTrafficCenter.setAlpha(newStatusIconsAlpha); - mNetworkTrafficEnd.setAlpha(newStatusIconsAlpha); mBattery.setAlpha(newBatteryAlpha); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt index 5b305b712cee8..1ca814b4fa6da 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/HomeStatusBarViewBinder.kt @@ -124,8 +124,6 @@ constructor( val leftClock: Clock = view.requireViewById(R.id.clock) val centerClock: Clock = view.findViewById(R.id.clock_center) val rightClock: Clock = view.findViewById(R.id.clock_right) - val networkTrafficCenterView = view.findViewById(R.id.network_traffic_holder_center) - val networkTrafficStartView = view.findViewById(R.id.network_traffic_holder_start) val notificationIconsArea = view.requireViewById(R.id.notificationIcons) // CollapsedStatusBarFragment doesn't need this @@ -486,19 +484,13 @@ constructor( // animating, then we can use the baseVis default animation if (animState.isAnimatingChip()) { // Just apply the visibility of the view, but don't animate - networkTrafficCenterView.visibility = baseVis.visibility - networkTrafficStartView.visibility = baseVis.visibility systemInfoView.visibility = baseVis.visibility // Now apply the animation state, with its animator when (animState) { AnimatingIn -> { - systemEventChipAnimateIn?.invoke(networkTrafficCenterView) - systemEventChipAnimateIn?.invoke(networkTrafficStartView) systemEventChipAnimateIn?.invoke(systemInfoView) } AnimatingOut -> { - systemEventChipAnimateOut?.invoke(networkTrafficCenterView) - systemEventChipAnimateOut?.invoke(networkTrafficStartView) systemEventChipAnimateOut?.invoke(systemInfoView) } else -> { @@ -506,8 +498,6 @@ constructor( } } } else { - networkTrafficCenterView.adjustVisibility(baseVis) - networkTrafficStartView.adjustVisibility(baseVis) systemInfoView.adjustVisibility(baseVis) } } From e0882e03f8647101dfc99edc8b0780bd7c78f2e6 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Thu, 19 Feb 2026 10:12:01 +0530 Subject: [PATCH 007/879] Revert "SystemUI: Add Lineage statusbar item holder" This reverts commit fab583eb9e6ff481a1a65529117ae42fe407df2f. --- .../statusbar/LineageStatusBarItemHolder.java | 148 ------------------ 1 file changed, 148 deletions(-) delete mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java b/packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java deleted file mode 100644 index ba8b14c8ecd82..0000000000000 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LineageStatusBarItemHolder.java +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright (C) 2018 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. - * 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.statusbar; - -import android.content.Context; -import android.graphics.Rect; -import android.util.AttributeSet; -import android.view.View; -import android.widget.RelativeLayout; - -import com.android.systemui.Dependency; -import com.android.systemui.plugins.DarkIconDispatcher; -import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; -import com.android.systemui.res.R; - -import org.lineageos.internal.statusbar.LineageStatusBarItem; - -import java.util.ArrayList; - -public class LineageStatusBarItemHolder extends RelativeLayout - implements LineageStatusBarItem.Manager { - private static final String TAG = "LineageStatusBarItemHolder"; - - private ArrayList mDarkReceivers = - new ArrayList(); - private ArrayList mVisibilityReceivers = - new ArrayList(); - - private ArrayList mLastAreas; - private float mLastDarkIntensity; - private int mLastTint; - - private boolean mItemHolderIsVisible; - - private Context mContext; - - public LineageStatusBarItemHolder(Context context) { - this(context, null); - } - - public LineageStatusBarItemHolder(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public LineageStatusBarItemHolder(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mContext = context; - mItemHolderIsVisible = false; - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - - setOnSystemUiVisibilityChangeListener(mSystemUiVisibilityChangeListener); - updateStatusBarVisibility(getSystemUiVisibility()); - - Dependency.get(DarkIconDispatcher.class).addDarkReceiver(mDarkReceiver); - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - setOnSystemUiVisibilityChangeListener(null); - Dependency.get(DarkIconDispatcher.class).removeDarkReceiver(mDarkReceiver); - } - - // Propagate systemui tint updates to registered receivers. - - private DarkReceiver mDarkReceiver = new DarkReceiver() { - @Override - public void onDarkChanged(ArrayList areas, float darkIntensity, int tint) { - mLastAreas = areas; - mLastDarkIntensity = darkIntensity; - mLastTint = tint; - for (LineageStatusBarItem.DarkReceiver r : mDarkReceivers) { - r.onDarkChanged(areas, darkIntensity, tint); - } - } - }; - - // Collect and propagate item holder visibility to - // registered receivers. - // - // We watch both our own view visibility and systemui visibility. - // Latest change in either direction wins (and has been observed - // thus far to always be correct). - - @Override - public void onVisibilityAggregated(boolean isVisible) { - super.onVisibilityAggregated(isVisible); - updateVisibilityReceivers(isVisible); - } - - private View.OnSystemUiVisibilityChangeListener mSystemUiVisibilityChangeListener = - new View.OnSystemUiVisibilityChangeListener() { - @Override - public void onSystemUiVisibilityChange(int visibility) { - updateStatusBarVisibility(visibility); - } - }; - - private void updateStatusBarVisibility(int visibility) { - final boolean isVisible = - (visibility & SYSTEM_UI_FLAG_FULLSCREEN) == 0 - || (visibility & SYSTEM_UI_FLAG_LOW_PROFILE) != 0; - updateVisibilityReceivers(isVisible); - } - - private void updateVisibilityReceivers(boolean isVisible) { - if (isVisible == mItemHolderIsVisible) { - return; - } - mItemHolderIsVisible = isVisible; - for (LineageStatusBarItem.VisibilityReceiver r : mVisibilityReceivers) { - r.onVisibilityChanged(mItemHolderIsVisible); - } - } - - // LineageStatusBarItem.Manager methods - - public void addDarkReceiver(LineageStatusBarItem.DarkReceiver darkReceiver) { - darkReceiver.setFillColors( - mContext.getColor(R.color.dark_mode_icon_color_dual_tone_fill), - mContext.getColor(R.color.light_mode_icon_color_dual_tone_fill)); - mDarkReceivers.add(darkReceiver); - darkReceiver.onDarkChanged(mLastAreas, mLastDarkIntensity, mLastTint); - } - - public void addVisibilityReceiver(LineageStatusBarItem.VisibilityReceiver visibilityReceiver) { - mVisibilityReceivers.add(visibilityReceiver); - visibilityReceiver.onVisibilityChanged(mItemHolderIsVisible); - } -} From a8d1f1eff4e4ac743a35a8865ec2ede769f32895 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Wed, 13 Jul 2022 21:05:54 +0530 Subject: [PATCH 008/879] SystemUI: Update black theme package overlay Signed-off-by: Pranav Vashi --- .../src/com/android/systemui/theme/ThemeOverlayApplier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java index fe928c381156c..9bfc193a508e3 100644 --- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java +++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java @@ -68,7 +68,7 @@ public class ThemeOverlayApplier implements Dumpable { static final String SYSUI_PACKAGE = "com.android.systemui"; static final String OVERLAY_BLACK_THEME = - "org.lineageos.overlay.customization.blacktheme"; + "com.android.system.theme.black"; static final String OVERLAY_CATEGORY_DYNAMIC_COLOR = "android.theme.customization.dynamic_color"; From fe5a3afcc8d763576ca9bd6d8bd808782a0e2f99 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Wed, 7 Oct 2020 13:11:29 +0530 Subject: [PATCH 009/879] base: Export bodyFontFamily and bodyFontFamilyMedium symbols * So that they can be used in apps like launcher and settings. Signed-off-by: Pranav Vashi --- core/res/res/values/symbols.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 819b7cc28e5af..0da4e5964131f 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -4265,6 +4265,7 @@ + From 8ca9e16b0f3626128960277361ce1dac8bb6b20f Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Sun, 29 Dec 2019 19:31:38 +0530 Subject: [PATCH 010/879] Wire up default fonts with config Signed-off-by: Pranav Vashi --- core/res/res/layout/time_picker_material.xml | 2 +- core/res/res/values/config.xml | 4 ++-- .../res/values/donottranslate_material.xml | 24 +++++++++---------- core/res/res/values/styles.xml | 4 ++-- core/res/res/values/styles_material.xml | 16 ++++++------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/core/res/res/layout/time_picker_material.xml b/core/res/res/layout/time_picker_material.xml index 75973798219ef..ee733f1f39e86 100644 --- a/core/res/res/layout/time_picker_material.xml +++ b/core/res/res/layout/time_picker_material.xml @@ -44,7 +44,7 @@ android:paddingTop="20dp" android:paddingBottom="20dp" android:includeFontPadding="false" - android:fontFamily="sans-serif-medium" + android:fontFamily="@string/config_bodyFontFamilyMedium" android:textSize="34sp" android:textColor="@color/white" android:text="@string/time_picker_header_text"/> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index fbe4c3280e492..40dec4659c271 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -5398,7 +5398,7 @@ 90 - + sans-serif @@ -5483,7 +5483,7 @@ true - @string/font_family_button_material + sans-serif-medium sans-serif diff --git a/core/res/res/values/donottranslate_material.xml b/core/res/res/values/donottranslate_material.xml index 9cf9f6cfa86df..24ae4d430a947 100644 --- a/core/res/res/values/donottranslate_material.xml +++ b/core/res/res/values/donottranslate_material.xml @@ -16,17 +16,17 @@ - sans-serif-light - sans-serif - sans-serif - sans-serif - sans-serif - sans-serif-medium - sans-serif - sans-serif - sans-serif-medium - sans-serif - sans-serif - sans-serif-medium + @string/config_lightFontFamily + @string/config_bodyFontFamily + @string/config_bodyFontFamily + @string/config_bodyFontFamily + @string/config_headlineFontFamily + @string/config_headlineFontFamilyMedium + @string/config_headlineFontFamily + @string/config_bodyFontFamily + @string/config_bodyFontFamilyMedium + @string/config_bodyFontFamily + @string/config_bodyFontFamily + @string/config_headlineFontFamilyMedium diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 7f720ade62f12..159289a209235 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -283,7 +283,7 @@ please see styles_device_defaults.xml. @@ -999,7 +999,7 @@ please see styles_device_defaults.xml. diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml index 4f714af08e2a0..9c32b1fd8a8e7 100644 --- a/core/res/res/values/styles_material.xml +++ b/core/res/res/values/styles_material.xml @@ -429,7 +429,7 @@ please see styles_device_defaults.xml. From 1cbb211e0b009ff2db0b41d0cafccbd1553e8dd9 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Sun, 5 Jun 2022 01:53:48 +0530 Subject: [PATCH 011/879] base: Use font configs instead hardcoded fonts Signed-off-by: Pranav Vashi Signed-off-by: AnierinB --- .../res/layout/accessibility_button_chooser_item.xml | 2 +- .../layout/accessibility_enable_service_warning.xml | 12 ++++++------ .../layout/accessibility_shortcut_chooser_item.xml | 4 ++-- core/res/res/layout/immersive_mode_cling.xml | 6 +++--- core/res/res/layout/input_method_switch_dialog.xml | 2 +- core/res/res/layout/input_method_switch_item.xml | 4 ++-- .../res/layout/input_method_switch_item_header.xml | 2 +- packages/SystemUI/res/layout/contaminant_dialog.xml | 4 ++-- .../SystemUI/res/layout/immersive_mode_cling.xml | 6 +++--- .../res/layout/shutdown_dialog_finder_active.xml | 6 +++--- packages/SystemUI/res/layout/smart_action_button.xml | 2 +- packages/SystemUI/res/layout/smart_reply_button.xml | 2 +- packages/SystemUI/res/values/styles.xml | 6 +++--- .../android/systemui/volume/SegmentedButtons.java | 10 ++++++++-- 14 files changed, 37 insertions(+), 31 deletions(-) diff --git a/core/res/res/layout/accessibility_button_chooser_item.xml b/core/res/res/layout/accessibility_button_chooser_item.xml index 33d6fa2862f76..70905ca19192d 100644 --- a/core/res/res/layout/accessibility_button_chooser_item.xml +++ b/core/res/res/layout/accessibility_button_chooser_item.xml @@ -45,7 +45,7 @@ android:textAppearance="?attr/textAppearanceSmall" android:textColor="?attr/textColorPrimary" android:textSize="12sp" - android:fontFamily="sans-serif-condensed" + android:fontFamily="@*android:string/config_bodyFontFamily" android:gravity="top|center_horizontal" android:minLines="2" android:maxLines="2" diff --git a/core/res/res/layout/accessibility_enable_service_warning.xml b/core/res/res/layout/accessibility_enable_service_warning.xml index 01ef10177c5a3..fc6f498375193 100644 --- a/core/res/res/layout/accessibility_enable_service_warning.xml +++ b/core/res/res/layout/accessibility_enable_service_warning.xml @@ -51,7 +51,7 @@ android:gravity="center" android:textSize="20sp" android:textColor="?android:attr/textColorPrimary" - android:fontFamily="google-sans-medium"/> + android:fontFamily="@*android:string/config_headlineFontFamily"/> + android:fontFamily="@*android:string/config_bodyFontFamily"/> + android:fontFamily="@*android:string/config_headlineFontFamily"/> + android:fontFamily="@*android:string/config_bodyFontFamily"/> + android:fontFamily="@*android:string/config_headlineFontFamily"/> + android:fontFamily="@*android:string/config_bodyFontFamily" /> + android:fontFamily="@*android:string/config_bodyFontFamily"/> + android:fontFamily="@*android:string/config_bodyFontFamily"/> diff --git a/core/res/res/layout/immersive_mode_cling.xml b/core/res/res/layout/immersive_mode_cling.xml index 4e869b76b5100..385c7191365ce 100644 --- a/core/res/res/layout/immersive_mode_cling.xml +++ b/core/res/res/layout/immersive_mode_cling.xml @@ -44,7 +44,7 @@ android:text="@string/immersive_cling_title" android:textColor="@androidprv:color/materialColorOnSurface" android:textSize="24sp" - android:fontFamily="google-sans" /> + android:fontFamily="@*android:string/config_headlineFontFamily" /> + android:fontFamily="@*android:string/config_bodyFontFamily" />