Move Note Shortcut from Settings to SystemUI

* Removes all code related to Note Shortcut from Settings

Test: manual
Flag: not needed
Fixes: b/280431176
Change-Id: I6bb6cfbb98a57b6ad3cf261626b3d84d0be96e53
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6fe6832..5904282 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -4869,22 +4869,6 @@
         </receiver>
 
         <activity
-            android:name=".notetask.shortcut.CreateNoteTaskShortcutActivity"
-            android:enabled="false"
-            android:exported="true"
-            android:excludeFromRecents="true"
-            android:resizeableActivity="false"
-            android:theme="@android:style/Theme.NoDisplay"
-            android:label="@string/note_task_shortcut_label"
-            android:icon="@drawable/ic_note_task_shortcut_widget">
-
-            <intent-filter>
-                <action android:name="android.intent.action.CREATE_SHORTCUT" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
-        <activity
             android:name="com.android.settings.bluetooth.QrCodeScanModeActivity"
             android:permission="android.permission.BLUETOOTH_CONNECT"
             android:exported="true">
diff --git a/res/drawable/ic_note_task_shortcut_widget.xml b/res/drawable/ic_note_task_shortcut_widget.xml
deleted file mode 100644
index ce1f51a..0000000
--- a/res/drawable/ic_note_task_shortcut_widget.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ Copyright (C) 2023 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.
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="48dp"
-    android:height="48dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-
-    <group>
-        <path
-            android:fillColor="#0B57D0"
-            android:pathData="M48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48C37.2548 48 48 37.2548 48 24Z" />
-        <path
-            android:fillColor="#ffffff"
-            android:pathData="M37.692 16.8L36 15.108C35.556 14.652 34.944 14.4 34.308 14.4C33.672 14.4 33.06 14.652 32.616 15.108L23.268 24.456L20.508 27.216L19.248 32.28C19.212 32.352 19.2 32.448 19.2 32.532C19.2 33.12 19.68 33.6 20.268 33.6C20.352 33.6 20.448 33.588 20.532 33.564L25.596 32.304L28.356 29.544L37.704 20.196C38.148 19.74 38.4 19.128 38.4 18.492C38.4 17.856 38.148 17.244 37.692 16.8ZM26.652 27.852L25.452 29.052L23.76 27.36L24.96 26.16L34.308 16.8L36 18.492L26.652 27.852Z" />
-        <path
-            android:fillColor="#ffffff"
-            android:pathData="M17.825 33.6C12.257 33.6 10.2 31.9581 10.2 28.7351C10.2 25.8284 12.727 24.4472 16.656 23.8703C17.95 23.6802 18.6125 23.137 18.6125 22.5654C18.6125 20.9818 15.415 21.0788 14.4 21.0324V18.6C14.4 18.6 17.95 18.6 19.65 19.8923C20.5181 20.5521 21 21.4125 21 22.7149C21 24.5027 19.7375 25.9099 16.656 26.1633C14.6206 26.3307 12.6 26.9351 12.6 28.7351C12.6 30.3527 14.616 31.1676 18.6 31.1676L17.825 33.6Z" />
-    </group>
-</vector>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 261829b..69c29ae 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12079,7 +12079,4 @@
 
     <!-- Warning message when we try to dock an app not supporting multiple instances split into multiple sides [CHAR LIMIT=NONE] -->
     <string name="dock_multi_instances_not_supported_text">"This app can only be opened in 1 window"</string>
-
-    <!-- [CHAR LIMIT=30] Label used to open Note Task -->
-    <string name="note_task_shortcut_label">Note shortcut</string>
 </resources>
