aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/cyanogenmod
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/cyanogenmod')
-rw-r--r--src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl1
-rw-r--r--src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl1
-rw-r--r--src/java/cyanogenmod/externalviews/KeyguardExternalView.java26
-rw-r--r--src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java40
4 files changed, 68 insertions, 0 deletions
diff --git a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl
index 3e0ed9f..c9d75e2 100644
--- a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl
+++ b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewCallbacks.aidl
@@ -26,4 +26,5 @@ interface IKeyguardExternalViewCallbacks {
oneway void setInteractivity(boolean isInteractive);
oneway void onAttachedToWindow();
oneway void onDetachedFromWindow();
+ oneway void slideLockscreenIn();
}
diff --git a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl
index 7405763..a708984 100644
--- a/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl
+++ b/src/java/cyanogenmod/externalviews/IKeyguardExternalViewProvider.aidl
@@ -38,4 +38,5 @@ interface IKeyguardExternalViewProvider
void alterWindow(in int x, in int y, in int width, in int height, in boolean visible,
in Rect clipRect);
+ oneway void onLockscreenSlideOffsetChanged(float swipeProgress);
}
diff --git a/src/java/cyanogenmod/externalviews/KeyguardExternalView.java b/src/java/cyanogenmod/externalviews/KeyguardExternalView.java
index 0c464d3..9f4059a 100644
--- a/src/java/cyanogenmod/externalviews/KeyguardExternalView.java
+++ b/src/java/cyanogenmod/externalviews/KeyguardExternalView.java
@@ -198,6 +198,13 @@ public class KeyguardExternalView extends View implements ViewTreeObserver.OnPre
mWindowAttachmentListener.onDetachedFromWindow();
}
}
+
+ @Override
+ public void slideLockscreenIn() {
+ if (mCallback != null) {
+ mCallback.slideLockscreenIn();
+ }
+ }
};
private void executeQueue() {
@@ -377,6 +384,24 @@ public class KeyguardExternalView extends View implements ViewTreeObserver.OnPre
}
/**
+ * Called from the host when the user is swiping the lockscreen
+ * to transition into the live lock screen
+ *
+ * @param swipeProgress [0-1] represents the progress of the swipe
+ */
+ public void onLockscreenSlideOffsetChanged(final float swipeProgress) {
+ performAction(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ mExternalViewProvider.onLockscreenSlideOffsetChanged(swipeProgress);
+ } catch (RemoteException e) {
+ }
+ }
+ });
+ }
+
+ /**
* External views provided by a
* {@link cyanogenmod.externalviews.KeyguardExternalViewProviderService} can be either
* interactive or non-interactive.
@@ -453,6 +478,7 @@ public class KeyguardExternalView extends View implements ViewTreeObserver.OnPre
boolean requestDismissAndStartActivity(Intent intent);
void collapseNotificationPanel();
void providerDied();
+ void slideLockscreenIn();
}
/**
diff --git a/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java b/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java
index 540e58d..4c69a0a 100644
--- a/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java
+++ b/src/java/cyanogenmod/externalviews/KeyguardExternalViewProviderService.java
@@ -228,6 +228,17 @@ public abstract class KeyguardExternalViewProviderService extends Service {
}
@Override
+ public void onLockscreenSlideOffsetChanged(final float swipeProgress)
+ throws RemoteException {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ Provider.this.onLockscreenSlideOffsetChanged(swipeProgress);
+ }
+ });
+ }
+
+ @Override
public void alterWindow(final int x, final int y, final int width, final int height,
final boolean visible, final Rect clipRect) {
mHandler.post(new Runnable() {
@@ -324,6 +335,18 @@ public abstract class KeyguardExternalViewProviderService extends Service {
mCallbacks.finishBroadcast();
}
+ public void slideLockscreenIn() {
+ int N = mCallbacks.beginBroadcast();
+ for(int i=0; i < N; i++) {
+ IKeyguardExternalViewCallbacks callback = mCallbacks.getBroadcastItem(0);
+ try {
+ callback.slideLockscreenIn();
+ } catch(RemoteException e) {
+ }
+ }
+ mCallbacks.finishBroadcast();
+ }
+
// region Window callbacks
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
@@ -522,6 +545,14 @@ public abstract class KeyguardExternalViewProviderService extends Service {
*/
protected abstract void onScreenTurnedOff();
+ /**
+ * Called from the host when the user is swiping the lockscreen
+ * to transition into the live lock screen
+ *
+ * @param swipeProgress [0-1] represents the progress of the swipe
+ */
+ protected void onLockscreenSlideOffsetChanged(float swipeProgress) {}
+
// callbacks from provider to host
/**
@@ -581,6 +612,15 @@ public abstract class KeyguardExternalViewProviderService extends Service {
mImpl.setInteractivity(isInteractive);
}
+ /**
+ * Call this method when you like to slide in the lockscreen on top of
+ * your live lockscreen. Only relevant if you use
+ * {@link KeyguardExternalViewProviderService.Provider#setInteractivity(boolean)}
+ */
+ protected final void slideLockscreenIn() {
+ mImpl.slideLockscreenIn();
+ }
+
/*package*/ final int getWindowType() {
return WindowManager.LayoutParams.TYPE_KEYGUARD_PANEL;
}