diff options
author | Winson Chung <winsonc@google.com> | 2014-01-15 10:33:02 -0800 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2014-06-06 22:54:26 -0700 |
commit | 69e918a4b2fa5cbc65bbd54643b5a6e94feaf8dc (patch) | |
tree | 55c3c127a8d5ce6ce9557f45e63054d9de351072 | |
parent | 83785b25cb2ac04cb2904564d7e3ca3b834ff6e7 (diff) | |
download | android_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.java | 29 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherClings.java | 46 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 4 |
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, |