mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-27 23:36:47 +00:00
Create new DesktopNavbarButtonsViewController class.
This CL creates a new DesktopNavbarButtonsViewController class to allow for taskbar buttons and status icons customization on desktop environment. Recall: http://recall/clips/e008d2de-36d3-47f6-954a-5ce18bac69a5 Bug: 213964564 Bug: 196757951 Test: Switch between different system navigation modes and verify the desktop taskbar buttons stay on screen. Change-Id: Ie7a9a044fad3b60cd37d910b8eb78c8734aadfd5
This commit is contained in:
@@ -246,6 +246,10 @@
|
||||
<string name="taskbar_button_ime_switcher">IME switcher</string>
|
||||
<!-- Content description for recents button [CHAR_LIMIT=16] -->
|
||||
<string name="taskbar_button_recents">Recents</string>
|
||||
<!-- Content description for notifications button [CHAR_LIMIT=16] -->
|
||||
<string name="taskbar_button_notifications">Notifications</string>
|
||||
<!-- Content description for quick settings button [CHAR_LIMIT=16] -->
|
||||
<string name="taskbar_button_quick_settings">Quick Settings</string>
|
||||
|
||||
<!-- Label for moving drop target to the top or left side of the screen, depending on orientation (from the taskbar only). -->
|
||||
<string name="move_drop_target_top_or_left">Move to top/left</string>
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (C) 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.
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_NOTIFICATIONS;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_QUICK_SETTINGS;
|
||||
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
|
||||
/**
|
||||
* Controller for managing buttons and status icons in taskbar in a desktop environment.
|
||||
*/
|
||||
public class DesktopNavbarButtonsViewController extends NavbarButtonsViewController {
|
||||
|
||||
private final TaskbarActivityContext mContext;
|
||||
private final FrameLayout mNavButtonsView;
|
||||
private final ViewGroup mNavButtonContainer;
|
||||
|
||||
private TaskbarControllers mControllers;
|
||||
|
||||
public DesktopNavbarButtonsViewController(TaskbarActivityContext context,
|
||||
FrameLayout navButtonsView) {
|
||||
super(context, navButtonsView);
|
||||
mContext = context;
|
||||
mNavButtonsView = navButtonsView;
|
||||
mNavButtonContainer = mNavButtonsView.findViewById(R.id.end_nav_buttons);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the controller
|
||||
*/
|
||||
@Override
|
||||
public void init(TaskbarControllers controllers) {
|
||||
mControllers = controllers;
|
||||
mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize;
|
||||
|
||||
// Quick settings and notifications buttons
|
||||
addButton(R.drawable.ic_sysbar_quick_settings, BUTTON_QUICK_SETTINGS,
|
||||
mNavButtonContainer, mControllers.navButtonController,
|
||||
R.id.quick_settings_button);
|
||||
addButton(R.drawable.ic_sysbar_notifications, BUTTON_NOTIFICATIONS,
|
||||
mNavButtonContainer, mControllers.navButtonController,
|
||||
R.id.notifications_button);
|
||||
}
|
||||
|
||||
/** Cleans up on destroy */
|
||||
@Override
|
||||
public void onDestroy() { }
|
||||
}
|
||||
@@ -15,15 +15,11 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.content.pm.PackageManager.FEATURE_PC;
|
||||
|
||||
import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_HOME;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_IME_SWITCH;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_NOTIFICATIONS;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_QUICK_SETTINGS;
|
||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_RECENTS;
|
||||
import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_KEYGUARD;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE;
|
||||
@@ -325,16 +321,6 @@ public class NavbarButtonsViewController {
|
||||
applyState();
|
||||
mPropertyHolders.forEach(StatePropertyHolder::endAnimation);
|
||||
|
||||
// quick setting and notification buttons
|
||||
if (mContext.getPackageManager().hasSystemFeature(FEATURE_PC)) {
|
||||
addButton(R.drawable.ic_sysbar_quick_settings, BUTTON_QUICK_SETTINGS,
|
||||
mNavButtonContainer, mControllers.navButtonController,
|
||||
R.id.quick_settings_button);
|
||||
addButton(R.drawable.ic_sysbar_notifications, BUTTON_NOTIFICATIONS,
|
||||
mNavButtonContainer, mControllers.navButtonController,
|
||||
R.id.notifications_button);
|
||||
}
|
||||
|
||||
// Initialize things needed to move nav buttons to separate window.
|
||||
mSeparateWindowParent = new BaseDragLayer<TaskbarActivityContext>(mContext, null, 0) {
|
||||
@Override
|
||||
@@ -546,7 +532,7 @@ public class NavbarButtonsViewController {
|
||||
}
|
||||
}
|
||||
|
||||
private ImageView addButton(@DrawableRes int drawableId, @TaskbarButton int buttonType,
|
||||
protected ImageView addButton(@DrawableRes int drawableId, @TaskbarButton int buttonType,
|
||||
ViewGroup parent, TaskbarNavButtonController navButtonController, @IdRes int id) {
|
||||
return addButton(drawableId, buttonType, parent, navButtonController, id,
|
||||
R.layout.taskbar_nav_button);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.content.pm.PackageManager.FEATURE_PC;
|
||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||
@@ -166,7 +167,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
|
||||
mControllers = new TaskbarControllers(this,
|
||||
new TaskbarDragController(this),
|
||||
buttonController,
|
||||
new NavbarButtonsViewController(this, navButtonsView),
|
||||
getPackageManager().hasSystemFeature(FEATURE_PC)
|
||||
? new DesktopNavbarButtonsViewController(this, navButtonsView) :
|
||||
new NavbarButtonsViewController(this, navButtonsView),
|
||||
new RotationButtonController(this,
|
||||
c.getColor(R.color.taskbar_nav_icon_light_color),
|
||||
c.getColor(R.color.taskbar_nav_icon_dark_color),
|
||||
|
||||
@@ -143,6 +143,10 @@ public class TaskbarNavButtonController {
|
||||
return R.string.taskbar_button_ime_switcher;
|
||||
case BUTTON_RECENTS:
|
||||
return R.string.taskbar_button_recents;
|
||||
case BUTTON_NOTIFICATIONS:
|
||||
return R.string.taskbar_button_notifications;
|
||||
case BUTTON_QUICK_SETTINGS:
|
||||
return R.string.taskbar_button_quick_settings;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user