summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2014-03-21 13:32:21 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-03-21 13:32:22 +0000
commit784305b135f280d29f51b0ae7caf602248227079 (patch)
tree8ddfe5c760fbfeb93b89678eaacd080c26c1ff8b
parentefb6fe514e8f63aac7c76fbc3d2505821967edc8 (diff)
parentf627f9cd1fb376c206c8a68d052fc36ebc0aaa1d (diff)
downloadLauncher2-kitkat-mr2-release.tar.gz
-rw-r--r--src/com/android/launcher2/LauncherModel.java2
-rw-r--r--src/com/android/launcher2/LauncherProvider.java24
-rw-r--r--src/com/android/launcher2/PreloadReceiver.java7
3 files changed, 29 insertions, 4 deletions
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index 4133b1e4..71da90c4 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1275,7 +1275,7 @@ public class LauncherModel extends BroadcastReceiver {
final boolean isSafeMode = manager.isSafeMode();
// Make sure the default workspace is loaded, if needed
- mApp.getLauncherProvider().loadDefaultFavoritesIfNecessary(0);
+ mApp.getLauncherProvider().loadDefaultFavoritesIfNecessary(0, false);
synchronized (sBgLock) {
sBgWorkspaceItems.clear();
diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java
index 8097ac99..2a485737 100644
--- a/src/com/android/launcher2/LauncherProvider.java
+++ b/src/com/android/launcher2/LauncherProvider.java
@@ -55,6 +55,7 @@ import com.android.launcher2.LauncherSettings.Favorites;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
+import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
@@ -208,10 +209,13 @@ public class LauncherProvider extends ContentProvider {
/**
* @param workspaceResId that can be 0 to use default or non-zero for specific resource
*/
- synchronized public void loadDefaultFavoritesIfNecessary(int origWorkspaceResId) {
+ synchronized public void loadDefaultFavoritesIfNecessary(int origWorkspaceResId,
+ boolean overridePrevious) {
String spKey = LauncherApplication.getSharedPreferencesKey();
SharedPreferences sp = getContext().getSharedPreferences(spKey, Context.MODE_PRIVATE);
- if (sp.getBoolean(DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED, false)) {
+ boolean dbCreatedNoWorkspace =
+ sp.getBoolean(DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED, false);
+ if (dbCreatedNoWorkspace || overridePrevious) {
int workspaceResId = origWorkspaceResId;
// Use default workspace resource if none provided
@@ -225,11 +229,27 @@ public class LauncherProvider extends ContentProvider {
if (origWorkspaceResId != 0) {
editor.putInt(DEFAULT_WORKSPACE_RESOURCE_ID, origWorkspaceResId);
}
+ if (!dbCreatedNoWorkspace && overridePrevious) {
+ if (LOGD) Log.d(TAG, "Clearing old launcher database");
+ // Workspace has already been loaded, clear the database.
+ deleteDatabase();
+ }
mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), workspaceResId);
editor.commit();
}
}
+ public void deleteDatabase() {
+ // Are you sure? (y/n)
+ final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+ final File dbFile = new File(db.getPath());
+ mOpenHelper.close();
+ if (dbFile.exists()) {
+ SQLiteDatabase.deleteDatabase(dbFile);
+ }
+ mOpenHelper = new DatabaseHelper(getContext());
+ }
+
private static class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG_FAVORITES = "favorites";
private static final String TAG_FAVORITE = "favorite";
diff --git a/src/com/android/launcher2/PreloadReceiver.java b/src/com/android/launcher2/PreloadReceiver.java
index 08350b6f..c28c55d8 100644
--- a/src/com/android/launcher2/PreloadReceiver.java
+++ b/src/com/android/launcher2/PreloadReceiver.java
@@ -28,6 +28,8 @@ public class PreloadReceiver extends BroadcastReceiver {
public static final String EXTRA_WORKSPACE_NAME =
"com.android.launcher.action.EXTRA_WORKSPACE_NAME";
+ public static final String EXTRA_OVERRIDE_PREVIOUS =
+ "com.android.launcher.action.EXTRA_OVERRIDE_PREVIOUS";
@Override
public void onReceive(Context context, Intent intent) {
@@ -37,13 +39,16 @@ public class PreloadReceiver extends BroadcastReceiver {
String name = intent.getStringExtra(EXTRA_WORKSPACE_NAME);
final int workspaceResId = !TextUtils.isEmpty(name)
? context.getResources().getIdentifier(name, "xml", "com.android.launcher") : 0;
+
+ final boolean overridePrevious =
+ intent.getBooleanExtra(EXTRA_OVERRIDE_PREVIOUS, false);
if (LOGD) {
Log.d(TAG, "workspace name: " + name + " id: " + workspaceResId);
}
new Thread(new Runnable() {
@Override
public void run() {
- provider.loadDefaultFavoritesIfNecessary(workspaceResId);
+ provider.loadDefaultFavoritesIfNecessary(workspaceResId, overridePrevious);
}
}).start();
}