am 17ca1aaf: Merge "Zen: Fix selection logic for "Indefinitely"." into lmp-mr1-dev

* commit '17ca1aaf72ac5d48d33517331b6d772c1a158bfd':
  Zen: Fix selection logic for "Indefinitely".
This commit is contained in:
John Spurlock
2014-12-22 22:01:27 +00:00
committed by Android Git Automerger

View File

@@ -90,6 +90,7 @@ public class ZenModePanel extends LinearLayout {
private final boolean mCountdownConditionSupported; private final boolean mCountdownConditionSupported;
private final int mFirstConditionIndex; private final int mFirstConditionIndex;
private final TransitionHelper mTransitionHelper = new TransitionHelper(); private final TransitionHelper mTransitionHelper = new TransitionHelper();
private final Uri mForeverId;
private String mTag = TAG + "/" + Integer.toHexString(System.identityHashCode(this)); private String mTag = TAG + "/" + Integer.toHexString(System.identityHashCode(this));
@@ -134,6 +135,7 @@ public class ZenModePanel extends LinearLayout {
mMaxConditions = MathUtils.constrain(res.getInteger(R.integer.zen_mode_max_conditions), mMaxConditions = MathUtils.constrain(res.getInteger(R.integer.zen_mode_max_conditions),
minConditions, 100); minConditions, 100);
mMaxOptionalConditions = mMaxConditions - minConditions; mMaxOptionalConditions = mMaxConditions - minConditions;
mForeverId = Condition.newId(mContext).appendPath("forever").build();
if (DEBUG) Log.d(mTag, "new ZenModePanel"); if (DEBUG) Log.d(mTag, "new ZenModePanel");
} }
@@ -338,12 +340,11 @@ public class ZenModePanel extends LinearLayout {
} }
private void refreshExitConditionText() { private void refreshExitConditionText() {
final String forever = mContext.getString(com.android.internal.R.string.zen_mode_forever);
if (mExitCondition == null) { if (mExitCondition == null) {
mExitConditionText = forever; mExitConditionText = foreverSummary();
} else if (isCountdown(mExitCondition)) { } else if (isCountdown(mExitCondition)) {
final Condition condition = parseExistingTimeCondition(mExitCondition); final Condition condition = parseExistingTimeCondition(mExitCondition);
mExitConditionText = condition != null ? condition.summary : forever; mExitConditionText = condition != null ? condition.summary : foreverSummary();
} else { } else {
mExitConditionText = mExitCondition.summary; mExitConditionText = mExitCondition.summary;
} }
@@ -473,9 +474,9 @@ public class ZenModePanel extends LinearLayout {
final int conditionCount = mConditions == null ? 0 : mConditions.length; final int conditionCount = mConditions == null ? 0 : mConditions.length;
if (DEBUG) Log.d(mTag, "handleUpdateConditions conditionCount=" + conditionCount); if (DEBUG) Log.d(mTag, "handleUpdateConditions conditionCount=" + conditionCount);
// forever // forever
bind(null, mZenConditions.getChildAt(FOREVER_CONDITION_INDEX)); bind(forever(), mZenConditions.getChildAt(FOREVER_CONDITION_INDEX));
// countdown // countdown
if (mCountdownConditionSupported) { if (mCountdownConditionSupported && mTimeCondition != null) {
bind(mTimeCondition, mZenConditions.getChildAt(COUNTDOWN_CONDITION_INDEX)); bind(mTimeCondition, mZenConditions.getChildAt(COUNTDOWN_CONDITION_INDEX));
} }
// provider conditions // provider conditions
@@ -483,7 +484,8 @@ public class ZenModePanel extends LinearLayout {
bind(mConditions[i], mZenConditions.getChildAt(mFirstConditionIndex + i)); bind(mConditions[i], mZenConditions.getChildAt(mFirstConditionIndex + i));
} }
// hide the rest // hide the rest
for (int i = mZenConditions.getChildCount() - 1; i > mFirstConditionIndex + conditionCount; i--) { for (int i = mZenConditions.getChildCount() - 1; i > mFirstConditionIndex + conditionCount;
i--) {
mZenConditions.getChildAt(i).setVisibility(GONE); mZenConditions.getChildAt(i).setVisibility(GONE);
} }
// ensure something is selected // ensure something is selected
@@ -492,6 +494,15 @@ public class ZenModePanel extends LinearLayout {
} }
} }
private Condition forever() {
return new Condition(mForeverId, foreverSummary(), "", "", 0 /*icon*/, Condition.STATE_TRUE,
0 /*flags*/);
}
private String foreverSummary() {
return mContext.getString(com.android.internal.R.string.zen_mode_forever);
}
private ConditionTag getConditionTagAt(int index) { private ConditionTag getConditionTagAt(int index) {
return (ConditionTag) mZenConditions.getChildAt(index).getTag(); return (ConditionTag) mZenConditions.getChildAt(index).getTag();
} }
@@ -556,8 +567,13 @@ public class ZenModePanel extends LinearLayout {
return c != null && ZenModeConfig.isValidCountdownConditionId(c.id); return c != null && ZenModeConfig.isValidCountdownConditionId(c.id);
} }
private boolean isForever(Condition c) {
return c != null && mForeverId.equals(c.id);
}
private void bind(final Condition condition, final View row) { private void bind(final Condition condition, final View row) {
final boolean enabled = condition == null || condition.state == Condition.STATE_TRUE; if (condition == null) throw new IllegalArgumentException("condition must not be null");
final boolean enabled = condition.state == Condition.STATE_TRUE;
final ConditionTag tag = final ConditionTag tag =
row.getTag() != null ? (ConditionTag) row.getTag() : new ConditionTag(); row.getTag() != null ? (ConditionTag) row.getTag() : new ConditionTag();
row.setTag(tag); row.setTag(tag);
@@ -604,14 +620,9 @@ public class ZenModePanel extends LinearLayout {
if (tag.line2 == null) { if (tag.line2 == null) {
tag.line2 = (TextView) row.findViewById(android.R.id.text2); tag.line2 = (TextView) row.findViewById(android.R.id.text2);
} }
final String line1, line2; final String line1 = !TextUtils.isEmpty(condition.line1) ? condition.line1
if (condition == null) { : condition.summary;
line1 = mContext.getString(com.android.internal.R.string.zen_mode_forever); final String line2 = condition.line2;
line2 = null;
} else {
line1 = !TextUtils.isEmpty(condition.line1) ? condition.line1 : condition.summary;
line2 = condition.line2;
}
tag.line1.setText(line1); tag.line1.setText(line1);
if (TextUtils.isEmpty(line2)) { if (TextUtils.isEmpty(line2)) {
tag.line2.setVisibility(GONE); tag.line2.setVisibility(GONE);
@@ -731,16 +742,17 @@ public class ZenModePanel extends LinearLayout {
private void select(final Condition condition) { private void select(final Condition condition) {
if (DEBUG) Log.d(mTag, "select " + condition); if (DEBUG) Log.d(mTag, "select " + condition);
final boolean isForever = isForever(condition);
if (mController != null) { if (mController != null) {
AsyncTask.execute(new Runnable() { AsyncTask.execute(new Runnable() {
@Override @Override
public void run() { public void run() {
mController.setExitCondition(condition); mController.setExitCondition(isForever ? null : condition);
} }
}); });
} }
setExitCondition(condition); setExitCondition(condition);
if (condition == null) { if (isForever) {
mPrefs.setMinuteIndex(-1); mPrefs.setMinuteIndex(-1);
} else if (isCountdown(condition) && mBucketIndex != -1) { } else if (isCountdown(condition) && mBucketIndex != -1) {
mPrefs.setMinuteIndex(mBucketIndex); mPrefs.setMinuteIndex(mBucketIndex);