Skip to content

Commit

Permalink
Pie controls: A new way of activation
Browse files Browse the repository at this point in the history
Based on "Pie controls: Introducing a pie delivery service" this
commit binds the pie controls to the newly created pie service.

Patch Set omnirom#2:
* Fixed glitch when displaying the search panel at the lock
  screen.

Patch Set omnirom#5:
* Switch Position to com.android.internal.util.pie.Position
* Removed legacy and unused code

Patch Set omnirom#6:
* Fixed lock screen glitch, finally!

Patch Set omnirom#7:
* Rebase

Patch Set omnirom#9:
* Moved almost all of the pie logic to PieController

Patch Set omnirom#10:
* Remove window completely from WindowManager when not shown

Patch Set omnirom#13:
* Fixed Taichi's bug
* Removed observers in PieView

Patch Set omnirom#14 & omnirom#15:
* Rebase

Change-Id: I352f198068807694d95699618597d0927da3f324
  • Loading branch information
jdoll authored and maniac103 committed May 15, 2013
1 parent 9f11bd1 commit d4bb3bc
Show file tree
Hide file tree
Showing 9 changed files with 272 additions and 539 deletions.
4 changes: 0 additions & 4 deletions packages/SystemUI/res/values/dimens.xml
Expand Up @@ -218,10 +218,6 @@
<dimen name="status_bar_battery_cluster_text_margin">-1dip</dimen>

<!-- ==================== pie controls ==================== -->
<!-- Actual width/height of the trigger views placed on the UI -->
<dimen name="pie_trigger_height">3dp</dimen>
<!-- The distance a touch event must travel on the surface to trigger the pie control -->
<dimen name="pie_trigger_distance">8dp</dimen>
<!-- Padding between the pie controls and the screen border -->
<dimen name="pie_padding">16dp</dimen>

Expand Down
309 changes: 18 additions & 291 deletions packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java

Large diffs are not rendered by default.

Expand Up @@ -88,6 +88,7 @@

import com.android.internal.statusbar.StatusBarIcon;
import com.android.internal.statusbar.StatusBarNotification;
import com.android.internal.util.pie.PiePosition;
import com.android.systemui.R;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.CommandQueue;
Expand All @@ -106,7 +107,6 @@
import com.android.systemui.statusbar.policy.NotificationRowLayout;
import com.android.systemui.statusbar.policy.OnSizeChangedListener;
import com.android.systemui.statusbar.policy.Prefs;
import com.android.systemui.statusbar.policy.PieController.Position;
import com.android.systemui.statusbar.powerwidget.PowerWidget;

