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

Commit 84a79949 authored by Adam Cohen's avatar Adam Cohen Committed by Android Git Automerger
Browse files

am 755dd702: Merge "Fix missing screen when adding widget directly to...

am 755dd702: Merge "Fix missing screen when adding widget directly to provider" into ub-now-porkchop

* commit '755dd702':
  Fix missing screen when adding widget directly to provider
parents fdbfba88 755dd702
Loading
Loading
Loading
Loading
+31 −20
Original line number Diff line number Diff line
@@ -1290,15 +1290,16 @@ public class LauncherProvider extends ContentProvider {
                    try {
                        int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
                        values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId);
                        if (appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,cn)) {
                            return true;
                        if (!appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,cn)) {
                        }
                    } catch (RuntimeException e) {
                        Log.e(TAG, "Failed to initialize external widget", e);
                        return false;
                    }
                }
                } else {
                    return false;
                }
            }

            // Add screen id if not present
            long screenId = values.getAsLong(LauncherSettings.Favorites.SCREEN);
@@ -1553,24 +1554,11 @@ public class LauncherProvider extends ContentProvider {
        }

        /**
         * Parse folder starting at current {@link XmlPullParser} location.
         * Parse folder items starting at {@link XmlPullParser} location. Allow recursive
         * includes of items.
         */
        private boolean loadFolder(SQLiteDatabase db, ContentValues values, Resources res,
                XmlResourceParser parser) throws IOException, XmlPullParserException {
            final String title;
            final int titleResId = getAttributeResourceValue(parser, ATTR_TITLE, 0);
            if (titleResId != 0) {
                title = res.getString(titleResId);
            } else {
                title = mContext.getResources().getString(R.string.folder_name);
            }

            values.put(LauncherSettings.Favorites.TITLE, title);
            long folderId = addFolder(db, values);
            boolean added = folderId >= 0;

            ArrayList<Long> folderItems = new ArrayList<Long>();

        private void addToFolder(SQLiteDatabase db, Resources res, XmlResourceParser parser,
                ArrayList<Long> folderItems, long folderId) throws IOException, XmlPullParserException {
            int type;
            int folderDepth = parser.getDepth();
            while ((type = parser.next()) != XmlPullParser.END_TAG ||
@@ -1600,10 +1588,33 @@ public class LauncherProvider extends ContentProvider {
                    if (id >= 0) {
                        folderItems.add(id);
                    }
                } else if (TAG_INCLUDE.equals(tag) && folderId >= 0) {
                    addToFolder(db, res, parser, folderItems, folderId);
                } else {
                    throw new RuntimeException("Folders can contain only shortcuts");
                }
            }
        }

        /**
         * Parse folder starting at current {@link XmlPullParser} location.
         */
        private boolean loadFolder(SQLiteDatabase db, ContentValues values, Resources res,
                XmlResourceParser parser) throws IOException, XmlPullParserException {
            final String title;
            final int titleResId = getAttributeResourceValue(parser, ATTR_TITLE, 0);
            if (titleResId != 0) {
                title = res.getString(titleResId);
            } else {
                title = mContext.getResources().getString(R.string.folder_name);
            }

            values.put(LauncherSettings.Favorites.TITLE, title);
            long folderId = addFolder(db, values);
            boolean added = folderId >= 0;

            ArrayList<Long> folderItems = new ArrayList<Long>();
            addToFolder(db, res, parser, folderItems, folderId);

            // We can only have folders with >= 2 items, so we need to remove the
            // folder and clean up if less than 2 items were included, or some