diff options
author | Tyson Miller <tmiller@cyngn.com> | 2015-11-10 08:59:15 -0800 |
---|---|---|
committer | Tyson Miller <tmiller@cyngn.com> | 2015-12-01 17:16:59 -0800 |
commit | 719deb83a0ac84422b68605f4d5c782865766aef (patch) | |
tree | fd3db92c9e10fa1665c2bb5c7f2e0b059ba79d5d /src/com/android/launcher3/LauncherModel.java | |
parent | b0bc788a4fc3d6d7a86ff3f286d8524e3fa2787c (diff) | |
download | android_packages_apps_Trebuchet-719deb83a0ac84422b68605f4d5c782865766aef.tar.gz android_packages_apps_Trebuchet-719deb83a0ac84422b68605f4d5c782865766aef.tar.bz2 android_packages_apps_Trebuchet-719deb83a0ac84422b68605f4d5c782865766aef.zip |
Trebuchet: dynamic folder type added
Issue-Id: CYNGNOS-1328
Change-Id: I09bf7bec119307f54836fedee8a1532627035d9a
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 70 |
1 files changed, 66 insertions, 4 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index dae2c180f..724fa3227 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -116,6 +116,8 @@ public class LauncherModel extends BroadcastReceiver private boolean mIsLoaderTaskRunning; private volatile boolean mFlushingWorkerThread; + private static RemoteFolderUpdater remoteFolderUpdater; + /** * Maintain a set of packages per user, for which we added a shortcut on the workspace. */ @@ -933,10 +935,10 @@ public class LauncherModel extends BroadcastReceiver String userSerial = Long.toString(UserManagerCompat.getInstance(context) .getSerialNumberForUser(user)); Cursor c = cr.query(LauncherSettings.Favorites.CONTENT_URI, - new String[] { "title", "intent", "profileId" }, - "title=? and (intent=? or intent=?) and profileId=?", - new String[] { title, intentWithPkg.toUri(0), intentWithoutPkg.toUri(0), userSerial }, - null); + new String[]{"title", "intent", "profileId"}, + "title=? and (intent=? or intent=?) and profileId=?", + new String[]{title, intentWithPkg.toUri(0), intentWithoutPkg.toUri(0), userSerial}, + null); try { return c.moveToFirst(); } finally { @@ -2384,6 +2386,11 @@ public class LauncherModel extends BroadcastReceiver sBgItemsIdMap.put(folderInfo.id, folderInfo); sBgFolders.put(folderInfo.id, folderInfo); + + if (folderInfo.subType == FolderInfo.REMOTE_SUBTYPE) { + syncRemoteFolder(folderInfo, mContext); + } + break; case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: @@ -4245,4 +4252,59 @@ public class LauncherModel extends BroadcastReceiver public Callbacks getCallback() { return mCallbacks != null ? mCallbacks.get() : null; } + + public static RemoteFolderUpdater getRemoteFolderUpdaterInstance() { + if (remoteFolderUpdater == null) { + remoteFolderUpdater = new RemoteFolderUpdater(); + } + return remoteFolderUpdater; + } + + protected synchronized void syncRemoteFolder(final FolderInfo folderInfo, final Context context) { + + String spKey = LauncherAppState.getSharedPreferencesKey(); + SharedPreferences sp = context.getSharedPreferences(spKey, Context.MODE_PRIVATE); + boolean isEnabled = sp.getBoolean(RemoteFolder.REMOTE_FOLDER_ENABLED, true); + + if (!isEnabled) { + Log.e(TAG, "Prevented remote folder sync, since it has been explicitly disabled."); + return; + } + + RemoteFolderUpdater updater = getRemoteFolderUpdaterInstance(); + final int count = 6; + + updater.requestSync(context, count, new RemoteFolderUpdater.RemoteFolderUpdateListener() { + @Override + public void onSuccess(List<RemoteFolderUpdater.RemoteFolderInfo> remoteFolderInfoList) { + + synchronized (mLock) { + + // Clear contents to prevent any duplicates + if (folderInfo.contents != null && !folderInfo.contents.isEmpty()) { + deleteItemsFromDatabase(context, folderInfo.contents); + folderInfo.contents.clear(); + } + + // Add each remote folder item, update the DB, and notify listeners + for (RemoteFolderUpdater.RemoteFolderInfo remoteFolderInfo : remoteFolderInfoList) { + ShortcutInfo shortcutInfo = new ShortcutInfo(remoteFolderInfo.getIntent(), + remoteFolderInfo.getTitle(), + remoteFolderInfo.getTitle(), + remoteFolderInfo.getIcon(), + UserHandleCompat.myUserHandle()); + folderInfo.add(shortcutInfo); + } + + updateItemInDatabase(context, folderInfo); + folderInfo.itemsChanged(); + } + } + + @Override + public void onFailure(String error) { + Log.e(TAG, "Failed to sync data for the remote folder's shortcuts. Reason: " + error); + } + }); + } } |