|
@@ -3,6 +3,8 @@ package com.reactnativenavigation.viewcontrollers;
|
3
|
3
|
import android.app.Activity;
|
4
|
4
|
import android.app.Dialog;
|
5
|
5
|
import android.support.annotation.NonNull;
|
|
6
|
+import android.support.annotation.Nullable;
|
|
7
|
+import android.support.v4.util.Pair;
|
6
|
8
|
import android.view.ViewGroup;
|
7
|
9
|
import android.widget.FrameLayout;
|
8
|
10
|
|
|
@@ -11,6 +13,8 @@ import com.reactnativenavigation.utils.CompatUtils;
|
11
|
13
|
|
12
|
14
|
import java.util.Collection;
|
13
|
15
|
import java.util.Collections;
|
|
16
|
+import java.util.HashMap;
|
|
17
|
+import java.util.Map;
|
14
|
18
|
|
15
|
19
|
import static android.view.View.MeasureSpec.EXACTLY;
|
16
|
20
|
import static android.view.View.MeasureSpec.makeMeasureSpec;
|
|
@@ -18,6 +22,7 @@ import static android.view.View.MeasureSpec.makeMeasureSpec;
|
18
|
22
|
public class Navigator extends ParentController {
|
19
|
23
|
|
20
|
24
|
private ViewController root;
|
|
25
|
+ private HashMap<ViewController, Dialog> modals = new HashMap<>();
|
21
|
26
|
|
22
|
27
|
public Navigator(final Activity activity) {
|
23
|
28
|
super(activity, "navigator" + CompatUtils.generateViewId());
|
|
@@ -107,5 +112,25 @@ public class Navigator extends ParentController {
|
107
|
112
|
Dialog dialog = new Dialog(getActivity(), R.style.Modal);
|
108
|
113
|
dialog.setContentView(viewController.getView());
|
109
|
114
|
dialog.show();
|
|
115
|
+ modals.put(viewController, dialog);
|
|
116
|
+ }
|
|
117
|
+
|
|
118
|
+ public void dismissModal(final String containerId) {
|
|
119
|
+ Pair<ViewController, Dialog> pair = findModalByContainerId(containerId);
|
|
120
|
+ if (pair != null) {
|
|
121
|
+ pair.second.dismiss();
|
|
122
|
+ modals.remove(pair.first);
|
|
123
|
+ }
|
|
124
|
+ }
|
|
125
|
+
|
|
126
|
+ @Nullable
|
|
127
|
+ private Pair<ViewController, Dialog> findModalByContainerId(String containerId) {
|
|
128
|
+ for (Map.Entry<ViewController, Dialog> entry : modals.entrySet()) {
|
|
129
|
+ ViewController vc = entry.getKey().findControllerById(containerId);
|
|
130
|
+ if (vc != null) {
|
|
131
|
+ return Pair.create(entry.getKey(), entry.getValue());
|
|
132
|
+ }
|
|
133
|
+ }
|
|
134
|
+ return null;
|
110
|
135
|
}
|
111
|
136
|
}
|