diff options
author | Adam Cohen <adamcohen@google.com> | 2014-10-14 22:19:40 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-14 22:19:40 +0000 |
commit | 7648d0e1ff703816d2623f2f6320511ae6f0f250 (patch) | |
tree | f38816dd7939e1dd33c6db6745f58521698b73e6 /src | |
parent | 378dd2d4dead2a1090848ff33cb1994cb2d57659 (diff) | |
parent | 4079337ea73706931cae80f35aba8375ff729816 (diff) | |
download | android_packages_apps_Trebuchet-7648d0e1ff703816d2623f2f6320511ae6f0f250.tar.gz android_packages_apps_Trebuchet-7648d0e1ff703816d2623f2f6320511ae6f0f250.tar.bz2 android_packages_apps_Trebuchet-7648d0e1ff703816d2623f2f6320511ae6f0f250.zip |
am 4079337e: am 755dd702: Merge "Fix missing screen when adding widget directly to provider" into ub-now-porkchop
* commit '4079337ea73706931cae80f35aba8375ff729816':
Fix missing screen when adding widget directly to provider
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/LauncherProvider.java | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index 44ccb6cb3..979b26585 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -1288,14 +1288,15 @@ 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; } - return false; } // Add screen id if not present @@ -1551,24 +1552,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 || @@ -1598,10 +1586,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 |