diff --git a/src/com/android/settings/notetask/shortcut/CreateNoteTaskShortcutActivity.kt b/src/com/android/settings/notetask/shortcut/CreateNoteTaskShortcutActivity.kt
deleted file mode 100644
index d3d7510..0000000
--- a/src/com/android/settings/notetask/shortcut/CreateNoteTaskShortcutActivity.kt
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2023 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.settings.notetask.shortcut
-
-import android.app.Activity
-import android.app.role.RoleManager
-import android.app.role.RoleManager.ROLE_NOTES
-import android.content.ComponentName
-import android.content.Context
-import android.content.Intent
-import android.content.pm.ShortcutInfo
-import android.content.pm.ShortcutManager
-import android.graphics.drawable.Icon
-import android.os.Bundle
-import android.os.PersistableBundle
-import android.os.UserHandle
-import androidx.activity.ComponentActivity
-import androidx.core.content.getSystemService
-import com.android.settings.R
-
-/**
- * Activity responsible for create a shortcut for notes action. If the shortcut is enabled, a new
- * shortcut will appear in the widget picker. If the shortcut is selected, the Activity here will be
- * launched, creating a new shortcut for [CreateNoteTaskShortcutActivity], and will finish.
- *
- * IMPORTANT! The shortcut package name and class should be synchronized with SystemUI controller:
- * [com.android.systemui.notetask.NoteTaskController#SETTINGS_CREATE_NOTE_TASK_SHORTCUT_COMPONENT].
- *
- * Changing the package name or class is a breaking change.
- *
- * @see <a
- *   href="https://developer.android.com/develop/ui/views/launch/shortcuts/creating-shortcuts#custom-pinned">Creating
- *   a custom shortcut activity</a>
- */
-internal class CreateNoteTaskShortcutActivity : ComponentActivity() {
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        val roleManager = requireNotNull(getSystemService<RoleManager>())
-        val shortcutManager = requireNotNull(getSystemService<ShortcutManager>())
-
-        super.onCreate(savedInstanceState)
-
-        val shortcutInfo = roleManager.createNoteShortcutInfoAsUser(context = this, user)
-        val shortcutIntent = shortcutManager.createShortcutResultIntent(shortcutInfo)
-        setResult(Activity.RESULT_OK, shortcutIntent)
-
-        finish()
-    }
-
-    private companion object {
-
-        private const val SHORTCUT_ID = "note_task_shortcut_id"
-        private const val EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE =
-                "extra_shortcut_badge_override_package"
-        private const val ACTION_LAUNCH_NOTE_TASK = "com.android.systemui.action.LAUNCH_NOTE_TASK"
-
-        private fun RoleManager.createNoteShortcutInfoAsUser(
-                context: Context,
-                user: UserHandle,
-        ): ShortcutInfo? {
-            val systemUiComponent = context.getSystemUiComponent() ?: return null
-
-            val extras = PersistableBundle()
-            getDefaultRoleHolderAsUser(ROLE_NOTES, user)?.let { packageName ->
-                // Set custom app badge using the icon from ROLES_NOTES default app.
-                extras.putString(EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE, packageName)
-            }
-
-            val icon = Icon.createWithResource(context, R.drawable.ic_note_task_shortcut_widget)
-
-            val intent = Intent(ACTION_LAUNCH_NOTE_TASK).apply {
-                setPackage(systemUiComponent.packageName)
-            }
-
-            // Creates a System UI context. That will let the ownership with SystemUI and allows it
-            // to perform updates such as enabling or updating the badge override package.
-            val systemUiContext = context.createPackageContext(
-                    systemUiComponent.packageName,
-                    /* flags */ 0,
-            )
-
-            return ShortcutInfo.Builder(systemUiContext, SHORTCUT_ID)
-                    .setIntent(intent)
-                    .setShortLabel(context.getString(R.string.note_task_shortcut_label))
-                    .setLongLived(true)
-                    .setIcon(icon)
-                    .setExtras(extras)
-                    .build()
-        }
-
-        private fun RoleManager.getDefaultRoleHolderAsUser(
-                role: String,
-                user: UserHandle,
-        ): String? = getRoleHoldersAsUser(role, user).firstOrNull()
-
-        private fun Context.getSystemUiComponent(): ComponentName? {
-            val flattenName = getString(
-                    com.android.internal.R.string.config_systemUIServiceComponent)
-            check(flattenName.isNotEmpty()) {
-                "No 'com.android.internal.R.string.config_systemUIServiceComponent' resource"
-            }
-            return try {
-                ComponentName.unflattenFromString(flattenName)
-            } catch (e: RuntimeException) {
-                val message = "Invalid component name defined by 'com.android.internal.R.string." +
-                        "config_systemUIServiceComponent' resource: $flattenName"
-                throw IllegalStateException(message, e)
-            }
-        }
-    }
-}