diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/parse/TopBarOptions.java b/lib/android/app/src/main/java/com/reactnativenavigation/parse/TopBarOptions.java index 8b810f33df7..1e065e40172 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/parse/TopBarOptions.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/parse/TopBarOptions.java @@ -43,6 +43,9 @@ public static TopBarOptions parse(TypefaceLoader typefaceLoader, JSONObject json options.elevation = FractionParser.parse(json, "elevation"); options.buttons = TopBarButtons.parse(typefaceLoader, json); + options.rightButtonColor = ColorParser.parse(json, "rightButtonColor"); + options.leftButtonColor = ColorParser.parse(json, "leftButtonColor"); + options.validate(); return options; } @@ -61,6 +64,18 @@ public static TopBarOptions parse(TypefaceLoader typefaceLoader, JSONObject json public Fraction borderHeight = new NullFraction(); public Color borderColor = new NullColor(); + // Deprecated + public Color rightButtonColor = new NullColor(); + public Color leftButtonColor = new NullColor(); + public Color rightButtonDisabledColor = new NullColor(); + public Color leftButtonDisabledColor = new NullColor(); + + public TopBarOptions copy() { + TopBarOptions result = new TopBarOptions(); + result.mergeWith(this); + return result; + } + void mergeWith(final TopBarOptions other) { title.mergeWith(other.title); subtitle.mergeWith(other.subtitle); @@ -75,10 +90,16 @@ void mergeWith(final TopBarOptions other) { if (other.borderHeight.hasValue()) borderHeight = other.borderHeight; if (other.borderColor.hasValue()) borderColor = other.borderColor; if (other.elevation.hasValue()) elevation = other.elevation; + + if (other.rightButtonColor.hasValue()) rightButtonColor = other.rightButtonColor; + if (other.leftButtonColor.hasValue()) leftButtonColor = other.leftButtonColor; + if (other.rightButtonDisabledColor.hasValue()) rightButtonDisabledColor = other.rightButtonDisabledColor; + if (other.leftButtonDisabledColor.hasValue()) leftButtonDisabledColor = other.leftButtonDisabledColor; + validate(); } - void mergeWithDefault(TopBarOptions defaultOptions) { + public TopBarOptions mergeWithDefault(TopBarOptions defaultOptions) { title.mergeWithDefault(defaultOptions.title); subtitle.mergeWithDefault(defaultOptions.subtitle); background.mergeWithDefault(defaultOptions.background); @@ -92,7 +113,14 @@ void mergeWithDefault(TopBarOptions defaultOptions) { if (!borderHeight.hasValue()) borderHeight = defaultOptions.borderHeight; if (!borderColor.hasValue()) borderColor = defaultOptions.borderColor; if (!elevation.hasValue()) elevation = defaultOptions.elevation; + + if (!rightButtonColor.hasValue()) rightButtonColor = defaultOptions.rightButtonColor; + if (!leftButtonColor.hasValue()) leftButtonColor = defaultOptions.leftButtonColor; + if (!rightButtonDisabledColor.hasValue()) rightButtonDisabledColor = defaultOptions.rightButtonDisabledColor; + if (!leftButtonDisabledColor.hasValue()) leftButtonDisabledColor = defaultOptions.leftButtonDisabledColor; + validate(); + return this; } public void validate() { diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/parse/params/Button.java b/lib/android/app/src/main/java/com/reactnativenavigation/parse/params/Button.java index dddcc71aa46..7db847a4df1 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/parse/params/Button.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/parse/params/Button.java @@ -31,7 +31,7 @@ public class Button { public Text testId = new NullText(); public Component component = new Component(); - protected static Button parseJson(JSONObject json, TypefaceLoader typefaceManager) { + private static Button parseJson(JSONObject json, TypefaceLoader typefaceManager) { Button button = new Button(); button.id = json.optString("id"); button.text = TextParser.parse(json, "text"); @@ -78,6 +78,12 @@ private static ArrayList