-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathOptions.java
More file actions
157 lines (135 loc) · 6.65 KB
/
Options.java
File metadata and controls
157 lines (135 loc) · 6.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.reactnativenavigation.options;
import android.content.Context;
import com.reactnativenavigation.options.layout.LayoutOptions;
import com.reactnativenavigation.options.params.NullNumber;
import com.reactnativenavigation.options.params.NullText;
import com.reactnativenavigation.options.parsers.TypefaceLoader;
import org.json.JSONObject;
import androidx.annotation.CheckResult;
import androidx.annotation.NonNull;
public class Options {
public static final Options EMPTY = new Options();
@NonNull
public static Options parse(@NonNull Context context, TypefaceLoader typefaceManager, JSONObject json) {
Options result = new Options();
if (json == null) return result;
result.topBar = TopBarOptions.parse(context, typefaceManager, json.optJSONObject("topBar"));
result.topTabs = TopTabsOptions.parse(context, json.optJSONObject("topTabs"));
result.topTabOptions = TopTabOptions.parse(typefaceManager, json.optJSONObject("topTab"));
result.bottomTabOptions = BottomTabOptions.parse(context, typefaceManager, json.optJSONObject("bottomTab"));
result.bottomTabsOptions = BottomTabsOptions.parse(context, json.optJSONObject("bottomTabs"));
result.overlayOptions = OverlayOptions.parse(json.optJSONObject("overlay"));
result.fabOptions = FabOptions.parse(context, json.optJSONObject("fab"));
result.sideMenuRootOptions = SideMenuRootOptions.parse(json.optJSONObject("sideMenu"));
result.animations = AnimationsOptions.parse(json.optJSONObject("animations"));
result.modal = ModalOptions.parse(json);
result.navigationBar = NavigationBarOptions.parse(context, json.optJSONObject("navigationBar"));
result.statusBar = StatusBarOptions.parse(context, json.optJSONObject("statusBar"));
result.layout = LayoutOptions.parse(context, json.optJSONObject("layout"));
result.hardwareBack = new HardwareBackButtonOptions(json.optJSONObject("hardwareBackButton"));
return result;
}
@NonNull public TopBarOptions topBar = new TopBarOptions();
@NonNull public TopTabsOptions topTabs = new TopTabsOptions();
@NonNull public TopTabOptions topTabOptions = new TopTabOptions();
@NonNull public BottomTabOptions bottomTabOptions = new BottomTabOptions();
@NonNull public BottomTabsOptions bottomTabsOptions = new BottomTabsOptions();
@NonNull public OverlayOptions overlayOptions = new OverlayOptions();
@NonNull public FabOptions fabOptions = new FabOptions();
@NonNull public AnimationsOptions animations = new AnimationsOptions();
@NonNull public SideMenuRootOptions sideMenuRootOptions = new SideMenuRootOptions();
@NonNull public ModalOptions modal = new ModalOptions();
@NonNull public NavigationBarOptions navigationBar = new NavigationBarOptions();
@NonNull public StatusBarOptions statusBar = new StatusBarOptions();
@NonNull public LayoutOptions layout = new LayoutOptions();
@NonNull public HardwareBackButtonOptions hardwareBack = new HardwareBackButtonOptions();
void setTopTabIndex(int i) {
topTabOptions.tabIndex = i;
}
@CheckResult
public Options copy() {
Options result = new Options();
result.topBar.mergeWith(topBar);
result.topTabs.mergeWith(topTabs);
result.topTabOptions.mergeWith(topTabOptions);
result.bottomTabOptions.mergeWith(bottomTabOptions);
result.bottomTabsOptions.mergeWith(bottomTabsOptions);
result.overlayOptions = overlayOptions;
result.fabOptions.mergeWith(fabOptions);
result.sideMenuRootOptions.mergeWith(sideMenuRootOptions);
result.animations.mergeWith(animations);
result.modal.mergeWith(modal);
result.navigationBar.mergeWith(navigationBar);
result.statusBar.mergeWith(statusBar);
result.layout.mergeWith(layout);
result.hardwareBack.mergeWith(hardwareBack);
return result;
}
@CheckResult
public Options mergeWith(final Options other) {
Options result = copy();
result.topBar.mergeWith(other.topBar);
result.topTabs.mergeWith(other.topTabs);
result.topTabOptions.mergeWith(other.topTabOptions);
result.bottomTabOptions.mergeWith(other.bottomTabOptions);
result.bottomTabsOptions.mergeWith(other.bottomTabsOptions);
result.fabOptions.mergeWith(other.fabOptions);
result.animations.mergeWith(other.animations);
result.sideMenuRootOptions.mergeWith(other.sideMenuRootOptions);
result.modal.mergeWith(other.modal);
result.navigationBar.mergeWith(other.navigationBar);
result.statusBar.mergeWith(other.statusBar);
result.layout.mergeWith(other.layout);
result.hardwareBack.mergeWith(other.hardwareBack);
return result;
}
public Options withDefaultOptions(final Options defaultOptions) {
topBar.mergeWithDefault(defaultOptions.topBar);
topTabOptions.mergeWithDefault(defaultOptions.topTabOptions);
topTabs.mergeWithDefault(defaultOptions.topTabs);
bottomTabOptions.mergeWithDefault(defaultOptions.bottomTabOptions);
bottomTabsOptions.mergeWithDefault(defaultOptions.bottomTabsOptions);
fabOptions.mergeWithDefault(defaultOptions.fabOptions);
animations.mergeWithDefault(defaultOptions.animations);
sideMenuRootOptions.mergeWithDefault(defaultOptions.sideMenuRootOptions);
modal.mergeWithDefault(defaultOptions.modal);
navigationBar.mergeWithDefault(defaultOptions.navigationBar);
statusBar.mergeWithDefault(defaultOptions.statusBar);
layout.mergeWithDefault(defaultOptions.layout);
hardwareBack.mergeWithDefault(defaultOptions.hardwareBack);
return this;
}
public Options clearTopBarOptions() {
topBar = new TopBarOptions();
return this;
}
public Options clearBottomTabsOptions() {
bottomTabsOptions = new BottomTabsOptions();
return this;
}
public Options clearTopTabOptions() {
topTabOptions = new TopTabOptions();
return this;
}
public Options clearTopTabsOptions() {
topTabs = new TopTabsOptions();
return this;
}
public Options clearBottomTabOptions() {
bottomTabOptions = new BottomTabOptions();
return this;
}
public Options clearAnimationOptions() {
animations = new AnimationsOptions();
return this;
}
public Options clearFabOptions() {
fabOptions = new FabOptions();
return this;
}
public Options clearOneTimeOptions() {
bottomTabsOptions.currentTabId = new NullText();
bottomTabsOptions.currentTabIndex = new NullNumber();
return this;
}
}