summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2014-01-15 10:33:02 -0800
committerDanesh M <daneshm90@gmail.com>2014-06-06 22:54:26 -0700
commit69e918a4b2fa5cbc65bbd54643b5a6e94feaf8dc (patch)
tree55c3c127a8d5ce6ce9557f45e63054d9de351072
parent83785b25cb2ac04cb2904564d7e3ca3b834ff6e7 (diff)
downloadandroid_packages_apps_Trebuchet-69e918a4b2fa5cbc65bbd54643b5a6e94feaf8dc.tar.gz
android_packages_apps_Trebuchet-69e918a4b2fa5cbc65bbd54643b5a6e94feaf8dc.tar.bz2
android_packages_apps_Trebuchet-69e918a4b2fa5cbc65bbd54643b5a6e94feaf8dc.zip
Tightening migration conditions. (Bug 11973614)
Change-Id: I6d7417b705227472d035f428cbec933cc6dbf2ce
-rw-r--r--src/com/android/launcher3/Launcher.java29
-rw-r--r--src/com/android/launcher3/LauncherClings.java46
-rw-r--r--src/com/android/launcher3/LauncherModel.java4
3 files changed, 57 insertions, 22 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 0dad0f4f8..bc04ab58a 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -45,6 +45,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
@@ -497,11 +498,18 @@ public class Launcher extends Activity
// On large interfaces, we want the screen to auto-rotate based on the current orientation
unlockScreenOrientation(true);
+ // The two first run cling paths are mutually exclusive, if the launcher is preinstalled
+ // on the device, then we always show the first run cling experience (or if there is no
+ // launcher2). Otherwise, we prompt the user upon started for migration
showFirstRunActivity();
- if (mModel.canMigrateFromOldLauncherDb()) {
- mLauncherClings.showMigrationCling();
+ if (mLauncherClings.shouldShowFirstRunOrMigrationClings()) {
+ if (mModel.canMigrateFromOldLauncherDb(this)) {
+ mLauncherClings.showMigrationCling();
+ } else {
+ mLauncherClings.showFirstRunCling();
+ }
} else {
- mLauncherClings.showFirstRunCling();
+ mLauncherClings.removeFirstRunAndMigrationClings();
}
}
@@ -4441,6 +4449,21 @@ public class Launcher extends Activity
mLauncherClings.updateSearchBarHint(hint);
}
+ protected boolean isLauncherPreinstalled() {
+ PackageManager pm = getPackageManager();
+ try {
+ ApplicationInfo ai = pm.getApplicationInfo(getComponentName().getPackageName(), 0);
+ if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
+ return true;
+ } else {
+ return false;
+ }
+ } catch (NameNotFoundException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
protected String getFirstRunClingSearchBarHint() {
return "";
}
diff --git a/src/com/android/launcher3/LauncherClings.java b/src/com/android/launcher3/LauncherClings.java
index 85937aa62..42a134fdb 100644
--- a/src/com/android/launcher3/LauncherClings.java
+++ b/src/com/android/launcher3/LauncherClings.java
@@ -200,14 +200,27 @@ class LauncherClings {
}
}
- /** Shows the first run cling */
- public void showFirstRunCling() {
+ public boolean shouldShowFirstRunOrMigrationClings() {
SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
- if (isClingsEnabled() &&
- !sharedPrefs.getBoolean(FIRST_RUN_CLING_DISMISSED_KEY, false) &&
- !skipCustomClingIfNoAccounts() ) {
+ return isClingsEnabled() &&
+ !sharedPrefs.getBoolean(FIRST_RUN_CLING_DISMISSED_KEY, false) &&
+ !sharedPrefs.getBoolean(MIGRATION_CLING_DISMISSED_KEY, false);
+ }
+ public void removeFirstRunAndMigrationClings() {
+ removeCling(R.id.first_run_cling);
+ removeCling(R.id.migration_cling);
+ }
+ /**
+ * Shows the first run cling.
+ *
+ * This flow is mutually exclusive with showMigrationCling, and only runs if this Launcher
+ * package was preinstalled or there is no db to migrate from.
+ */
+ public void showFirstRunCling() {
+ if (!skipCustomClingIfNoAccounts()) {
+ SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
// If we're not using the default workspace layout, replace workspace cling
// with a custom workspace cling (usually specified in an overlay)
// For now, only do this on tablets
@@ -238,22 +251,22 @@ class LauncherClings {
}
initCling(R.id.first_run_cling, 0, false, true);
} else {
- removeCling(R.id.first_run_cling);
+ removeFirstRunAndMigrationClings();
}
}
+ /**
+ * Shows the migration cling.
+ *
+ * This flow is mutually exclusive with showFirstRunCling, and only runs if this Launcher
+ * package was not preinstalled and there exists a db to migrate from.
+ */
public void showMigrationCling() {
- // Enable the clings only if they have not been dismissed before
- if (isClingsEnabled() && !mLauncher.getSharedPrefs().getBoolean(
- MIGRATION_CLING_DISMISSED_KEY, false)) {
- mLauncher.hideWorkspaceSearchAndHotseat();
+ mLauncher.hideWorkspaceSearchAndHotseat();
- Cling c = initCling(R.id.migration_cling, 0, false, true);
- c.bringScrimToFront();
- c.bringToFront();
- } else {
- removeCling(R.id.migration_cling);
- }
+ Cling c = initCling(R.id.migration_cling, 0, false, true);
+ c.bringScrimToFront();
+ c.bringToFront();
}
public void showMigrationWorkspaceCling() {
@@ -300,7 +313,6 @@ class LauncherClings {
}
}
-
/** Removes the cling outright from the DragLayer */
private void removeCling(int id) {
final View cling = mLauncher.findViewById(id);
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 7ac564e60..46ee0a326 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -235,8 +235,8 @@ public class LauncherModel extends BroadcastReceiver {
}
}
- boolean canMigrateFromOldLauncherDb() {
- return mOldContentProviderExists;
+ boolean canMigrateFromOldLauncherDb(Launcher launcher) {
+ return mOldContentProviderExists && !launcher.isLauncherPreinstalled() ;
}
static boolean findNextAvailableIconSpaceInScreen(ArrayList<ItemInfo> items, int[] xy,