aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/ui/sidepanel/ClosedCaptionFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/tv/ui/sidepanel/ClosedCaptionFragment.java')
-rw-r--r--src/com/android/tv/ui/sidepanel/ClosedCaptionFragment.java108
1 files changed, 31 insertions, 77 deletions
diff --git a/src/com/android/tv/ui/sidepanel/ClosedCaptionFragment.java b/src/com/android/tv/ui/sidepanel/ClosedCaptionFragment.java
index d6ccdf6b..341e4350 100644
--- a/src/com/android/tv/ui/sidepanel/ClosedCaptionFragment.java
+++ b/src/com/android/tv/ui/sidepanel/ClosedCaptionFragment.java
@@ -18,6 +18,7 @@ package com.android.tv.ui.sidepanel;
import android.media.tv.TvTrackInfo;
import android.os.Bundle;
+import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
@@ -25,7 +26,6 @@ import android.view.ViewGroup;
import com.android.tv.R;
import com.android.tv.util.CaptionSettings;
-import com.android.tv.util.Utils;
import java.util.ArrayList;
import java.util.List;
@@ -38,8 +38,6 @@ public class ClosedCaptionFragment extends SideFragment {
private String mClosedCaptionLanguage;
private String mClosedCaptionTrackId;
private ClosedCaptionOptionItem mSelectedItem;
- private List<Item> mItems;
- private boolean mPaused;
public ClosedCaptionFragment() {
super(KeyEvent.KEYCODE_CAPTIONS, KeyEvent.KEYCODE_S);
@@ -63,37 +61,32 @@ public class ClosedCaptionFragment extends SideFragment {
mClosedCaptionLanguage = captionSettings.getLanguage();
mClosedCaptionTrackId = captionSettings.getTrackId();
- mItems = new ArrayList<>();
+ List<Item> items = new ArrayList<>();
mSelectedItem = null;
List<TvTrackInfo> tracks = getMainActivity().getTracks(TvTrackInfo.TYPE_SUBTITLE);
if (tracks != null && !tracks.isEmpty()) {
- String trackId = captionSettings.isEnabled() ?
+ String selectedTrackId = captionSettings.isEnabled() ?
getMainActivity().getSelectedTrack(TvTrackInfo.TYPE_SUBTITLE) : null;
- boolean isEnabled = trackId != null;
-
- ClosedCaptionOptionItem item = new ClosedCaptionOptionItem(
- getString(R.string.closed_caption_option_item_off),
- CaptionSettings.OPTION_OFF, null, null);
- // Pick 'Off' as default because we may fail to find the matching language.
- mSelectedItem = item;
- if (!isEnabled) {
+ ClosedCaptionOptionItem item = new ClosedCaptionOptionItem(null, null);
+ items.add(item);
+ if (selectedTrackId == null) {
+ mSelectedItem = item;
item.setChecked(true);
+ setSelectedPosition(0);
}
- mItems.add(item);
-
- for (final TvTrackInfo track : tracks) {
- item = new ClosedCaptionOptionItem(getLabel(track),
- CaptionSettings.OPTION_ON, track.getId(), track.getLanguage());
- if (isEnabled && track.getId().equals(trackId)) {
- item.setChecked(true);
+ for (int i = 0; i < tracks.size(); i++) {
+ item = new ClosedCaptionOptionItem(tracks.get(i), i);
+ if (TextUtils.equals(selectedTrackId, tracks.get(i).getId())) {
mSelectedItem = item;
+ item.setChecked(true);
+ setSelectedPosition(i + 1);
}
- mItems.add(item);
+ items.add(item);
}
}
if (getMainActivity().hasCaptioningSettingsActivity()) {
- mItems.add(new ActionItem(getString(R.string.closed_caption_system_settings),
+ items.add(new ActionItem(getString(R.string.closed_caption_system_settings),
getString(R.string.closed_caption_system_settings_description)) {
@Override
protected void onSelected() {
@@ -103,14 +96,14 @@ public class ClosedCaptionFragment extends SideFragment {
@Override
protected void onFocused() {
super.onFocused();
- if (!mPaused && mSelectedItem != null) {
+ if (mSelectedItem != null) {
getMainActivity().selectSubtitleTrack(
mSelectedItem.mOption, mSelectedItem.mTrackId);
}
}
});
}
- return mItems;
+ return items;
}
@Override
@@ -120,50 +113,6 @@ public class ClosedCaptionFragment extends SideFragment {
}
@Override
- public void onResume() {
- super.onResume();
- if (mPaused) {
- // Apply system's closed caption settings to the UI.
- CaptionSettings captionSettings = getMainActivity().getCaptionSettings();
- mClosedCaptionOption = CaptionSettings.OPTION_SYSTEM;
- mClosedCaptionLanguage = captionSettings.getSystemLanguage();
- ClosedCaptionOptionItem selectedItem = null;
- if (captionSettings.isSystemSettingEnabled()) {
- for (Item item : mItems) {
- if (!(item instanceof ClosedCaptionOptionItem)) {
- continue;
- }
- ClosedCaptionOptionItem captionItem = (ClosedCaptionOptionItem) item;
- if (Utils.isEqualLanguage(captionItem.mLanguage, mClosedCaptionLanguage)) {
- selectedItem = captionItem;
- break;
- }
- }
- }
- if (mSelectedItem != null) {
- mSelectedItem.setChecked(false);
- }
- if (selectedItem == null && mItems.get(0) instanceof ClosedCaptionOptionItem) {
- selectedItem = (ClosedCaptionOptionItem) mItems.get(0);
- }
- if (selectedItem != null) {
- selectedItem.setChecked(true);
- }
- // We shouldn't call MainActivity.selectSubtitleTrack() here because
- // 1. Tracks are not available because video is just started at this moment.
- // 2. MainActivity will apply system settings when video's tracks are available.
- mSelectedItem = selectedItem;
- }
- mPaused = false;
- }
-
- @Override
- public void onPause() {
- super.onPause();
- mPaused = true;
- }
-
- @Override
public void onDestroyView() {
if (mResetClosedCaption) {
getMainActivity().selectSubtitleLanguage(mClosedCaptionOption, mClosedCaptionLanguage,
@@ -172,23 +121,28 @@ public class ClosedCaptionFragment extends SideFragment {
super.onDestroyView();
}
- private String getLabel(TvTrackInfo track) {
- if (track.getLanguage() != null) {
+ private String getLabel(TvTrackInfo track, Integer trackIndex) {
+ if (track == null) {
+ return getString(R.string.closed_caption_option_item_off);
+ } else if (track.getLanguage() != null) {
return new Locale(track.getLanguage()).getDisplayName();
}
- return getString(R.string.default_language);
+ return getString(R.string.closed_caption_unknown_language, trackIndex + 1);
}
private class ClosedCaptionOptionItem extends RadioButtonItem {
private final int mOption;
private final String mTrackId;
- private final String mLanguage;
- private ClosedCaptionOptionItem(String title, int option, String trackId, String language) {
- super(title);
- mOption = option;
- mTrackId = trackId;
- mLanguage = language;
+ private ClosedCaptionOptionItem(TvTrackInfo track, Integer trackIndex) {
+ super(getLabel(track, trackIndex));
+ if (track == null) {
+ mOption = CaptionSettings.OPTION_OFF;
+ mTrackId = null;
+ } else {
+ mOption = CaptionSettings.OPTION_ON;
+ mTrackId = track.getId();
+ }
}
@Override