Skip to content
This repository has been archived by the owner on Jul 22, 2024. It is now read-only.

Correctly update media control selected projection #2345

Merged
merged 1 commit into from
Nov 21, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.IntStream;

public class VideoProjectionMenuWidget extends MenuWidget {

Expand All @@ -31,6 +32,14 @@ public interface Delegate {
void onVideoProjectionClick(@VideoProjectionFlags int aProjection);
}

class ProjectionMenuItem extends MenuItem {
@VideoProjectionFlags int projection;
public ProjectionMenuItem(@VideoProjectionFlags int aProjection, String aString, int aImage) {
super(aString, aImage, () -> handleClick(aProjection));
projection = aProjection;
}
}

ArrayList<MenuItem> mItems;
Delegate mDelegate;
@VideoProjectionFlags int mSelectedProjection = VIDEO_PROJECTION_3D_SIDE_BY_SIDE;
Expand Down Expand Up @@ -63,23 +72,23 @@ public void setDelegate(@Nullable Delegate aDelegate) {
private void createMenuItems() {
mItems = new ArrayList<>();

mItems.add(new MenuItem(getContext().getString(R.string.video_mode_3d_side),
R.drawable.ic_icon_videoplayback_3dsidebyside, () -> handleClick(VIDEO_PROJECTION_3D_SIDE_BY_SIDE)));
mItems.add(new ProjectionMenuItem(VIDEO_PROJECTION_3D_SIDE_BY_SIDE, getContext().getString(R.string.video_mode_3d_side),
R.drawable.ic_icon_videoplayback_3dsidebyside));

mItems.add(new MenuItem(getContext().getString(R.string.video_mode_360),
R.drawable.ic_icon_videoplayback_360, () -> handleClick(VIDEO_PROJECTION_360)));
mItems.add(new ProjectionMenuItem(VIDEO_PROJECTION_360, getContext().getString(R.string.video_mode_360),
R.drawable.ic_icon_videoplayback_360));

mItems.add(new MenuItem(getContext().getString(R.string.video_mode_360_stereo),
R.drawable.ic_icon_videoplayback_360_stereo, () -> handleClick(VIDEO_PROJECTION_360_STEREO)));
mItems.add(new ProjectionMenuItem(VIDEO_PROJECTION_360_STEREO, getContext().getString(R.string.video_mode_360_stereo),
R.drawable.ic_icon_videoplayback_360_stereo));

mItems.add(new MenuItem(getContext().getString(R.string.video_mode_180),
R.drawable.ic_icon_videoplayback_180, () -> handleClick(VIDEO_PROJECTION_180)));
mItems.add(new ProjectionMenuItem(VIDEO_PROJECTION_180, getContext().getString(R.string.video_mode_180),
R.drawable.ic_icon_videoplayback_180));

mItems.add(new MenuItem(getContext().getString(R.string.video_mode_180_left_right),
R.drawable.ic_icon_videoplayback_180_stereo_leftright, () -> handleClick(VIDEO_PROJECTION_180_STEREO_LEFT_RIGHT)));
mItems.add(new ProjectionMenuItem(VIDEO_PROJECTION_180_STEREO_LEFT_RIGHT, getContext().getString(R.string.video_mode_180_left_right),
R.drawable.ic_icon_videoplayback_180_stereo_leftright));

mItems.add(new MenuItem(getContext().getString(R.string.video_mode_180_top_bottom),
R.drawable.ic_icon_videoplayback_180_stereo_topbottom, () -> handleClick(VIDEO_PROJECTION_180_STEREO_TOP_BOTTOM)));
mItems.add(new ProjectionMenuItem(VIDEO_PROJECTION_180_STEREO_TOP_BOTTOM, getContext().getString(R.string.video_mode_180_top_bottom),
R.drawable.ic_icon_videoplayback_180_stereo_topbottom));


super.updateMenuItems(mItems);
Expand All @@ -101,6 +110,10 @@ private void handleClick(@VideoProjectionFlags int aVideoProjection) {

public void setSelectedProjection(@VideoProjectionFlags int aProjection) {
mSelectedProjection = aProjection;
IntStream.range(0, mItems.size())
.filter(i -> ((ProjectionMenuItem)mItems.get(i)).projection == aProjection)
.findFirst()
.ifPresent(this::setSelectedItem);
}

public static @VideoProjectionFlags Integer getAutomaticProjection(String aURL, AtomicBoolean autoEnter) {
Expand Down