Browse Source

Implement setSideMenuVisible and toggleSideMenuVisible

Guy Carmeli 8 years ago
parent
commit
b53481d285

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

80
     }
80
     }
81
 
81
 
82
     @ReactMethod
82
     @ReactMethod
83
-    public void toggleSideMenuVisible(final ReadableMap params) {
83
+    public void toggleSideMenuVisible(boolean animated) {
84
+        NavigationCommandsHandler.toggleSideMenuVisible(animated);
85
+    }
86
+
87
+    @ReactMethod
88
+    public void setSideMenuVisible(boolean animated, boolean visible) {
89
+        NavigationCommandsHandler.setSideMenuVisible(animated, visible);
84
     }
90
     }
85
 
91
 
86
     @ReactMethod
92
     @ReactMethod

+ 8
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java View File

195
         layout.setTitleBarLeftButton(screenInstanceId, navigatorEventId, titleBarLeftButton);
195
         layout.setTitleBarLeftButton(screenInstanceId, navigatorEventId, titleBarLeftButton);
196
         modalController.setTitleBarLeftButton(screenInstanceId, navigatorEventId, titleBarLeftButton);
196
         modalController.setTitleBarLeftButton(screenInstanceId, navigatorEventId, titleBarLeftButton);
197
     }
197
     }
198
+
199
+    public void toggleSideMenuVisible(boolean animated) {
200
+        layout.toggleSideMenuVisible(animated);
201
+    }
202
+
203
+    public void setSideMenuVisible(boolean animated, boolean visible) {
204
+        layout.setSideMenuVisible(animated, visible);
205
+    }
198
 }
206
 }

+ 28
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationCommandsHandler.java View File

210
             }
210
             }
211
         });
211
         });
212
     }
212
     }
213
+
214
+    public static void toggleSideMenuVisible(final boolean animated) {
215
+        final NavigationActivity currentActivity = NavigationActivity.currentActivity;
216
+        if (currentActivity == null) {
217
+            return;
218
+        }
219
+
220
+        NavigationApplication.instance.runOnMainThread(new Runnable() {
221
+            @Override
222
+            public void run() {
223
+                currentActivity.toggleSideMenuVisible(animated);
224
+            }
225
+        });
226
+    }
227
+
228
+    public static void setSideMenuVisible(final boolean animated, final boolean visible) {
229
+        final NavigationActivity currentActivity = NavigationActivity.currentActivity;
230
+        if (currentActivity == null) {
231
+            return;
232
+        }
233
+
234
+        NavigationApplication.instance.runOnMainThread(new Runnable() {
235
+            @Override
236
+            public void run() {
237
+                currentActivity.setSideMenuVisible(animated, visible);
238
+            }
239
+        });
240
+    }
213
 }
241
 }

+ 10
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/BottomTabsLayout.java View File

126
         }
126
         }
127
     }
127
     }
128
 
128
 
129
+    @Override
130
+    public void toggleSideMenuVisible(boolean animated) {
131
+
132
+    }
133
+
134
+    @Override
135
+    public void setSideMenuVisible(boolean animated, boolean visible) {
136
+
137
+    }
138
+
129
     @Override
139
     @Override
130
     public void push(ScreenParams screenParams) {
140
     public void push(ScreenParams screenParams) {
131
         getCurrentScreenStack().push(screenParams, createScreenLayoutParams(screenParams));
141
         getCurrentScreenStack().push(screenParams, createScreenLayoutParams(screenParams));

+ 4
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/Layout.java View File

19
     void setTitleBarRightButtons(String screenInstanceId, String navigatorEventId, List<TitleBarButtonParams> titleBarButtons);
19
     void setTitleBarRightButtons(String screenInstanceId, String navigatorEventId, List<TitleBarButtonParams> titleBarButtons);
20
 
20
 
21
     void setTitleBarLeftButton(String screenInstanceId, String navigatorEventId, TitleBarLeftButtonParams titleBarLeftButtonParams);
21
     void setTitleBarLeftButton(String screenInstanceId, String navigatorEventId, TitleBarLeftButtonParams titleBarLeftButtonParams);
22
+
23
+    void toggleSideMenuVisible(boolean animated);
24
+
25
+    void setSideMenuVisible(boolean animated, boolean visible);
22
 }
26
 }

+ 14
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/SingleScreenLayout.java View File

132
         stack.setScreenTitleBarLeftButton(screenInstanceId, navigatorEventId, titleBarLeftButtonParams);
