12
12
13
13
import java .util .ArrayList ;
14
14
import java .util .concurrent .atomic .AtomicBoolean ;
15
+ import java .util .stream .IntStream ;
15
16
16
17
public class VideoProjectionMenuWidget extends MenuWidget {
17
18
@@ -31,6 +32,14 @@ public interface Delegate {
31
32
void onVideoProjectionClick (@ VideoProjectionFlags int aProjection );
32
33
}
33
34
35
+ class ProjectionMenuItem extends MenuItem {
36
+ @ VideoProjectionFlags int projection ;
37
+ public ProjectionMenuItem (@ VideoProjectionFlags int aProjection , String aString , int aImage ) {
38
+ super (aString , aImage , () -> handleClick (aProjection ));
39
+ projection = aProjection ;
40
+ }
41
+ }
42
+
34
43
ArrayList <MenuItem > mItems ;
35
44
Delegate mDelegate ;
36
45
@ VideoProjectionFlags int mSelectedProjection = VIDEO_PROJECTION_3D_SIDE_BY_SIDE ;
@@ -63,23 +72,23 @@ public void setDelegate(@Nullable Delegate aDelegate) {
63
72
private void createMenuItems () {
64
73
mItems = new ArrayList <>();
65
74
66
- mItems .add (new MenuItem ( getContext ().getString (R .string .video_mode_3d_side ),
67
- R .drawable .ic_icon_videoplayback_3dsidebyside , () -> handleClick ( VIDEO_PROJECTION_3D_SIDE_BY_SIDE ) ));
75
+ mItems .add (new ProjectionMenuItem ( VIDEO_PROJECTION_3D_SIDE_BY_SIDE , getContext ().getString (R .string .video_mode_3d_side ),
76
+ R .drawable .ic_icon_videoplayback_3dsidebyside ));
68
77
69
- mItems .add (new MenuItem ( getContext ().getString (R .string .video_mode_360 ),
70
- R .drawable .ic_icon_videoplayback_360 , () -> handleClick ( VIDEO_PROJECTION_360 ) ));
78
+ mItems .add (new ProjectionMenuItem ( VIDEO_PROJECTION_360 , getContext ().getString (R .string .video_mode_360 ),
79
+ R .drawable .ic_icon_videoplayback_360 ));
71
80
72
- mItems .add (new MenuItem ( getContext ().getString (R .string .video_mode_360_stereo ),
73
- R .drawable .ic_icon_videoplayback_360_stereo , () -> handleClick ( VIDEO_PROJECTION_360_STEREO ) ));
81
+ mItems .add (new ProjectionMenuItem ( VIDEO_PROJECTION_360_STEREO , getContext ().getString (R .string .video_mode_360_stereo ),
82
+ R .drawable .ic_icon_videoplayback_360_stereo ));
74
83
75
- mItems .add (new MenuItem ( getContext ().getString (R .string .video_mode_180 ),
76
- R .drawable .ic_icon_videoplayback_180 , () -> handleClick ( VIDEO_PROJECTION_180 ) ));
84
+ mItems .add (new ProjectionMenuItem ( VIDEO_PROJECTION_180 , getContext ().getString (R .string .video_mode_180 ),
85
+ R .drawable .ic_icon_videoplayback_180 ));
77
86
78
- mItems .add (new MenuItem ( getContext ().getString (R .string .video_mode_180_left_right ),
79
- R .drawable .ic_icon_videoplayback_180_stereo_leftright , () -> handleClick ( VIDEO_PROJECTION_180_STEREO_LEFT_RIGHT ) ));
87
+ mItems .add (new ProjectionMenuItem ( VIDEO_PROJECTION_180_STEREO_LEFT_RIGHT , getContext ().getString (R .string .video_mode_180_left_right ),
88
+ R .drawable .ic_icon_videoplayback_180_stereo_leftright ));
80
89
81
- mItems .add (new MenuItem ( getContext ().getString (R .string .video_mode_180_top_bottom ),
82
- R .drawable .ic_icon_videoplayback_180_stereo_topbottom , () -> handleClick ( VIDEO_PROJECTION_180_STEREO_TOP_BOTTOM ) ));
90
+ mItems .add (new ProjectionMenuItem ( VIDEO_PROJECTION_180_STEREO_TOP_BOTTOM , getContext ().getString (R .string .video_mode_180_top_bottom ),
91
+ R .drawable .ic_icon_videoplayback_180_stereo_topbottom ));
83
92
84
93
85
94
super .updateMenuItems (mItems );
@@ -101,6 +110,10 @@ private void handleClick(@VideoProjectionFlags int aVideoProjection) {
101
110
102
111
public void setSelectedProjection (@ VideoProjectionFlags int aProjection ) {
103
112
mSelectedProjection = aProjection ;
113
+ IntStream .range (0 , mItems .size ())
114
+ .filter (i -> ((ProjectionMenuItem )mItems .get (i )).projection == aProjection )
115
+ .findFirst ()
116
+ .ifPresent (this ::setSelectedItem );
104
117
}
105
118
106
119
public static @ VideoProjectionFlags Integer getAutomaticProjection (String aURL , AtomicBoolean autoEnter ) {
0 commit comments