react-native-navigation的迁移库

Options.java 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package com.reactnativenavigation.parse;
  2. import android.support.annotation.CheckResult;
  3. import android.support.annotation.NonNull;
  4. import com.reactnativenavigation.parse.params.NullNumber;
  5. import com.reactnativenavigation.parse.params.NullText;
  6. import com.reactnativenavigation.utils.TypefaceLoader;
  7. import org.json.JSONObject;
  8. public class Options {
  9. @NonNull
  10. public static Options parse(TypefaceLoader typefaceManager, JSONObject json) {
  11. Options result = new Options();
  12. if (json == null) return result;
  13. result.topBar = TopBarOptions.parse(typefaceManager, json.optJSONObject("topBar"));
  14. result.topTabs = TopTabsOptions.parse(json.optJSONObject("topTabs"));
  15. result.topTabOptions = TopTabOptions.parse(typefaceManager, json.optJSONObject("topTab"));
  16. result.bottomTabOptions = BottomTabOptions.parse(typefaceManager, json.optJSONObject("bottomTab"));
  17. result.bottomTabsOptions = BottomTabsOptions.parse(json.optJSONObject("bottomTabs"));
  18. result.overlayOptions = OverlayOptions.parse(json.optJSONObject("overlay"));
  19. result.fabOptions = FabOptions.parse(json.optJSONObject("fab"));
  20. result.sideMenuRootOptions = SideMenuRootOptions.parse(json.optJSONObject("sideMenu"));
  21. result.animations = AnimationsOptions.parse(json.optJSONObject("animations"));
  22. result.modal = ModalOptions.parse(json);
  23. result.statusBar = StatusBarOptions.parse(json.optJSONObject("statusBar"));
  24. result.layout = LayoutOptions.parse(json.optJSONObject("layout"));
  25. return result;
  26. }
  27. @NonNull public TopBarOptions topBar = new TopBarOptions();
  28. @NonNull public TopTabsOptions topTabs = new TopTabsOptions();
  29. @NonNull public TopTabOptions topTabOptions = new TopTabOptions();
  30. @NonNull public BottomTabOptions bottomTabOptions = new BottomTabOptions();
  31. @NonNull public BottomTabsOptions bottomTabsOptions = new BottomTabsOptions();
  32. @NonNull public OverlayOptions overlayOptions = new OverlayOptions();
  33. @NonNull public FabOptions fabOptions = new FabOptions();
  34. @NonNull public AnimationsOptions animations = new AnimationsOptions();
  35. @NonNull public SideMenuRootOptions sideMenuRootOptions = new SideMenuRootOptions();
  36. @NonNull public ModalOptions modal = new ModalOptions();
  37. @NonNull public StatusBarOptions statusBar = new StatusBarOptions();
  38. @NonNull public LayoutOptions layout = new LayoutOptions();
  39. void setTopTabIndex(int i) {
  40. topTabOptions.tabIndex = i;
  41. }
  42. @CheckResult
  43. public Options copy() {
  44. Options result = new Options();
  45. result.topBar.mergeWith(topBar);
  46. result.topTabs.mergeWith(topTabs);
  47. result.topTabOptions.mergeWith(topTabOptions);
  48. result.bottomTabOptions.mergeWith(bottomTabOptions);
  49. result.bottomTabsOptions.mergeWith(bottomTabsOptions);
  50. result.overlayOptions = overlayOptions;
  51. result.fabOptions.mergeWith(fabOptions);
  52. result.sideMenuRootOptions.mergeWith(sideMenuRootOptions);
  53. result.animations.mergeWith(animations);
  54. result.modal.mergeWith(modal);
  55. result.statusBar.mergeWith(statusBar);
  56. result.layout.mergeWith(layout);
  57. return result;
  58. }
  59. @CheckResult
  60. public Options mergeWith(final Options other) {
  61. Options result = copy();
  62. result.topBar.mergeWith(other.topBar);
  63. result.topTabs.mergeWith(other.topTabs);
  64. result.topTabOptions.mergeWith(other.topTabOptions);
  65. result.bottomTabOptions.mergeWith(other.bottomTabOptions);
  66. result.bottomTabsOptions.mergeWith(other.bottomTabsOptions);
  67. result.fabOptions.mergeWith(other.fabOptions);
  68. result.animations.mergeWith(other.animations);
  69. result.sideMenuRootOptions.mergeWith(other.sideMenuRootOptions);
  70. result.modal.mergeWith(other.modal);
  71. result.statusBar.mergeWith(other.statusBar);
  72. result.layout.mergeWith(other.layout);
  73. return result;
  74. }
  75. public Options withDefaultOptions(final Options defaultOptions) {
  76. topBar.mergeWithDefault(defaultOptions.topBar);
  77. topTabOptions.mergeWithDefault(defaultOptions.topTabOptions);
  78. topTabs.mergeWithDefault(defaultOptions.topTabs);
  79. bottomTabOptions.mergeWithDefault(defaultOptions.bottomTabOptions);
  80. bottomTabsOptions.mergeWithDefault(defaultOptions.bottomTabsOptions);
  81. fabOptions.mergeWithDefault(defaultOptions.fabOptions);
  82. animations.mergeWithDefault(defaultOptions.animations);
  83. sideMenuRootOptions.mergeWithDefault(defaultOptions.sideMenuRootOptions);
  84. modal.mergeWithDefault(defaultOptions.modal);
  85. statusBar.mergeWithDefault(defaultOptions.statusBar);
  86. layout.mergeWithDefault(defaultOptions.layout);
  87. return this;
  88. }
  89. public Options clearTopBarOptions() {
  90. topBar = new TopBarOptions();
  91. return this;
  92. }
  93. public Options clearBottomTabsOptions() {
  94. bottomTabsOptions = new BottomTabsOptions();
  95. return this;
  96. }
  97. public Options clearTopTabOptions() {
  98. topTabOptions = new TopTabOptions();
  99. return this;
  100. }
  101. public Options clearTopTabsOptions() {
  102. topTabs = new TopTabsOptions();
  103. return this;
  104. }
  105. public Options clearBottomTabOptions() {
  106. bottomTabOptions = new BottomTabOptions();
  107. return this;
  108. }
  109. public Options clearSideMenuOptions() {
  110. sideMenuRootOptions = new SideMenuRootOptions();
  111. return this;
  112. }
  113. public Options clearAnimationOptions() {
  114. animations = new AnimationsOptions();
  115. return this;
  116. }
  117. public Options clearFabOptions() {
  118. fabOptions = new FabOptions();
  119. return this;
  120. }
  121. public Options clearOneTimeOptions() {
  122. bottomTabsOptions.currentTabId = new NullText();
  123. bottomTabsOptions.currentTabIndex = new NullNumber();
  124. return this;
  125. }
  126. }