diff options
author | Winson Chung <winsonc@google.com> | 2014-01-15 11:54:45 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-01-15 11:54:45 -0800 |
commit | f120fe4112aa81af4c535fa0a0e4ddd928b1939a (patch) | |
tree | 87460bb4c9b4c8d6f51fbe8a26de347ed493653b | |
parent | 3d3303a258a9826a679b9c714d15523505e32e1c (diff) | |
parent | affe0b5f764274a34b2869de7c529df61c24de7b (diff) | |
download | android_packages_apps_Trebuchet-f120fe4112aa81af4c535fa0a0e4ddd928b1939a.tar.gz android_packages_apps_Trebuchet-f120fe4112aa81af4c535fa0a0e4ddd928b1939a.tar.bz2 android_packages_apps_Trebuchet-f120fe4112aa81af4c535fa0a0e4ddd928b1939a.zip |
am affe0b5f: Merge "Tightening migration conditions. (Bug 11973614)" into jb-ub-now-kermit
* commit 'affe0b5f764274a34b2869de7c529df61c24de7b':
Tightening migration conditions. (Bug 11973614)
-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 6e3032f28..c119999e8 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -41,6 +41,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; @@ -478,11 +479,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(); } } @@ -4280,6 +4288,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 d271976a7..4478e9bbd 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -227,8 +227,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, |