mirror of https://github.com/YTVanced/VancedMicroG
Add plurals support for conditions
This commit is contained in:
parent
cddf2972bc
commit
7d20dc982c
|
@ -19,6 +19,7 @@ package org.microg.tools.ui;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.support.annotation.DrawableRes;
|
import android.support.annotation.DrawableRes;
|
||||||
|
import android.support.annotation.PluralsRes;
|
||||||
import android.support.annotation.StringRes;
|
import android.support.annotation.StringRes;
|
||||||
import android.support.v4.content.res.ResourcesCompat;
|
import android.support.v4.content.res.ResourcesCompat;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -35,19 +36,27 @@ public class Condition {
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
private final int titleRes;
|
private final int titleRes;
|
||||||
|
@PluralsRes
|
||||||
|
private final int titlePluralsRes;
|
||||||
private final CharSequence title;
|
private final CharSequence title;
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
private final int summaryRes;
|
private final int summaryRes;
|
||||||
|
@PluralsRes
|
||||||
|
private final int summaryPluralsRes;
|
||||||
private final CharSequence summary;
|
private final CharSequence summary;
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
private final int firstActionTextRes;
|
private final int firstActionTextRes;
|
||||||
|
@PluralsRes
|
||||||
|
private final int firstActionPluralsRes;
|
||||||
private final CharSequence firstActionText;
|
private final CharSequence firstActionText;
|
||||||
private final View.OnClickListener firstActionListener;
|
private final View.OnClickListener firstActionListener;
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
private final int secondActionTextRes;
|
private final int secondActionTextRes;
|
||||||
|
@PluralsRes
|
||||||
|
private final int secondActionPluralsRes;
|
||||||
private final CharSequence secondActionText;
|
private final CharSequence secondActionText;
|
||||||
private final View.OnClickListener secondActionListener;
|
private final View.OnClickListener secondActionListener;
|
||||||
|
|
||||||
|
@ -55,6 +64,7 @@ public class Condition {
|
||||||
|
|
||||||
private boolean evaluated = false;
|
private boolean evaluated = false;
|
||||||
private boolean evaluating = false;
|
private boolean evaluating = false;
|
||||||
|
private int evaluatedPlurals = -1;
|
||||||
private boolean active;
|
private boolean active;
|
||||||
|
|
||||||
Condition(Builder builder) {
|
Condition(Builder builder) {
|
||||||
|
@ -71,6 +81,10 @@ public class Condition {
|
||||||
secondActionTextRes = builder.secondActionTextRes;
|
secondActionTextRes = builder.secondActionTextRes;
|
||||||
titleRes = builder.titleRes;
|
titleRes = builder.titleRes;
|
||||||
evaluation = builder.evaluation;
|
evaluation = builder.evaluation;
|
||||||
|
titlePluralsRes = builder.titlePluralsRes;
|
||||||
|
summaryPluralsRes = builder.summaryPluralsRes;
|
||||||
|
firstActionPluralsRes = builder.firstActionPluralsRes;
|
||||||
|
secondActionPluralsRes = builder.secondActionPluralsRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
View createView(final Context context, ViewGroup container) {
|
View createView(final Context context, ViewGroup container) {
|
||||||
|
@ -122,6 +136,9 @@ public class Condition {
|
||||||
if (titleRes != 0) {
|
if (titleRes != 0) {
|
||||||
return context.getString(titleRes);
|
return context.getString(titleRes);
|
||||||
}
|
}
|
||||||
|
if (titlePluralsRes != 0) {
|
||||||
|
return context.getResources().getQuantityString(titlePluralsRes, evaluatedPlurals);
|
||||||
|
}
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,6 +146,9 @@ public class Condition {
|
||||||
if (summaryRes != 0) {
|
if (summaryRes != 0) {
|
||||||
return context.getString(summaryRes);
|
return context.getString(summaryRes);
|
||||||
}
|
}
|
||||||
|
if (summaryPluralsRes != 0) {
|
||||||
|
return context.getResources().getQuantityString(summaryPluralsRes, evaluatedPlurals);
|
||||||
|
}
|
||||||
return summary;
|
return summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,6 +160,9 @@ public class Condition {
|
||||||
if (firstActionTextRes != 0) {
|
if (firstActionTextRes != 0) {
|
||||||
return context.getString(firstActionTextRes);
|
return context.getString(firstActionTextRes);
|
||||||
}
|
}
|
||||||
|
if (firstActionPluralsRes != 0) {
|
||||||
|
return context.getResources().getQuantityString(firstActionPluralsRes, evaluatedPlurals);
|
||||||
|
}
|
||||||
return firstActionText;
|
return firstActionText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,6 +174,9 @@ public class Condition {
|
||||||
if (secondActionTextRes != 0) {
|
if (secondActionTextRes != 0) {
|
||||||
return context.getString(secondActionTextRes);
|
return context.getString(secondActionTextRes);
|
||||||
}
|
}
|
||||||
|
if (secondActionPluralsRes != 0) {
|
||||||
|
return context.getResources().getQuantityString(secondActionPluralsRes, evaluatedPlurals);
|
||||||
|
}
|
||||||
return secondActionText;
|
return secondActionText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,6 +194,7 @@ public class Condition {
|
||||||
|
|
||||||
public synchronized void evaluate(Context context) {
|
public synchronized void evaluate(Context context) {
|
||||||
active = evaluation == null || evaluation.isActive(context);
|
active = evaluation == null || evaluation.isActive(context);
|
||||||
|
evaluatedPlurals = evaluation.getPluralsCount();
|
||||||
evaluated = true;
|
evaluated = true;
|
||||||
evaluating = false;
|
evaluating = false;
|
||||||
}
|
}
|
||||||
|
@ -181,8 +208,12 @@ public class Condition {
|
||||||
this.evaluated = false;
|
this.evaluated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface Evaluation {
|
public static abstract class Evaluation {
|
||||||
boolean isActive(Context context);
|
public abstract boolean isActive(Context context);
|
||||||
|
|
||||||
|
public int getPluralsCount() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
|
@ -192,16 +223,24 @@ public class Condition {
|
||||||
private Drawable icon;
|
private Drawable icon;
|
||||||
@StringRes
|
@StringRes
|
||||||
private int titleRes;
|
private int titleRes;
|
||||||
|
@PluralsRes
|
||||||
|
private int titlePluralsRes;
|
||||||
private CharSequence title;
|
private CharSequence title;
|
||||||
@StringRes
|
@StringRes
|
||||||
private int summaryRes;
|
private int summaryRes;
|
||||||
|
@PluralsRes
|
||||||
|
private int summaryPluralsRes;
|
||||||
private CharSequence summary;
|
private CharSequence summary;
|
||||||
@StringRes
|
@StringRes
|
||||||
private int firstActionTextRes;
|
private int firstActionTextRes;
|
||||||
|
@PluralsRes
|
||||||
|
private int firstActionPluralsRes;
|
||||||
private CharSequence firstActionText;
|
private CharSequence firstActionText;
|
||||||
private View.OnClickListener firstActionListener;
|
private View.OnClickListener firstActionListener;
|
||||||
@StringRes
|
@StringRes
|
||||||
private int secondActionTextRes;
|
private int secondActionTextRes;
|
||||||
|
@PluralsRes
|
||||||
|
private int secondActionPluralsRes;
|
||||||
private CharSequence secondActionText;
|
private CharSequence secondActionText;
|
||||||
private View.OnClickListener secondActionListener;
|
private View.OnClickListener secondActionListener;
|
||||||
private Evaluation evaluation;
|
private Evaluation evaluation;
|
||||||
|
@ -230,6 +269,11 @@ public class Condition {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder titlePlurals(@PluralsRes int val) {
|
||||||
|
titlePluralsRes = val;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder summary(CharSequence val) {
|
public Builder summary(CharSequence val) {
|
||||||
summary = val;
|
summary = val;
|
||||||
return this;
|
return this;
|
||||||
|
@ -240,6 +284,11 @@ public class Condition {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder summaryPlurals(@PluralsRes int val) {
|
||||||
|
summaryPluralsRes = val;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder firstAction(CharSequence text, View.OnClickListener listener) {
|
public Builder firstAction(CharSequence text, View.OnClickListener listener) {
|
||||||
firstActionText = text;
|
firstActionText = text;
|
||||||
firstActionListener = listener;
|
firstActionListener = listener;
|
||||||
|
@ -252,6 +301,12 @@ public class Condition {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder firstActionPlurals(@PluralsRes int val, View.OnClickListener listener) {
|
||||||
|
firstActionPluralsRes = val;
|
||||||
|
firstActionListener = listener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder secondAction(CharSequence text, View.OnClickListener listener) {
|
public Builder secondAction(CharSequence text, View.OnClickListener listener) {
|
||||||
secondActionText = text;
|
secondActionText = text;
|
||||||
secondActionListener = listener;
|
secondActionListener = listener;
|
||||||
|
@ -264,6 +319,12 @@ public class Condition {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder secondActionPlurals(@PluralsRes int val, View.OnClickListener listener) {
|
||||||
|
secondActionPluralsRes = val;
|
||||||
|
secondActionListener = listener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder evaluation(Evaluation evaluation) {
|
public Builder evaluation(Evaluation evaluation) {
|
||||||
this.evaluation = evaluation;
|
this.evaluation = evaluation;
|
||||||
return this;
|
return this;
|
||||||
|
|
Loading…
Reference in New Issue