public class PhoneStatusBar extends BaseStatusBar {
Expand Down Expand Up @@ -1598,7 +1598,7 @@ public void animateExpandNotificationsPanel() {
}
// don't allow expanding via e.g. service call while status bar is hidden
// due to expanded desktop
if (mExpandedDesktopState == 2) {
if (getExpandedDesktopMode() == 2) {
return;
}

Expand Down Expand Up @@ -1670,7 +1670,7 @@ public void animateExpandSettingsPanel() {
}
// don't allow expanding via e.g. service call while status bar is hidden
// due to expanded desktop
if (mExpandedDesktopState == 2) {
if (getExpandedDesktopMode() == 2) {
return;
}

Expand Down Expand Up @@ -2238,13 +2238,13 @@ public void topAppWindowChanged(boolean showMenu) {
// hide pie triggers when keyguard is visible
try {
if (mWindowManagerService.isKeyguardLocked()) {
updatePieTriggerMask(Position.BOTTOM.FLAG
| Position.TOP.FLAG);
updatePieTriggerMask(PiePosition.BOTTOM.FLAG
| PiePosition.TOP.FLAG);
} else {
updatePieTriggerMask(Position.LEFT.FLAG
| Position.BOTTOM.FLAG
| Position.RIGHT.FLAG
| Position.TOP.FLAG);
updatePieTriggerMask(PiePosition.LEFT.FLAG
| PiePosition.BOTTOM.FLAG
| PiePosition.RIGHT.FLAG
| PiePosition.TOP.FLAG);
}
} catch (RemoteException e) {
// nothing else to do ...
Expand Down
Expand Up @@ -26,8 +26,9 @@
import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;

import com.android.internal.util.pie.PiePosition;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.PieController.Position;

public class PhoneStatusBarView extends PanelBar {
private static final String TAG = "PhoneStatusBarView";
Expand Down Expand Up @@ -167,10 +168,10 @@ public void onAllPanelsCollapsed() {
mLastFullyOpenedPanel = null;

// show up you pie controls
mBar.updatePieTriggerMask(Position.LEFT.FLAG
| Position.TOP.FLAG
| Position.RIGHT.FLAG
| Position.TOP.FLAG);
mBar.updatePieTriggerMask(PiePosition.LEFT.FLAG
| PiePosition.TOP.FLAG
| PiePosition.RIGHT.FLAG
| PiePosition.TOP.FLAG);
}

@Override
Expand All @@ -182,9 +183,9 @@ public void onPanelFullyOpened(PanelView openPanel) {

// back off you pie controls!
if (mShouldFade) {
mBar.updatePieTriggerMask(Position.LEFT.FLAG
| Position.RIGHT.FLAG
| Position.TOP.FLAG);
mBar.updatePieTriggerMask(PiePosition.LEFT.FLAG
| PiePosition.RIGHT.FLAG
| PiePosition.TOP.FLAG);
}

mFadingPanel = openPanel;
Expand Down
Expand Up @@ -28,19 +28,19 @@
import android.view.View;
import android.widget.ImageView;

import com.android.internal.util.pie.PiePosition;
import com.android.systemui.R;
import com.android.systemui.statusbar.pie.PieLayout.PieDrawable;
import com.android.systemui.statusbar.policy.PieController.Position;
import com.android.systemui.statusbar.pie.PieView.PieDrawable;

/**
* A clickable pie menu item.
* <p>
* This is the actual end point for user interaction.<br>
* ( == This is what a user clicks on.)
*/
public class PieItem extends PieLayout.PieDrawable {
public class PieItem extends PieView.PieDrawable {

private PieLayout mPieLayout;
private PieView mPieLayout;

private Paint mBackgroundPaint = new Paint();
private Paint mSelectedPaint = new Paint();
Expand Down Expand Up @@ -87,7 +87,7 @@ public interface PieOnLongClickListener {
*/
public final static int CAN_LONG_PRESS = 0x400;

public PieItem(Context context, PieLayout parent, int flags, int width, Object tag, View view) {
public PieItem(Context context, PieView parent, int flags, int width, Object tag, View view) {
mView = view;
mPieLayout = parent;
this.tag = tag;
Expand Down Expand Up @@ -129,9 +129,9 @@ public void setOnLongClickListener(PieOnLongClickListener onLongClickListener) {

public void show(boolean show) {
if (show) {
flags |= PieLayout.PieDrawable.VISIBLE;
flags |= PieView.PieDrawable.VISIBLE;
} else {
flags &= ~PieLayout.PieDrawable.VISIBLE;
flags &= ~PieView.PieDrawable.VISIBLE;
}
}

Expand Down Expand Up @@ -168,7 +168,7 @@ public void setColor(int color) {
}

@Override
public void prepare(Position position, float scale) {
public void prepare(PiePosition position, float scale) {
mPath = getOutline(scale);
if (mView != null) {
mView.measure(mView.getLayoutParams().width, mView.getLayoutParams().height);
Expand All @@ -188,7 +188,7 @@ public void prepare(Position position, float scale) {
}

@Override
public void draw(Canvas canvas, Position position) {
public void draw(Canvas canvas, PiePosition position) {
if ((flags & SELECTED) != 0) {
Paint paint = (flags & LONG_PRESSED) == 0
? mSelectedPaint : mLongPressPaint;
Expand All @@ -202,7 +202,7 @@ public void draw(Canvas canvas, Position position) {
int state = canvas.save();
canvas.translate(mView.getLeft(), mView.getTop());
// keep icons "upright" if we get displayed on TOP position
if (position != Position.TOP) {
if (position != PiePosition.TOP) {
canvas.rotate(mStart + mSweep / 2 - 270);
} else {
canvas.rotate(mStart + mSweep / 2 - 90);
Expand Down
Expand Up @@ -18,28 +18,28 @@
import android.graphics.Canvas;
import android.util.Slog;

import com.android.systemui.statusbar.pie.PieLayout.PieDrawable;
import com.android.systemui.statusbar.policy.PieController.Position;
import com.android.internal.util.pie.PiePosition;
import com.android.systemui.statusbar.pie.PieView.PieDrawable;

import java.util.ArrayList;
import java.util.List;

/**
* A generic container for {@link PieItems}.
*/
public class PieSliceContainer extends PieLayout.PieSlice {
public class PieSliceContainer extends PieView.PieSlice {

protected PieLayout mPieLayout;
protected PieView mPieLayout;
private List<PieItem> mItems = new ArrayList<PieItem>();

public PieSliceContainer(PieLayout parent, int initialFlags) {
public PieSliceContainer(PieView parent, int initialFlags) {
mPieLayout = parent;

flags = initialFlags | PieLayout.PieDrawable.VISIBLE;
flags = initialFlags | PieView.PieDrawable.VISIBLE;
}

@Override
public void prepare(Position position, float scale) {
public void prepare(PiePosition position, float scale) {
if (hasItems()) {
int totalWidth = 0;
for (PieItem item : mItems) {
Expand All @@ -55,11 +55,11 @@ public void prepare(Position position, float scale) {

float gapMinder = ((totalWidth * GAP * 2.0f) / (mOuter + mInner));
float deltaSweep = mSweep / totalWidth;
int width = position != Position.TOP ? 0 : totalWidth;
int width = position != PiePosition.TOP ? 0 : totalWidth;

int viewMask = PieDrawable.VISIBLE | position.FLAG;

boolean top = position == Position.TOP;
boolean top = position == PiePosition.TOP;
for (PieItem item : mItems) {
if ((item.flags & viewMask) == viewMask) {
if (top) width -= item.width;
Expand All @@ -68,8 +68,8 @@ public void prepare(Position position, float scale) {
item.width * deltaSweep, mInner, mOuter);
item.setGap(deltaSweep * gapMinder);

if (PieLayout.DEBUG) {
Slog.d(PieLayout.TAG, "Layout " + item.tag + " : ("
if (PieView.DEBUG) {
Slog.d(PieView.TAG, "Layout " + item.tag + " : ("
+ (mStart + deltaSweep * width) + ","
+ (item.width * deltaSweep) + ")");
}
Expand All @@ -81,7 +81,7 @@ public void prepare(Position position, float scale) {
}

@Override
public void draw(Canvas canvas, Position gravity) {
public void draw(Canvas canvas, PiePosition gravity) {
}

@Override
Expand Down
Expand Up @@ -30,10 +30,9 @@
import android.text.TextUtils;
import android.text.format.DateFormat;

import com.android.internal.util.pie.PiePosition;
import com.android.systemui.R;
import com.android.systemui.statusbar.pie.PieLayout.PieDrawable;
import com.android.systemui.statusbar.policy.PieController;
import com.android.systemui.statusbar.policy.PieController.Position;

import java.text.SimpleDateFormat;
import java.util.Date;
Expand Down Expand Up @@ -66,7 +65,7 @@ public class PieSysInfo extends PieSliceContainer implements ValueAnimator.Anima
private String mTimeFormatString;
private SimpleDateFormat mTimeFormat;

public PieSysInfo(Context context, PieLayout parent,
public PieSysInfo(Context context, PieView parent,
PieController controller, int initialFlags) {
super(parent, initialFlags);
mController = controller;
Expand All @@ -84,7 +83,7 @@ public PieSysInfo(Context context, PieLayout parent,
}

@Override
public void prepare(Position position, float scale) {
public void prepare(PiePosition position, float scale) {

// We are updating data later when we starting to get visible.
// This does not save work on the main thread, but for fast gestures
Expand All @@ -97,8 +96,6 @@ public void prepare(Position position, float scale) {
mInfoPaint.setAlpha(0);

final Resources res = mContext.getResources();
final RectF innerBB = new RectF(-mInner * scale, -mInner * scale,
mInner * scale, mInner * scale);
int textsize = res.getDimensionPixelSize(R.dimen.pie_textsize);

mInfoPaint.setTextSize(textsize * scale);
Expand All @@ -120,7 +117,7 @@ public void prepare(Position position, float scale) {
}

@Override
public void draw(Canvas canvas, Position position) {
public void draw(Canvas canvas, PiePosition position) {
// as long as there is no new data, we don't need to draw anything.
if (mStaleData) {
return;
Expand Down

0 comments on commit d4bb3bc

Please sign in to comment.