Loading src/com/android/launcher3/Launcher.java +10 −19 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; import android.os.Process; import android.os.StrictMode; import android.os.SystemClock; Loading Loading @@ -444,6 +443,11 @@ public class Launcher extends BaseActivity mSharedPrefs.registerOnSharedPreferenceChangeListener(mRotationPrefChangeHandler); } if (PinItemDragListener.handleDragRequest(this, getIntent())) { // Temporarily enable the rotation mRotationEnabled = true; } // On large interfaces, or on devices that a user has specifically enabled screen rotation, // we want the screen to auto-rotate based on the current orientation setOrientation(); Loading Loading @@ -1769,15 +1773,8 @@ public class Launcher extends BaseActivity if (mLauncherCallbacks != null) { mLauncherCallbacks.onHomeIntent(); } Parcelable dragExtra = intent .getParcelableExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER); if (dragExtra instanceof PinItemDragListener) { PinItemDragListener dragListener = (PinItemDragListener) dragExtra; dragListener.setLauncher(this); mDragLayer.setOnDragListener(dragListener); } } PinItemDragListener.handleDragRequest(this, intent); if (mLauncherCallbacks != null) { mLauncherCallbacks.onNewIntent(intent); Loading Loading @@ -4099,22 +4096,16 @@ public class Launcher extends BaseActivity return ((Launcher) ((ContextWrapper) context).getBaseContext()); } private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener, Runnable { private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener { @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { if (Utilities.ALLOW_ROTATION_PREFERENCE_KEY.equals(key)) { mRotationEnabled = Utilities.isAllowRotationPrefEnabled(getApplicationContext()); if (!waitUntilResume(this, true)) { run(); } // Finish this instance of the activity. When the activity is recreated, // it will initialize the rotation preference again. finish(); } } @Override public void run() { setOrientation(); } } } src/com/android/launcher3/dragndrop/AddItemActivity.java +12 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.appwidget.AppWidgetManager; import android.content.ClipData; import android.content.ClipDescription; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Point; import android.graphics.PointF; Loading @@ -47,6 +48,7 @@ import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.compat.AppWidgetManagerCompat; import com.android.launcher3.compat.PinItemRequestCompat; import com.android.launcher3.model.WidgetItem; Loading Loading @@ -148,6 +150,16 @@ public class AddItemActivity extends BaseActivity implements OnLongClickListener .setPackage(getPackageName()) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .putExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER, listener); if (!getResources().getBoolean(R.bool.allow_rotation) && !Utilities.isAllowRotationPrefEnabled(this) && (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE && !isInMultiWindowMode())) { // If we are starting the drag in landscape even though home is locked in portrait, // restart the home activity to temporarily allow rotation. homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); } startActivity(homeIntent, ActivityOptions.makeCustomAnimation(this, 0, android.R.anim.fade_out).toBundle()); Loading src/com/android/launcher3/dragndrop/PinItemDragListener.java +23 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3.dragndrop; import android.appwidget.AppWidgetManager; import android.content.ClipDescription; import android.content.Intent; import android.graphics.Point; import android.graphics.Rect; import android.os.Bundle; Loading Loading @@ -245,6 +246,13 @@ public class PinItemDragListener } private void postCleanup() { if (mLauncher != null) { // Remove any drag params from the launcher intent since the drag operation is complete. Intent newIntent = new Intent(mLauncher.getIntent()); newIntent.removeExtra(EXTRA_PIN_ITEM_DRAG_LISTENER); mLauncher.setIntent(newIntent); } new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { Loading @@ -268,6 +276,21 @@ public class PinItemDragListener return null; } public static boolean handleDragRequest(Launcher launcher, Intent intent) { if (intent == null || !Intent.ACTION_MAIN.equals(intent.getAction())) { return false; } Parcelable dragExtra = intent.getParcelableExtra(EXTRA_PIN_ITEM_DRAG_LISTENER); if (dragExtra instanceof PinItemDragListener) { PinItemDragListener dragListener = (PinItemDragListener) dragExtra; dragListener.setLauncher(launcher); launcher.getDragLayer().setOnDragListener(dragListener); return true; } return false; } public static final Parcelable.Creator<PinItemDragListener> CREATOR = new Parcelable.Creator<PinItemDragListener>() { public PinItemDragListener createFromParcel(Parcel source) { Loading Loading
src/com/android/launcher3/Launcher.java +10 −19 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; import android.os.Process; import android.os.StrictMode; import android.os.SystemClock; Loading Loading @@ -444,6 +443,11 @@ public class Launcher extends BaseActivity mSharedPrefs.registerOnSharedPreferenceChangeListener(mRotationPrefChangeHandler); } if (PinItemDragListener.handleDragRequest(this, getIntent())) { // Temporarily enable the rotation mRotationEnabled = true; } // On large interfaces, or on devices that a user has specifically enabled screen rotation, // we want the screen to auto-rotate based on the current orientation setOrientation(); Loading Loading @@ -1769,15 +1773,8 @@ public class Launcher extends BaseActivity if (mLauncherCallbacks != null) { mLauncherCallbacks.onHomeIntent(); } Parcelable dragExtra = intent .getParcelableExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER); if (dragExtra instanceof PinItemDragListener) { PinItemDragListener dragListener = (PinItemDragListener) dragExtra; dragListener.setLauncher(this); mDragLayer.setOnDragListener(dragListener); } } PinItemDragListener.handleDragRequest(this, intent); if (mLauncherCallbacks != null) { mLauncherCallbacks.onNewIntent(intent); Loading Loading @@ -4099,22 +4096,16 @@ public class Launcher extends BaseActivity return ((Launcher) ((ContextWrapper) context).getBaseContext()); } private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener, Runnable { private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener { @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { if (Utilities.ALLOW_ROTATION_PREFERENCE_KEY.equals(key)) { mRotationEnabled = Utilities.isAllowRotationPrefEnabled(getApplicationContext()); if (!waitUntilResume(this, true)) { run(); } // Finish this instance of the activity. When the activity is recreated, // it will initialize the rotation preference again. finish(); } } @Override public void run() { setOrientation(); } } }
src/com/android/launcher3/dragndrop/AddItemActivity.java +12 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.appwidget.AppWidgetManager; import android.content.ClipData; import android.content.ClipDescription; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Point; import android.graphics.PointF; Loading @@ -47,6 +48,7 @@ import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.compat.AppWidgetManagerCompat; import com.android.launcher3.compat.PinItemRequestCompat; import com.android.launcher3.model.WidgetItem; Loading Loading @@ -148,6 +150,16 @@ public class AddItemActivity extends BaseActivity implements OnLongClickListener .setPackage(getPackageName()) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .putExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER, listener); if (!getResources().getBoolean(R.bool.allow_rotation) && !Utilities.isAllowRotationPrefEnabled(this) && (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE && !isInMultiWindowMode())) { // If we are starting the drag in landscape even though home is locked in portrait, // restart the home activity to temporarily allow rotation. homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); } startActivity(homeIntent, ActivityOptions.makeCustomAnimation(this, 0, android.R.anim.fade_out).toBundle()); Loading
src/com/android/launcher3/dragndrop/PinItemDragListener.java +23 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3.dragndrop; import android.appwidget.AppWidgetManager; import android.content.ClipDescription; import android.content.Intent; import android.graphics.Point; import android.graphics.Rect; import android.os.Bundle; Loading Loading @@ -245,6 +246,13 @@ public class PinItemDragListener } private void postCleanup() { if (mLauncher != null) { // Remove any drag params from the launcher intent since the drag operation is complete. Intent newIntent = new Intent(mLauncher.getIntent()); newIntent.removeExtra(EXTRA_PIN_ITEM_DRAG_LISTENER); mLauncher.setIntent(newIntent); } new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { Loading @@ -268,6 +276,21 @@ public class PinItemDragListener return null; } public static boolean handleDragRequest(Launcher launcher, Intent intent) { if (intent == null || !Intent.ACTION_MAIN.equals(intent.getAction())) { return false; } Parcelable dragExtra = intent.getParcelableExtra(EXTRA_PIN_ITEM_DRAG_LISTENER); if (dragExtra instanceof PinItemDragListener) { PinItemDragListener dragListener = (PinItemDragListener) dragExtra; dragListener.setLauncher(launcher); launcher.getDragLayer().setOnDragListener(dragListener); return true; } return false; } public static final Parcelable.Creator<PinItemDragListener> CREATOR = new Parcelable.Creator<PinItemDragListener>() { public PinItemDragListener createFromParcel(Parcel source) { Loading