Browse Source

Implement backButtonHidden

Guy Carmeli 8 years ago
parent
commit
b01622bf2b

+ 4
- 0
android/app/src/main/java/com/reactnativenavigation/params/TitleBarLeftButtonParams.java View File

11
         eventId = params.eventId;
11
         eventId = params.eventId;
12
         enabled = params.enabled;
12
         enabled = params.enabled;
13
     }
13
     }
14
+
15
+    public boolean isBackButton() {
16
+        return eventId.equals("back");
17
+    }
14
 }
18
 }

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

1
 package com.reactnativenavigation.params.parsers;
1
 package com.reactnativenavigation.params.parsers;
2
 
2
 
3
+import android.graphics.drawable.Drawable;
3
 import android.os.Bundle;
4
 import android.os.Bundle;
4
 
5
 
5
 import com.reactnativenavigation.params.ScreenParams;
6
 import com.reactnativenavigation.params.ScreenParams;
7
+import com.reactnativenavigation.params.TitleBarButtonParams;
8
+import com.reactnativenavigation.params.TitleBarLeftButtonParams;
9
+import com.reactnativenavigation.params.TopTabParams;
6
 import com.reactnativenavigation.react.ImageLoader;
10
 import com.reactnativenavigation.react.ImageLoader;
7
 
11
 
8
 import java.util.ArrayList;
12
 import java.util.ArrayList;
16
     private static final String KEY_NAVIGATION_PARAMS = "navigationParams";
20
     private static final String KEY_NAVIGATION_PARAMS = "navigationParams";
17
     private static final String KEY_RIGHT_BUTTONS = "rightButtons";
21
     private static final String KEY_RIGHT_BUTTONS = "rightButtons";
18
     private static final String KEY_LEFT_BUTTON = "leftButton";
22
     private static final String KEY_LEFT_BUTTON = "leftButton";
23
+    private static final String KEY_BACK_BUTTON_HIDDEN = "backButtonHidden";
19
     private static final String STYLE_PARAMS = "styleParams";
24
     private static final String STYLE_PARAMS = "styleParams";
20
     private static final String TOP_TABS = "topTabs";
25
     private static final String TOP_TABS = "topTabs";
21
     private static final String FRAGMENT_CREATOR_CLASS_NAME = "fragmentCreatorClassName";
26
     private static final String FRAGMENT_CREATOR_CLASS_NAME = "fragmentCreatorClassName";
30
         result.navigationParams = params.getBundle(KEY_NAVIGATION_PARAMS);
35
         result.navigationParams = params.getBundle(KEY_NAVIGATION_PARAMS);
31
         result.navigatorEventId = result.navigationParams.getString(KEY_NAVIGATOR_EVENT_ID);
36
         result.navigatorEventId = result.navigationParams.getString(KEY_NAVIGATOR_EVENT_ID);
32
         result.screenInstanceId = result.navigationParams.getString(KEY_SCREEN_INSTANCE_ID);
37
         result.screenInstanceId = result.navigationParams.getString(KEY_SCREEN_INSTANCE_ID);
33
-        if (hasKey(params, KEY_RIGHT_BUTTONS)) {
34
-            result.rightButtons = new TitleBarButtonParamsParser().parseButtons(params.getBundle(KEY_RIGHT_BUTTONS));
35
-        }
36
-        if (hasKey(params, KEY_LEFT_BUTTON)) {
37
-            result.leftButton = new TitleBarLeftButtonParamsParser().parseSingleButton(params.getBundle(KEY_LEFT_BUTTON));
38
-        }
39
-        result.title = params.getString(KEY_TITLE);
38
+
40
         result.styleParams = new StyleParamsParser(params.getBundle(STYLE_PARAMS)).parse();
39
         result.styleParams = new StyleParamsParser(params.getBundle(STYLE_PARAMS)).parse();
