diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2015-09-22 18:24:19 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2015-10-20 11:04:44 -0700 |
commit | d249748abf357925b326d57ab68eb6c2b23c4ef6 (patch) | |
tree | 6a9734fb33ceb2bf0dd3a61ae5b6bf31cb22d8e4 /src/com/android/launcher3 | |
parent | f912beb2ee4b75af1fe8c710d6948b9737fed531 (diff) | |
download | android_packages_apps_Trebuchet-d249748abf357925b326d57ab68eb6c2b23c4ef6.tar.gz android_packages_apps_Trebuchet-d249748abf357925b326d57ab68eb6c2b23c4ef6.tar.bz2 android_packages_apps_Trebuchet-d249748abf357925b326d57ab68eb6c2b23c4ef6.zip |
Making all provider calls using content resolver.
This will allow us to easily move db creation out of onCreate
Change-Id: Idd949624b0a9c95e4451e48db7764b7b7922c40a
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r-- | src/com/android/launcher3/LauncherAppState.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherBackupAgentHelper.java | 15 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 24 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherProvider.java | 85 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherSettings.java | 21 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/model/MigrateFromRestoreTask.java | 5 |
7 files changed, 107 insertions, 53 deletions
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java index f0e34e513..6ce7c5fdd 100644 --- a/src/com/android/launcher3/LauncherAppState.java +++ b/src/com/android/launcher3/LauncherAppState.java @@ -134,7 +134,7 @@ public class LauncherAppState { } LauncherModel setLauncher(Launcher launcher) { - getLauncherProvider().setLauncherProviderChangeListener(launcher); + sLauncherProvider.get().setLauncherProviderChangeListener(launcher); mModel.initialize(launcher); mAccessibilityDelegate = ((launcher != null) && Utilities.ATLEAST_LOLLIPOP) ? new LauncherAccessibilityDelegate(launcher) : null; @@ -157,10 +157,6 @@ public class LauncherAppState { sLauncherProvider = new WeakReference<LauncherProvider>(provider); } - public static LauncherProvider getLauncherProvider() { - return sLauncherProvider.get(); - } - public WidgetPreviewLoader getWidgetCache() { return mWidgetCache; } diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java index 8eb4e6369..2a5f1974e 100644 --- a/src/com/android/launcher3/LauncherBackupAgentHelper.java +++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java @@ -73,7 +73,8 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { } // Clear dB before restore - LauncherAppState.getLauncherProvider().createEmptyDB(); + LauncherSettings.Settings.call(getContentResolver(), + LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB); boolean hasData; try { @@ -90,12 +91,14 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { } if (hasData && mHelper.restoreSuccessful) { - LauncherAppState.getLauncherProvider().clearFlagEmptyDbCreated(); + LauncherSettings.Settings.call(getContentResolver(), + LauncherSettings.Settings.METHOD_CLEAR_EMPTY_DB_FLAG); LauncherClings.synchonouslyMarkFirstRunClingDismissed(this); // Rank was added in v4. if (mHelper.restoredBackupVersion <= 3) { - LauncherAppState.getLauncherProvider().updateFolderItemsRank(); + LauncherSettings.Settings.call(getContentResolver(), + LauncherSettings.Settings.METHOD_UPDATE_FOLDER_ITEMS_RANK); } if (MigrateFromRestoreTask.ENABLED && mHelper.shouldAttemptWorkspaceMigration()) { @@ -105,10 +108,12 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { mHelper.widgetSizes); } - LauncherAppState.getLauncherProvider().convertShortcutsToLauncherActivities(); + LauncherSettings.Settings.call(getContentResolver(), + LauncherSettings.Settings.METHOD_CONVERT_SHORTCUTS_TO_ACTIVITIES); } else { if (VERBOSE) Log.v(TAG, "Nothing was restored, clearing DB"); - LauncherAppState.getLauncherProvider().createEmptyDB(); + LauncherSettings.Settings.call(getContentResolver(), + LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB); } } } diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 5711db0a9..4ad4695f3 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -481,7 +481,9 @@ public class LauncherModel extends BroadcastReceiver if (!found) { // Still no position found. Add a new screen to the end. - screenId = LauncherAppState.getLauncherProvider().generateNewScreenId(); + screenId = LauncherSettings.Settings.call(context.getContentResolver(), + LauncherSettings.Settings.METHOD_NEW_SCREEN_ID) + .getLong(LauncherSettings.Settings.EXTRA_VALUE); // Save the screen id for binding in the workspace workspaceScreens.add(screenId); @@ -990,7 +992,9 @@ public class LauncherModel extends BroadcastReceiver final ContentResolver cr = context.getContentResolver(); item.onAddToDatabase(context, values); - item.id = LauncherAppState.getLauncherProvider().generateNewItemId(); + item.id = LauncherSettings.Settings.call(cr, LauncherSettings.Settings.METHOD_NEW_ITEM_ID) + .getLong(LauncherSettings.Settings.EXTRA_VALUE); + values.put(LauncherSettings.Favorites._ID, item.id); final StackTraceElement[] stackTrace = new Throwable().getStackTrace(); @@ -1727,17 +1731,20 @@ public class LauncherModel extends BroadcastReceiver if ((mFlags & LOADER_FLAG_CLEAR_WORKSPACE) != 0) { Log.d(TAG, "loadWorkspace: resetting launcher database"); - LauncherAppState.getLauncherProvider().deleteDatabase(); + LauncherSettings.Settings.call(contentResolver, + LauncherSettings.Settings.METHOD_DELETE_DB); } if ((mFlags & LOADER_FLAG_MIGRATE_SHORTCUTS) != 0) { // append the user's Launcher2 shortcuts Log.d(TAG, "loadWorkspace: migrating from launcher2"); - LauncherAppState.getLauncherProvider().migrateLauncher2Shortcuts(); + LauncherSettings.Settings.call(contentResolver, + LauncherSettings.Settings.METHOD_MIGRATE_LAUNCHER2_SHORTCUTS); } else { // Make sure the default workspace is loaded Log.d(TAG, "loadWorkspace: loading default favorites"); - LauncherAppState.getLauncherProvider().loadDefaultFavoritesIfNecessary(); + LauncherSettings.Settings.call(contentResolver, + LauncherSettings.Settings.METHOD_LOAD_DEFAULT_FAVORITES); } synchronized (sBgLock) { @@ -2232,8 +2239,11 @@ public class LauncherModel extends BroadcastReceiver } // Remove any empty folder - for (long folderId : LauncherAppState.getLauncherProvider() - .deleteEmptyFolders()) { + ArrayList<Long> deletedFolderIds = (ArrayList<Long>) LauncherSettings.Settings + .call(contentResolver, + LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS) + .getSerializable(LauncherSettings.Settings.EXTRA_VALUE); + for (long folderId : deletedFolderIds) { sBgWorkspaceItems.remove(sBgFolders.get(folderId)); sBgFolders.remove(folderId); sBgItemsIdMap.remove(folderId); diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index 230bedb21..17e282048 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -62,7 +62,6 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; -import java.util.List; public class LauncherProvider extends ContentProvider { private static final String TAG = "LauncherProvider"; @@ -91,10 +90,6 @@ public class LauncherProvider extends ContentProvider { return true; } - public boolean wasNewDbCreated() { - return mOpenHelper.wasNewDbCreated(); - } - public void setLauncherProviderChangeListener(LauncherProviderChangeListener listener) { mListener = listener; mOpenHelper.mListener = mListener; @@ -271,6 +266,50 @@ public class LauncherProvider extends ContentProvider { result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE, value); return result; } + case LauncherSettings.Settings.METHOD_CLEAR_EMPTY_DB_FLAG: { + clearFlagEmptyDbCreated(); + return null; + } + case LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS: { + Bundle result = new Bundle(); + result.putSerializable(LauncherSettings.Settings.EXTRA_VALUE, deleteEmptyFolders()); + return result; + } + case LauncherSettings.Settings.METHOD_NEW_ITEM_ID: { + Bundle result = new Bundle(); + result.putLong(LauncherSettings.Settings.EXTRA_VALUE, mOpenHelper.generateNewItemId()); + return result; + } + case LauncherSettings.Settings.METHOD_NEW_SCREEN_ID: { + Bundle result = new Bundle(); + result.putLong(LauncherSettings.Settings.EXTRA_VALUE, mOpenHelper.generateNewScreenId()); + return result; + } + case LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB: { + createEmptyDB(); + return null; + } + case LauncherSettings.Settings.METHOD_LOAD_DEFAULT_FAVORITES: { + loadDefaultFavoritesIfNecessary(); + return null; + } + case LauncherSettings.Settings.METHOD_MIGRATE_LAUNCHER2_SHORTCUTS: { + mOpenHelper.migrateLauncher2Shortcuts(mOpenHelper.getWritableDatabase(), + Uri.parse(getContext().getString(R.string.old_launcher_provider_uri))); + return null; + } + case LauncherSettings.Settings.METHOD_UPDATE_FOLDER_ITEMS_RANK: { + mOpenHelper.updateFolderItemsRank(mOpenHelper.getWritableDatabase(), false); + return null; + } + case LauncherSettings.Settings.METHOD_CONVERT_SHORTCUTS_TO_ACTIVITIES: { + mOpenHelper.convertShortcutsToLauncherActivities(mOpenHelper.getWritableDatabase()); + return null; + } + case LauncherSettings.Settings.METHOD_DELETE_DB: { + deleteDatabase(); + return null; + } } return null; } @@ -279,8 +318,8 @@ public class LauncherProvider extends ContentProvider { * Deletes any empty folder from the DB. * @return Ids of deleted folders. */ - public List<Long> deleteEmptyFolders() { - ArrayList<Long> folderIds = new ArrayList<Long>(); + private ArrayList<Long> deleteEmptyFolders() { + ArrayList<Long> folderIds = new ArrayList<>(); SQLiteDatabase db = mOpenHelper.getWritableDatabase(); db.beginTransaction(); try { @@ -297,7 +336,7 @@ public class LauncherProvider extends ContentProvider { folderIds.add(c.getLong(0)); } c.close(); - if (folderIds.size() > 0) { + if (!folderIds.isEmpty()) { db.delete(TABLE_FAVORITES, Utilities.createDbSelectionQuery( LauncherSettings.Favorites._ID, folderIds), null); } @@ -323,22 +362,14 @@ public class LauncherProvider extends ContentProvider { values.put(LauncherSettings.ChangeLogColumns.MODIFIED, System.currentTimeMillis()); } - public long generateNewItemId() { - return mOpenHelper.generateNewItemId(); - } - - public long generateNewScreenId() { - return mOpenHelper.generateNewScreenId(); - } - /** * Clears all the data for a fresh start. */ - synchronized public void createEmptyDB() { + synchronized private void createEmptyDB() { mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); } - public void clearFlagEmptyDbCreated() { + private void clearFlagEmptyDbCreated() { Utilities.getPrefs(getContext()).edit().remove(EMPTY_DATABASE_CREATED).commit(); } @@ -349,7 +380,7 @@ public class LauncherProvider extends ContentProvider { * 3) From a partner configuration APK, already in the system image * 4) The default configuration for the particular device */ - synchronized public void loadDefaultFavoritesIfNecessary() { + synchronized private void loadDefaultFavoritesIfNecessary() { SharedPreferences sp = Utilities.getPrefs(getContext()); if (sp.getBoolean(EMPTY_DATABASE_CREATED, false)) { @@ -434,21 +465,7 @@ public class LauncherProvider extends ContentProvider { mOpenHelper, getContext().getResources(), defaultLayout); } - public void migrateLauncher2Shortcuts() { - mOpenHelper.migrateLauncher2Shortcuts(mOpenHelper.getWritableDatabase(), - Uri.parse(getContext().getString(R.string.old_launcher_provider_uri))); - } - - public void updateFolderItemsRank() { - mOpenHelper.updateFolderItemsRank(mOpenHelper.getWritableDatabase(), false); - } - - public void convertShortcutsToLauncherActivities() { - mOpenHelper.convertShortcutsToLauncherActivities(mOpenHelper.getWritableDatabase()); - } - - - public void deleteDatabase() { + private void deleteDatabase() { // Are you sure? (y/n) final SQLiteDatabase db = mOpenHelper.getWritableDatabase(); final File dbFile = new File(db.getPath()); diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java index 8a5804f34..9ee6a2199 100644 --- a/src/com/android/launcher3/LauncherSettings.java +++ b/src/com/android/launcher3/LauncherSettings.java @@ -16,7 +16,9 @@ package com.android.launcher3; +import android.content.ContentResolver; import android.net.Uri; +import android.os.Bundle; import android.provider.BaseColumns; import com.android.launcher3.config.ProviderConfig; @@ -321,8 +323,27 @@ public class LauncherSettings { public static final String METHOD_GET_BOOLEAN = "get_boolean_setting"; public static final String METHOD_SET_BOOLEAN = "set_boolean_setting"; + public static final String METHOD_CLEAR_EMPTY_DB_FLAG = "clear_empty_db_flag"; + + public static final String METHOD_DELETE_EMPTY_FOLDERS = "delete_empty_folders"; + public static final String METHOD_UPDATE_FOLDER_ITEMS_RANK = "update_folder_items_rank"; + public static final String METHOD_CONVERT_SHORTCUTS_TO_ACTIVITIES = + "convert_shortcuts_to_launcher_activities"; + + public static final String METHOD_NEW_ITEM_ID = "generate_new_item_id"; + public static final String METHOD_NEW_SCREEN_ID = "generate_new_screen_id"; + + public static final String METHOD_CREATE_EMPTY_DB = "create_empty_db"; + public static final String METHOD_DELETE_DB = "delete_db"; + + public static final String METHOD_LOAD_DEFAULT_FAVORITES = "load_default_favorites"; + public static final String METHOD_MIGRATE_LAUNCHER2_SHORTCUTS = "migrate_l2_shortcuts"; public static final String EXTRA_VALUE = "value"; public static final String EXTRA_DEFAULT_VALUE = "default_value"; + + public static Bundle call(ContentResolver cr, String method) { + return cr.call(CONTENT_URI, method, null, null); + } } } diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 4efa21f60..407dc4f89 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -799,7 +799,9 @@ public class Workspace extends PagedView mWorkspaceScreens.remove(EXTRA_EMPTY_SCREEN_ID); mScreenOrder.remove(EXTRA_EMPTY_SCREEN_ID); - long newId = LauncherAppState.getLauncherProvider().generateNewScreenId(); + long newId = LauncherSettings.Settings.call(getContext().getContentResolver(), + LauncherSettings.Settings.METHOD_NEW_SCREEN_ID) + .getLong(LauncherSettings.Settings.EXTRA_VALUE); mWorkspaceScreens.put(newId, cl); mScreenOrder.add(newId); diff --git a/src/com/android/launcher3/model/MigrateFromRestoreTask.java b/src/com/android/launcher3/model/MigrateFromRestoreTask.java index 786ab6009..9cabc8d41 100644 --- a/src/com/android/launcher3/model/MigrateFromRestoreTask.java +++ b/src/com/android/launcher3/model/MigrateFromRestoreTask.java @@ -135,7 +135,10 @@ public class MigrateFromRestoreTask { new boolean[mTrgX][mTrgY], deepCopy(mCarryOver), true); placement.find(); if (placement.finalPlacedItems.size() > 0) { - long newScreenId = LauncherAppState.getLauncherProvider().generateNewScreenId(); + long newScreenId = LauncherSettings.Settings.call( + mContext.getContentResolver(), + LauncherSettings.Settings.METHOD_NEW_SCREEN_ID) + .getLong(LauncherSettings.Settings.EXTRA_VALUE); allScreens.add(newScreenId); for (DbEntry item : placement.finalPlacedItems) { if (!mCarryOver.remove(itemMap.get(item.id))) { |