132
         stack.setScreenTitleBarLeftButton(screenInstanceId, navigatorEventId, titleBarLeftButtonParams);
133
     }
133
     }
134
 
134
 
135
+    @Override
136
+    public void toggleSideMenuVisible(boolean animated) {
137
+        if (sideMenu != null) {
138
+            sideMenu.toggleVisible(animated);
139
+        }
140
+    }
141
+
142
+    @Override
143
+    public void setSideMenuVisible(boolean animated, boolean visible) {
144
+        if (sideMenu != null) {
145
+            sideMenu.setVisible(visible, animated);
146
+        }
147
+    }
148
+
135
     @Override
149
     @Override
136
     public boolean onTitleBarBackButtonClick() {
150
     public boolean onTitleBarBackButtonClick() {
137
         if (leftButtonOnClickListener != null) {
151
         if (leftButtonOnClickListener != null) {

+ 26
- 0
android/app/src/main/java/com/reactnativenavigation/views/SideMenu.java View File

23
         removeView(sideMenuView);
23
         removeView(sideMenuView);
24
     }
24
     }
25
 
25
 
26
+    public void setVisible(boolean visible, boolean animated) {
27
+        if (!isShown() && visible) {
28
+            openDrawer(animated);
29
+        }
30
+
31
+        if (isShown() && !visible) {
32
+            closeDrawer(animated);
33
+        }
34
+    }
35
+
26
     public void openDrawer() {
36
     public void openDrawer() {
27
         openDrawer(Gravity.LEFT);
37
         openDrawer(Gravity.LEFT);
28
     }
38
     }
29
 
39
 
40
+    public void openDrawer(boolean animated) {
41
+        openDrawer(Gravity.LEFT, animated);
42
+    }
43
+
44
+    public void closeDrawer(boolean animated) {
45
+        closeDrawer(Gravity.LEFT, animated);
46
+    }
47
+
48
+    public void toggleVisible(boolean animated) {
49
+        if (isShown()) {
50
+            closeDrawer(animated);
51
+        } else {
52
+            openDrawer(animated);
53
+        }
54
+    }
55
+
30
     public SideMenu(Context context, SideMenuParams sideMenuParams) {
56
     public SideMenu(Context context, SideMenuParams sideMenuParams) {
31
         super(context);
57
         super(context);
32
         createContentContainer();
58
         createContentContainer();

+ 7
- 6
src/deprecated/platformSpecificDeprecated.android.js View File

243
 }
243
 }
244
 
244
 
245
 function navigatorToggleDrawer(navigator, params) {
245
 function navigatorToggleDrawer(navigator, params) {
246
-  //RctActivity.toggleDrawer({
247
-  //  side: params.side,
248
-  //  animated: !(params.animated === false),
249
-  //  to: params.to || ''
250
-  //});
246
+  const animated = !(params.animated === false);
247
+  if (params.to) {
248
+    const visible = params.to === 'open';
249
+    newPlatformSpecific.setSideMenuVisible(animated, visible);
250
+  } else {
251
+    newPlatformSpecific.toggleSideMenuVisible(animated);
252
+  }
251
 }
253
 }
252
 
254
 
253
 function navigatorToggleNavBar(navigator, params) {
255
 function navigatorToggleNavBar(navigator, params) {
317
   }
319
   }
318
 
320
 
319
   let leftButton = getLeftButton(screen);
321
   let leftButton = getLeftButton(screen);
320
-  debugger;
321
   if (sideMenuParams && !leftButton) {
322
   if (sideMenuParams && !leftButton) {
322
     leftButton = createSideMenuButton();
323
     leftButton = createSideMenuButton();
323
   }
324
   }

+ 11
- 1
src/platformSpecific.android.js View File

80
   }
80
   }
81
 }
81
 }
82
 
82
 
83
+function toggleSideMenuVisible(animated) {
84
+  NativeReactModule.toggleSideMenuVisible(animated);
85
+}
86
+
87
+function setSideMenuVisible(animated, visible) {
88
+  NativeReactModule.setSideMenuVisible(animated, visible);
89
+}
90
+
83
 module.exports = {
91
 module.exports = {
84
   startApp,
92
   startApp,
85
   push,
93
   push,
92
   setScreenTitleBarButtons,
100
   setScreenTitleBarButtons,
93
   showModal,
101
   showModal,
94
   dismissTopModal,
102
   dismissTopModal,
95
-  dismissAllModals
103
+  dismissAllModals,
104
+  toggleSideMenuVisible,
105
+  setSideMenuVisible
96
 };
106
 };