41
-        if (hasKey(params, TOP_TABS)) {
42
-            result.topTabParams = TopTabParamsParser.parse(params.getBundle(TOP_TABS));
43
-        }
40
+
41
+        result.title = params.getString(KEY_TITLE);
42
+        result.rightButtons = parseRightButton(params);
43
+        result.leftButton = parseLeftButton(params);
44
+
45
+        result.topTabParams = parseTopTabs(params);
46
+
44
         if (hasKey(params, FRAGMENT_CREATOR_CLASS_NAME)) {
47
         if (hasKey(params, FRAGMENT_CREATOR_CLASS_NAME)) {
45
             result.fragmentCreatorClassName = params.getString(FRAGMENT_CREATOR_CLASS_NAME);
48
             result.fragmentCreatorClassName = params.getString(FRAGMENT_CREATOR_CLASS_NAME);
46
             result.fragmentCreatorPassProps = params.getBundle(FRAGMENT_CREATOR_PASS_PROPS);
49
             result.fragmentCreatorPassProps = params.getBundle(FRAGMENT_CREATOR_PASS_PROPS);
47
         }
50
         }
51
+
52
+        result.tabLabel = getTabLabel(params);
53
+        result.tabIcon = getTabIcon(params);
54
+
55
+        result.animateScreenTransitions = params.getBoolean("animated", true);
56
+
57
+        return result;
58
+    }
59
+
60
+    private static Drawable getTabIcon(Bundle params) {
61
+        Drawable tabIcon = null;
62
+        if (hasKey(params, "icon")) {
63
+            tabIcon = ImageLoader.loadImage(params.getString("icon"));
64
+        }
65
+        return tabIcon;
66
+    }
67
+
68
+    private static String getTabLabel(Bundle params) {
69
+        String tabLabel = null;
48
         if (hasKey(params, "label")) {
70
         if (hasKey(params, "label")) {
49
-            result.tabLabel = params.getString("label");
71
+            tabLabel = params.getString("label");
50
         }
72
         }
51
-        if (hasKey(params, "icon")) {
52
-            result.tabIcon = ImageLoader.loadImage(params.getString("icon"));
73
+        return tabLabel;
74
+    }
75
+
76
+    private static List<TopTabParams> parseTopTabs(Bundle params) {
77
+        List<TopTabParams> topTabParams = null;
78
+        if (hasKey(params, TOP_TABS)) {
79
+             topTabParams = TopTabParamsParser.parse(params.getBundle(TOP_TABS));
53
         }
80
         }
54
-        result.animateScreenTransitions = params.getBoolean("animated", true);
55
-        return result;
81
+        return topTabParams;
82
+    }
83
+
84
+    private static List<TitleBarButtonParams> parseRightButton(Bundle params) {
85
+        List<TitleBarButtonParams> rightButtons = null;
86
+        if (hasKey(params, KEY_RIGHT_BUTTONS)) {
87
+            rightButtons = new TitleBarButtonParamsParser().parseButtons(params.getBundle(KEY_RIGHT_BUTTONS));
88
+        }
89
+        return rightButtons;
90
+    }
91
+
92
+    private static TitleBarLeftButtonParams parseLeftButton(Bundle params) {
93
+        TitleBarLeftButtonParams leftButton = null;
94
+        if (hasKey(params, KEY_LEFT_BUTTON)) {
95
+            leftButton =  new TitleBarLeftButtonParamsParser().parseSingleButton(params.getBundle(KEY_LEFT_BUTTON));
96
+
97
+            boolean backButtonHidden = params.getBoolean(KEY_BACK_BUTTON_HIDDEN, false);
98
+            if (backButtonHidden && leftButton.isBackButton()) {
99
+                leftButton = null;
100
+            }
101
+        }
102
+        return leftButton;
56
     }
103
     }
57
 
104
 
58
     public static List<ScreenParams> parseTabs(Bundle params) {
105
     public static List<ScreenParams> parseTabs(Bundle params) {