Merge "Replace title of system services with more specific ones" into tm-qpr-dev
diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java
index 5a49f4a..a610548 100644
--- a/src/com/android/launcher3/dragndrop/AddItemActivity.java
+++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java
@@ -23,6 +23,7 @@
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ADD_EXTERNAL_ITEM_PLACED_AUTOMATICALLY;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ADD_EXTERNAL_ITEM_START;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
+import static com.android.launcher3.widget.WidgetSections.NO_CATEGORY;
 
 import android.annotation.TargetApi;
 import android.app.ActivityOptions;
@@ -63,10 +64,11 @@
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.model.ItemInstallQueue;
 import com.android.launcher3.model.WidgetItem;
+import com.android.launcher3.model.WidgetsModel;
 import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.PackageItemInfo;
 import com.android.launcher3.pm.PinRequestHelper;
 import com.android.launcher3.util.PackageManagerHelper;
-import com.android.launcher3.util.PackageUserKey;
 import com.android.launcher3.util.SystemUiController;
 import com.android.launcher3.views.AbstractSlideInView;
 import com.android.launcher3.views.BaseDragLayer;
@@ -80,6 +82,7 @@
 import com.android.launcher3.widget.WidgetCellPreview;
 import com.android.launcher3.widget.WidgetImageView;
 import com.android.launcher3.widget.WidgetManagerHelper;
+import com.android.launcher3.widget.WidgetSections;
 
 import java.util.function.Supplier;
 
@@ -142,7 +145,7 @@
         mAccessibilityManager =
                 getApplicationContext().getSystemService(AccessibilityManager.class);
 
-        PackageUserKey targetApp = null;
+        final PackageItemInfo targetApp;
         switch (mRequest.getRequestType()) {
             case PinItemRequest.REQUEST_TYPE_SHORTCUT:
                 targetApp = setupShortcut();
@@ -150,6 +153,9 @@
             case PinItemRequest.REQUEST_TYPE_APPWIDGET:
                 targetApp = setupWidget();
                 break;
+            default:
+                targetApp = null;
+                break;
         }
         if (targetApp == null) {
             // TODO: show error toast?
@@ -157,7 +163,7 @@
             return;
         }
         ApplicationInfo info = new PackageManagerHelper(this)
-                .getApplicationInfo(targetApp.mPackageName, targetApp.mUser, 0);
+                .getApplicationInfo(targetApp.packageName, targetApp.user, 0);
         if (info == null) {
             finish();
             return;
@@ -177,7 +183,10 @@
         // Set the label synchronously instead of via IconCache as this is the first thing
         // user sees
         TextView widgetAppName = findViewById(R.id.widget_appName);
-        widgetAppName.setText(info.loadLabel(getPackageManager()));
+        WidgetSections.WidgetSection section = targetApp.widgetCategory == NO_CATEGORY ? null
+                : WidgetSections.getWidgetSections(this).get(targetApp.widgetCategory);
+        widgetAppName.setText(section == null ? info.loadLabel(getPackageManager())
+                : getString(section.mSectionTitle));
 
         mSlideInView = findViewById(R.id.add_item_bottom_sheet);
         mSlideInView.addOnCloseListener(this);
@@ -266,19 +275,18 @@
         }
     }
 
-    private PackageUserKey setupShortcut() {
+    private PackageItemInfo setupShortcut() {
         PinShortcutRequestActivityInfo shortcutInfo =
                 new PinShortcutRequestActivityInfo(mRequest, this);
         mWidgetCell.getWidgetView().setTag(new PendingAddShortcutInfo(shortcutInfo));
         applyWidgetItemAsync(
                 () -> new WidgetItem(shortcutInfo, mApp.getIconCache(), getPackageManager()));
-        return new PackageUserKey(
-                mRequest.getShortcutInfo().getPackage(),
+        return new PackageItemInfo(mRequest.getShortcutInfo().getPackage(),
                 mRequest.getShortcutInfo().getUserHandle());
     }
 
-    private PackageUserKey setupWidget() {
-        LauncherAppWidgetProviderInfo widgetInfo = LauncherAppWidgetProviderInfo
+    private PackageItemInfo setupWidget() {
+        final LauncherAppWidgetProviderInfo widgetInfo = LauncherAppWidgetProviderInfo
                 .fromProviderInfo(this, mRequest.getAppWidgetProviderInfo(this));
         if (widgetInfo.minSpanX > mIdp.numColumns || widgetInfo.minSpanY > mIdp.numRows) {
             // Cannot add widget
@@ -297,7 +305,8 @@
         mWidgetCell.getWidgetView().setTag(pendingInfo);
 
         applyWidgetItemAsync(() -> new WidgetItem(widgetInfo, mIdp, mApp.getIconCache()));
-        return new PackageUserKey(widgetInfo.provider.getPackageName(), widgetInfo.getUser());
+        return WidgetsModel.newPendingItemInfo(this, widgetInfo.getComponent(),
+                widgetInfo.getUser());
     }
 
     private void applyWidgetItemAsync(final Supplier<WidgetItem> itemProvider) {