|
@@ -8,17 +8,24 @@ import android.view.Window;
|
8
|
8
|
|
9
|
9
|
import com.reactnativenavigation.R;
|
10
|
10
|
import com.reactnativenavigation.layouts.Layout;
|
|
11
|
+import com.reactnativenavigation.layouts.ScreenStackContainer;
|
11
|
12
|
import com.reactnativenavigation.layouts.SingleScreenLayout;
|
12
|
13
|
import com.reactnativenavigation.params.ScreenParams;
|
13
|
14
|
|
14
|
|
-public class Modal extends Dialog implements DialogInterface.OnDismissListener {
|
15
|
|
- private final ModalController modalController;
|
|
15
|
+public class Modal extends Dialog implements DialogInterface.OnDismissListener, ScreenStackContainer {
|
|
16
|
+
|
|
17
|
+ private final OnModalDismissedListener onModalDismissedListener;
|
|
18
|
+
|
|
19
|
+ public interface OnModalDismissedListener {
|
|
20
|
+ void onModalDismissed(Modal modal);
|
|
21
|
+ }
|
|
22
|
+
|
16
|
23
|
private final ScreenParams screenParams;
|
17
|
24
|
private Layout layout;
|
18
|
25
|
|
19
|
|
- public Modal(Activity activity, ModalController modalController, ScreenParams screenParams) {
|
|
26
|
+ public Modal(Activity activity, OnModalDismissedListener onModalDismissedListener, ScreenParams screenParams) {
|
20
|
27
|
super(activity, R.style.Modal);
|
21
|
|
- this.modalController = modalController;
|
|
28
|
+ this.onModalDismissedListener = onModalDismissedListener;
|
22
|
29
|
this.screenParams = screenParams;
|
23
|
30
|
createContent();
|
24
|
31
|
}
|
|
@@ -31,10 +38,31 @@ public class Modal extends Dialog implements DialogInterface.OnDismissListener {
|
31
|
38
|
setContentView(layout.asView());
|
32
|
39
|
}
|
33
|
40
|
|
|
41
|
+ @Override
|
34
|
42
|
public void push(ScreenParams params) {
|
35
|
43
|
layout.push(params);
|
36
|
44
|
}
|
37
|
45
|
|
|
46
|
+ @Override
|
|
47
|
+ public void pop(ScreenParams screenParams) {
|
|
48
|
+ layout.pop(screenParams);
|
|
49
|
+ }
|
|
50
|
+
|
|
51
|
+ @Override
|
|
52
|
+ public void popToRoot(ScreenParams params) {
|
|
53
|
+ layout.popToRoot(params);
|
|
54
|
+ }
|
|
55
|
+
|
|
56
|
+ @Override
|
|
57
|
+ public void newStack(ScreenParams params) {
|
|
58
|
+ layout.newStack(params);
|
|
59
|
+ }
|
|
60
|
+
|
|
61
|
+ @Override
|
|
62
|
+ public void destroy() {
|
|
63
|
+ layout.destroy();
|
|
64
|
+ }
|
|
65
|
+
|
38
|
66
|
@Override
|
39
|
67
|
public void onBackPressed() {
|
40
|
68
|
Log.d("LOG", "Modal.onBackPressed ");
|
|
@@ -45,7 +73,7 @@ public class Modal extends Dialog implements DialogInterface.OnDismissListener {
|
45
|
73
|
|
46
|
74
|
@Override
|
47
|
75
|
public void onDismiss(DialogInterface dialog) {
|
48
|
|
- layout.removeAllReactViews();
|
49
|
|
- modalController.modalDismissed(this);
|
|
76
|
+ destroy();
|
|
77
|
+ onModalDismissedListener.onModalDismissed(this);
|
50
|
78
|
}
|
51
|
79
|
}
|