Daniel Zlotin 8 years ago
parent
commit
d1e5e75f38

android/app/src/main/java/com/reactnativenavigation/bridge/parsers/BundleConverter.java → android/app/src/main/java/com/reactnativenavigation/bridge/BundleConverter.java View File

@@ -1,4 +1,4 @@
1
-package com.reactnativenavigation.bridge.parsers;
1
+package com.reactnativenavigation.bridge;
2 2
 
3 3
 import android.os.Bundle;
4 4
 

+ 0
- 1
android/app/src/main/java/com/reactnativenavigation/bridge/NavigationReactModule.java View File

@@ -8,7 +8,6 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule;
8 8
 import com.facebook.react.bridge.ReactMethod;
9 9
 import com.facebook.react.bridge.ReadableMap;
10 10
 import com.reactnativenavigation.NavigationApplication;
11
-import com.reactnativenavigation.bridge.parsers.BundleConverter;
12 11
 import com.reactnativenavigation.controllers.NavigationActivity;
13 12
 
14 13
 /**

+ 0
- 41
android/app/src/main/java/com/reactnativenavigation/bridge/parsers/ScreenParamsParser.java View File

@@ -1,41 +0,0 @@
1
-package com.reactnativenavigation.bridge.parsers;
2
-
3
-import android.os.Bundle;
4
-
5
-import com.reactnativenavigation.controllers.ScreenParams;
6
-
7
-public class ScreenParamsParser {
8
-    private static final String KEY_TITLE = "title";
9
-    private static final String KEY_SCREEN_ID = "screenId";
10
-    private static final String KEY_SCREEN_INSTANCE_ID = "screenInstanceID";
11
-    private static final String KEY_PROPS = "passProps";
12
-    private static final String KEY_LABEL = "tabLabel";
13
-    private static final String KEY_ICON = "tabIcon";
14
-    private static final String KEY_NAVIGATOR_BUTTONS = "navigatorButtons";
15
-    private static final String KEY_RIGHT_BUTTONS = "rightButtons";
16
-    private static final String KEY_TOOL_BAR_STYLE = "navigatorStyle";
17
-    private static final String KEY_STATUS_BAR_COLOR = "statusBarColor";
18
-    private static final String KEY_TOOL_BAR_COLOR = "navBarBackgroundColor";
19
-    private static final String KEY_TOOL_BAR_HIDDEN = "navBarHidden";
20
-    private static final String KEY_NAVIGATION_BAR_COLOR = "navigationBarColor";
21
-    private static final String KEY_NAV_BAR_BUTTON_COLOR = "navBarButtonColor";
22
-    private static final String KEY_NAV_BAR_TEXT_COLOR = "navBarTextColor";
23
-    private static final String KEY_BACK_BUTTON_HIDDEN = "backButtonHidden";
24
-    private static final String KEY_TAB_NORMAL_TEXT_COLOR = "tabNormalTextColor";
25
-    private static final String KEY_TAB_SELECTED_TEXT_COLOR = "tabSelectedTextColor";
26
-    private static final String KEY_TAB_INDICATOR_COLOR = "tabIndicatorColor";
27
-    private static final String KEY_BOTTOM_TABS_HIDDEN = "tabBarHidden";
28
-    private static final String KEY_BOTTOM_TABS_HIDDEN_ON_SCROLL = "bottomTabsHiddenOnScroll";
29
-
30
-    public ScreenParams parse(Bundle params) {
31
-        ScreenParams result = new ScreenParams();
32
-        result.screenId = params.getString(KEY_SCREEN_ID);
33
-        result.screenInstanceId = params.getString(KEY_SCREEN_INSTANCE_ID);
34
-        result.passProps = params.getBundle(KEY_PROPS);
35
-        result.buttons = null;
36
-        result.title = params.getString(KEY_TITLE);
37
-        result.styleParams = null;
38
-        return result;
39
-    }
40
-
41
-}

+ 0
- 15
android/app/src/main/java/com/reactnativenavigation/bridge/parsers/TitleBarButtonParamsParser.java View File

@@ -1,15 +0,0 @@
1
-package com.reactnativenavigation.bridge.parsers;
2
-
3
-import android.os.Bundle;
4
-
5
-import com.reactnativenavigation.views.TitleBarButton;
6
-
7
-import java.util.ArrayList;
8
-import java.util.List;
9
-
10
-public class TitleBarButtonParamsParser {
11
-    public List<TitleBarButton.Params> params(Bundle params) {
12
-        List<TitleBarButton.Params> result = new ArrayList<>();
13
-        return result;
14
-    }
15
-}

+ 3
- 1
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java View File

@@ -10,9 +10,11 @@ import com.facebook.react.ReactPackage;
10 10
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
11 11
 import com.facebook.react.shell.MainReactPackage;
12 12
 import com.reactnativenavigation.bridge.NavigationReactPackage;
13
-import com.reactnativenavigation.bridge.parsers.ActivityParamsParser;
13
+import com.reactnativenavigation.params.ActivityParams;
14
+import com.reactnativenavigation.params.parsers.ActivityParamsParser;
14 15
 import com.reactnativenavigation.layouts.Layout;
15 16
 import com.reactnativenavigation.layouts.ScreenLayout;
17
+import com.reactnativenavigation.params.ScreenParams;
16 18
 import com.reactnativenavigation.react.JsDevReloadHandler;
17 19
 import com.reactnativenavigation.react.NavigationReactInstance;
18 20
 import com.reactnativenavigation.react.RedboxPermission;

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenLayout.java View File

@@ -12,7 +12,7 @@ import android.widget.LinearLayout;
12 12
 
13 13
 import com.facebook.react.ReactInstanceManager;
14 14
 import com.reactnativenavigation.controllers.ScreenParams;
15
-import com.reactnativenavigation.controllers.ScreenStyleParams;
15
+import com.reactnativenavigation.params.ScreenStyleParams;
16 16
 import com.reactnativenavigation.utils.SdkSupports;
17 17
 import com.reactnativenavigation.views.ContentView;
18 18
 import com.reactnativenavigation.views.ScrollDirectionListener;

android/app/src/main/java/com/reactnativenavigation/controllers/ActivityParams.java → android/app/src/main/java/com/reactnativenavigation/params/ActivityParams.java View File

@@ -1,4 +1,4 @@
1
-package com.reactnativenavigation.controllers;
1
+package com.reactnativenavigation.params;
2 2
 
3 3
 public class ActivityParams {
4 4
     public ScreenParams screenParams;

android/app/src/main/java/com/reactnativenavigation/controllers/ScreenParams.java → android/app/src/main/java/com/reactnativenavigation/params/ScreenParams.java View File

@@ -1,16 +1,14 @@
1
-package com.reactnativenavigation.controllers;
1
+package com.reactnativenavigation.params;
2 2
 
3 3
 import android.os.Bundle;
4 4
 
5
-import com.reactnativenavigation.views.TitleBarButton;
6
-
7
-import java.util.ArrayList;
5
+import java.util.List;
8 6
 
9 7
 public class ScreenParams {
10 8
     public String screenId;
11 9
     public String screenInstanceId;
12 10
     public Bundle passProps;
13
-    public ArrayList<TitleBarButton.Params> buttons;
11
+    public List<TitleBarButtonParams> buttons;
14 12
     public String title;
15 13
     public ScreenStyleParams styleParams;
16 14
     //    public String tabLabel; TODO when tabs are supported move to TabParams

android/app/src/main/java/com/reactnativenavigation/controllers/ScreenStyleParams.java → android/app/src/main/java/com/reactnativenavigation/params/ScreenStyleParams.java View File

@@ -1,4 +1,4 @@
1
-package com.reactnativenavigation.controllers;
1
+package com.reactnativenavigation.params;
2 2
 
3 3
 import android.support.annotation.ColorInt;
4 4
 

+ 28
- 0
android/app/src/main/java/com/reactnativenavigation/params/TitleBarButtonParams.java View File

@@ -0,0 +1,28 @@
1
+package com.reactnativenavigation.params;
2
+
3
+import android.graphics.drawable.Drawable;
4
+import android.support.annotation.ColorInt;
5
+import android.view.MenuItem;
6
+
7
+public class TitleBarButtonParams {
8
+    public enum ShowAsAction {
9
+        IfRoom(MenuItem.SHOW_AS_ACTION_IF_ROOM),
10
+        Always(MenuItem.SHOW_AS_ACTION_ALWAYS),
11
+        Never(MenuItem.SHOW_AS_ACTION_NEVER),
12
+        WithText(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
13
+
14
+        public final int action;
15
+
16
+        ShowAsAction(int action) {
17
+            this.action = action;
18
+        }
19
+    }
20
+
21
+    // Todo: add id for click listener
22
+    public String label;
23
+    public Drawable icon;
24
+    @ColorInt
25
+    public int color;
26
+    public ShowAsAction showAsAction;
27
+    public boolean enabled = true;
28
+}

android/app/src/main/java/com/reactnativenavigation/bridge/parsers/ActivityParamsParser.java → android/app/src/main/java/com/reactnativenavigation/params/parsers/ActivityParamsParser.java View File

@@ -1,8 +1,8 @@
1
-package com.reactnativenavigation.bridge.parsers;
1
+package com.reactnativenavigation.params.parsers;
2 2
 
3 3
 import android.os.Bundle;
4 4
 
5
-import com.reactnativenavigation.controllers.ActivityParams;
5
+import com.reactnativenavigation.params.ActivityParams;
6 6
 
7 7
 public class ActivityParamsParser {
8 8
     public ActivityParams parse(Bundle params) {

+ 26
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenParamsParser.java View File

@@ -0,0 +1,26 @@
1
+package com.reactnativenavigation.params.parsers;
2
+
3
+import android.os.Bundle;
4
+
5
+import com.reactnativenavigation.params.ScreenParams;
6
+
7
+public class ScreenParamsParser {
8
+    private static final String KEY_TITLE = "title";
9
+    private static final String KEY_SCREEN_ID = "screenId";
10
+    private static final String KEY_SCREEN_INSTANCE_ID = "screenInstanceID";
11
+    private static final String KEY_PROPS = "passProps";
12
+    private static final String KEY_BUTTONS = "titleBarButtons";
13
+    private static final String STYLE_PARAMS = "styleParams";
14
+
15
+    public ScreenParams parse(Bundle params) {
16
+        ScreenParams result = new ScreenParams();
17
+        result.screenId = params.getString(KEY_SCREEN_ID);
18
+        result.screenInstanceId = params.getString(KEY_SCREEN_INSTANCE_ID);
19
+        result.passProps = params.getBundle(KEY_PROPS);
20
+        result.buttons = new TitleBarButtonParamsParser().parse(params.getBundle(KEY_BUTTONS));
21
+        result.title = params.getString(KEY_TITLE);
22
+        result.styleParams = new ScreenStyleParamsParser().parse(params.getBundle(STYLE_PARAMS));
23
+        return result;
24
+    }
25
+
26
+}

+ 20
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenStyleParamsParser.java View File

@@ -0,0 +1,20 @@
1
+package com.reactnativenavigation.params.parsers;
2
+
3
+import android.os.Bundle;
4
+
5
+import com.reactnativenavigation.params.ScreenStyleParams;
6
+
7
+public class ScreenStyleParamsParser {
8
+    public ScreenStyleParams parse(Bundle params) {
9
+        ScreenStyleParams result = new ScreenStyleParams();
10
+        result.statusBarColor = params.getInt("statusBarColor");
11
+        result.topBarColor = params.getInt("topBarColor");
12
+        result.navigationBarColor = params.getInt("navigationBarColor");
13
+        result.titleBarHidden = params.getBoolean("titleBarHidden");
14
+        result.backButtonHidden = params.getBoolean("backButtonHidden");
15
+        result.topTabsHidden = params.getBoolean("topTabsHidden");
16
+        result.bottomTabsHidden = params.getBoolean("bottomTabsHidden");
17
+        result.bottomTabsHiddenOnScroll = params.getBoolean("bottomTabsHiddenOnScroll");
18
+        return result;
19
+    }
20
+}

+ 43
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/TitleBarButtonParamsParser.java View File

@@ -0,0 +1,43 @@
1
+package com.reactnativenavigation.params.parsers;
2
+
3
+import android.os.Bundle;
4
+
5
+import com.reactnativenavigation.params.TitleBarButtonParams;
6
+import com.reactnativenavigation.react.ImageLoader;
7
+
8
+import java.util.ArrayList;
9
+import java.util.List;
10
+
11
+public class TitleBarButtonParamsParser {
12
+    public List<TitleBarButtonParams> parse(Bundle params) {
13
+        List<TitleBarButtonParams> result = new ArrayList<>();
14
+        for (String key : params.keySet()) {
15
+            result.add(parseItem(params.getBundle(key)));
16
+        }
17
+        return result;
18
+    }
19
+
20
+    private TitleBarButtonParams parseItem(Bundle bundle) {
21
+        TitleBarButtonParams result = new TitleBarButtonParams();
22
+        result.label = bundle.getString("label");
23
+        result.icon = ImageLoader.loadImage(bundle.getString("icon"));
24
+        result.color = bundle.getInt("color");
25
+        result.showAsAction = parseShowAsAction(bundle.getString("showAsAction"));
26
+        result.enabled = bundle.getBoolean("enabled");
27
+        return result;
28
+    }
29
+
30
+    private TitleBarButtonParams.ShowAsAction parseShowAsAction(String showAsAction) {
31
+        switch (showAsAction) {
32
+            case "Always":
33
+                return TitleBarButtonParams.ShowAsAction.Always;
34
+            case "Never":
35
+                return TitleBarButtonParams.ShowAsAction.Never;
36
+            case "WithText":
37
+                return TitleBarButtonParams.ShowAsAction.WithText;
38
+            case "IfRoom":
39
+            default:
40
+                return TitleBarButtonParams.ShowAsAction.IfRoom;
41
+        }
42
+    }
43
+}

+ 3
- 33
android/app/src/main/java/com/reactnativenavigation/views/TitleBarButton.java View File

@@ -1,7 +1,5 @@
1 1
 package com.reactnativenavigation.views;
2 2
 
3
-import android.graphics.drawable.Drawable;
4
-import android.support.annotation.ColorInt;
5 3
 import android.support.annotation.NonNull;
6 4
 import android.support.v7.widget.ActionMenuView;
7 5
 import android.view.Menu;
@@ -9,47 +7,19 @@ import android.view.MenuItem;
9 7
 import android.view.View;
10 8
 import android.widget.TextView;
11 9
 
10
+import com.reactnativenavigation.params.TitleBarButtonParams;
12 11
 import com.reactnativenavigation.utils.ImageUtils;
13 12
 import com.reactnativenavigation.utils.ViewUtils;
14 13
 
15 14
 import java.util.ArrayList;
16 15
 
17 16
 public class TitleBarButton {
18
-    public static class Params {
19
-        public enum ShowAsAction {
20
-            IfRoom(MenuItem.SHOW_AS_ACTION_IF_ROOM),
21
-            Always(MenuItem.SHOW_AS_ACTION_ALWAYS),
22
-            Never(MenuItem.SHOW_AS_ACTION_NEVER),
23
-            WithText(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
24
-
25
-            int action;
26
-
27
-            ShowAsAction(int action) {
28
-                this.action = action;
29
-            }
30
-        }
31
-
32
-        // Todo: add id for click listener
33
-        private final String label;
34
-        private final Drawable icon;
35
-        @ColorInt
36
-        private final int color;
37
-        private final ShowAsAction showAsAction;
38
-        private final boolean enabled = true;
39
-
40
-        public Params(String label, Drawable icon, int color, ShowAsAction showAsAction) {
41
-            this.label = label;
42
-            this.icon = icon;
43
-            this.color = color;
44
-            this.showAsAction = showAsAction;
45
-        }
46
-    }
47 17
 
48 18
     private final Menu menu;
49 19
     private final ActionMenuView parent;
50
-    private Params buttonParams;
20
+    private TitleBarButtonParams buttonParams;
51 21
 
52
-    public TitleBarButton(Menu menu, ActionMenuView parent, Params buttonParams) {
22
+    public TitleBarButton(Menu menu, ActionMenuView parent, TitleBarButtonParams buttonParams) {
53 23
         this.menu = menu;
54 24
         this.parent = parent;
55 25
         this.buttonParams = buttonParams;