diff options
Diffstat (limited to 'src/com/android/launcher3/Launcher.java')
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 64 |
1 files changed, 58 insertions, 6 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index fbb3189f9..01e3fc584 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -66,6 +66,7 @@ import android.os.Handler; import android.os.Message; import android.os.StrictMode; import android.os.SystemClock; +import android.provider.Settings; import android.speech.RecognizerIntent; import android.text.Selection; import android.text.SpannableStringBuilder; @@ -403,6 +404,12 @@ public class Launcher extends Activity } } + public static float sAnimatorDurationScale = 1f; + + public static boolean isAnimatorScaleSafe() { + return sAnimatorDurationScale >= 1f; + } + private CustomContentMode mCustomContentMode = CustomContentMode.CUSTOM_HOME; // Preferences @@ -457,6 +464,38 @@ public class Launcher extends Activity } }; + private class AnimatorScaleObserver extends ContentObserver { + + /** + * Creates a content observer. + * + * @param handler The handler to run {@link #onChange} on, or null if none. + */ + public AnimatorScaleObserver(Handler handler) { + super(handler); + } + + @Override + public void onChange(boolean selfChange) { + onChange(selfChange, null); + } + + @Override + public void onChange(boolean selfChange, Uri uri) { + try { + Float curAnimationDurationScale = Settings.Global.getFloat(getContentResolver(), + Settings.Global.ANIMATOR_DURATION_SCALE); + if (curAnimationDurationScale != sAnimatorDurationScale) { + // the Animator Duration scale has changed, restart the Launcher to respect + // these changes + android.os.Process.killProcess(android.os.Process.myPid()); + } + } catch (Settings.SettingNotFoundException e) { + sAnimatorDurationScale = 1f; + } + } + } + @Override protected void onCreate(Bundle savedInstanceState) { if (DEBUG_STRICT_MODE) { @@ -564,6 +603,16 @@ public class Launcher extends Activity "cyanogenmod.intent.action.PROTECTED_COMPONENT_UPDATE"); registerReceiver(protectedAppsChangedReceiver, protectedAppsFilter, "cyanogenmod.permission.PROTECTED_APP", null); + + try { + sAnimatorDurationScale = Settings.Global.getFloat(getContentResolver(), + Settings.Global.ANIMATOR_DURATION_SCALE); + } catch (Settings.SettingNotFoundException e) { + sAnimatorDurationScale = 1f; + } + + AnimatorScaleObserver obs = new AnimatorScaleObserver(new Handler()); + getContentResolver().registerContentObserver(Settings.Global.CONTENT_URI, true, obs); } public void restoreCustomContentMode() { @@ -1108,10 +1157,6 @@ public class Launcher extends Activity updateGridIfNeeded(); - if(isCustomContentModeGel() && isGelIntegrationSupported()) { - GelIntegrationHelper.getInstance().handleGelResume(); - } - // Restore the previous launcher state if (mOnResumeState == State.WORKSPACE) { showWorkspace(false); @@ -3720,6 +3765,7 @@ public class Launcher extends Activity if (resetPageToZero) { mAppsCustomizeLayout.reset(); } + mAppsCustomizeContent.sortApps(); showAppsCustomizeHelper(animated, false, contentType); mAppsCustomizeLayout.requestFocus(); @@ -4498,6 +4544,8 @@ public class Launcher extends Activity mWorkspace.getUniqueComponents(true, null); mIntentsOnWorkspaceFromUpgradePath = mWorkspace.getUniqueComponents(true, null); } + + mWorkspace.stripEmptyScreens(); } private boolean canRunNewAppsAnimation() { @@ -4977,6 +5025,10 @@ public class Launcher extends Activity } public void updateDynamicGrid() { + updateDynamicGrid(mWorkspace.getRestorePage()); + } + + public void updateDynamicGrid(int page) { mSearchDropTargetBar.setupQSB(Launcher.this); initializeDynamicGrid(); @@ -4984,7 +5036,7 @@ public class Launcher extends Activity mGrid.layout(Launcher.this); // Synchronized reload - mModel.startLoader(true, mWorkspace.getCurrentPage()); + mModel.startLoader(true, page); mWorkspace.updateCustomContentVisibility(); } @@ -4995,7 +5047,7 @@ public class Launcher extends Activity public boolean updateGridIfNeeded() { if (mDynamicGridUpdateRequired) { - updateDynamicGrid(); + updateDynamicGrid(mWorkspace.getCurrentPage()); mDynamicGridUpdateRequired = false; return true; } |