123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package com.reactnativenavigation.parse;
-
-
- import android.util.Log;
-
- import com.reactnativenavigation.BuildConfig;
- import com.reactnativenavigation.parse.params.Bool;
- import com.reactnativenavigation.parse.params.Color;
- import com.reactnativenavigation.parse.params.Fraction;
- import com.reactnativenavigation.parse.params.NullBool;
- import com.reactnativenavigation.parse.params.NullColor;
- import com.reactnativenavigation.parse.params.NullFraction;
- import com.reactnativenavigation.parse.params.NullNumber;
- import com.reactnativenavigation.parse.params.NullText;
- import com.reactnativenavigation.parse.params.Number;
- import com.reactnativenavigation.parse.params.Text;
- import com.reactnativenavigation.parse.parsers.BoolParser;
- import com.reactnativenavigation.parse.parsers.ColorParser;
- import com.reactnativenavigation.parse.parsers.FractionParser;
- import com.reactnativenavigation.parse.parsers.NumberParser;
- import com.reactnativenavigation.parse.parsers.TextParser;
- import com.reactnativenavigation.utils.TypefaceLoader;
-
- import org.json.JSONObject;
-
- public class TopBarOptions {
-
- public static TopBarOptions parse(TypefaceLoader typefaceLoader, JSONObject json) {
- TopBarOptions options = new TopBarOptions();
- if (json == null) return options;
-
- options.title = TitleOptions.parse(typefaceLoader, json.optJSONObject("title"));
- options.subtitle = SubtitleOptions.parse(typefaceLoader, json.optJSONObject("subtitle"));
- options.background = TopBarBackgroundOptions.parse(json.optJSONObject("background"));
- options.visible = BoolParser.parse(json, "visible");
- options.animate = BoolParser.parse(json,"animate");
- options.hideOnScroll = BoolParser.parse(json,"hideOnScroll");
- options.drawBehind = BoolParser.parse(json,"drawBehind");
- options.testId = TextParser.parse(json, "testID");
- options.height = NumberParser.parse(json, "height");
- options.borderColor = ColorParser.parse(json, "borderColor");
- options.borderHeight = FractionParser.parse(json, "borderHeight");
- options.elevation = FractionParser.parse(json, "elevation");
- options.buttons = TopBarButtons.parse(typefaceLoader, json);
-
- options.validate();
- return options;
- }
-
- public TitleOptions title = new TitleOptions();
- public SubtitleOptions subtitle = new SubtitleOptions();
- public TopBarButtons buttons = new TopBarButtons();
- public Text testId = new NullText();
- public TopBarBackgroundOptions background = new TopBarBackgroundOptions();
- public Bool visible = new NullBool();
- public Bool animate = new NullBool();
- public Bool hideOnScroll = new NullBool();
- public Bool drawBehind = new NullBool();
- public Number height = new NullNumber();
- public Fraction elevation = new NullFraction();
- public Fraction borderHeight = new NullFraction();
- public Color borderColor = new NullColor();
-
- void mergeWith(final TopBarOptions other) {
- title.mergeWith(other.title);
- subtitle.mergeWith(other.subtitle);
- background.mergeWith(other.background);
- buttons.mergeWith(other.buttons);
- if (other.testId.hasValue()) testId = other.testId;
- if (other.visible.hasValue()) visible = other.visible;
- if (other.animate.hasValue()) animate = other.animate;
- if (other.hideOnScroll.hasValue()) hideOnScroll = other.hideOnScroll;
- if (other.drawBehind.hasValue()) drawBehind = other.drawBehind;
- if (other.height.hasValue()) height = other.height;
- if (other.borderHeight.hasValue()) borderHeight = other.borderHeight;
- if (other.borderColor.hasValue()) borderColor = other.borderColor;
- if (other.elevation.hasValue()) elevation = other.elevation;
- validate();
- }
-
- void mergeWithDefault(TopBarOptions defaultOptions) {
- title.mergeWithDefault(defaultOptions.title);
- subtitle.mergeWithDefault(defaultOptions.subtitle);
- background.mergeWithDefault(defaultOptions.background);
- buttons.mergeWithDefault(defaultOptions.buttons);
- if (!visible.hasValue()) visible = defaultOptions.visible;
- if (!animate.hasValue()) animate = defaultOptions.animate;
- if (!hideOnScroll.hasValue()) hideOnScroll = defaultOptions.hideOnScroll;
- if (!drawBehind.hasValue()) drawBehind = defaultOptions.drawBehind;
- if (!testId.hasValue()) testId = defaultOptions.testId;
- if (!height.hasValue()) height = defaultOptions.height;
- if (!borderHeight.hasValue()) borderHeight = defaultOptions.borderHeight;
- if (!borderColor.hasValue()) borderColor = defaultOptions.borderColor;
- if (!elevation.hasValue()) elevation = defaultOptions.elevation;
- validate();
- }
-
- private void validate() {
- if (title.component.hasValue() && (title.text.hasValue() || subtitle.text.hasValue())) {
- if (BuildConfig.DEBUG) Log.w("RNN", "A screen can't use both text and component - clearing text.");
- title.text = new NullText();
- subtitle.text = new NullText();
- }
- }
- }
|