summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/LauncherModel.java
diff options
context:
space:
mode:
authorTyson Miller <tmiller@cyngn.com>2015-11-10 08:59:15 -0800
committerTyson Miller <tmiller@cyngn.com>2015-12-01 17:16:59 -0800
commit719deb83a0ac84422b68605f4d5c782865766aef (patch)
treefd3db92c9e10fa1665c2bb5c7f2e0b059ba79d5d /src/com/android/launcher3/LauncherModel.java
parentb0bc788a4fc3d6d7a86ff3f286d8524e3fa2787c (diff)
downloadandroid_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.java70
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);
+ }
+ });
+ }
}