• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.tv.ui.sidepanel;
18 
19 import android.media.tv.TvTrackInfo;
20 import android.text.TextUtils;
21 import android.view.KeyEvent;
22 import com.android.tv.R;
23 import com.android.tv.util.Utils;
24 import java.util.ArrayList;
25 import java.util.List;
26 
27 public class MultiAudioFragment extends SideFragment {
28     private static final String TRACKER_LABEL = "multi-audio";
29     private int mInitialSelectedPosition = INVALID_POSITION;
30     private String mSelectedTrackId;
31     private String mFocusedTrackId;
32 
MultiAudioFragment()33     public MultiAudioFragment() {
34         super(KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK, KeyEvent.KEYCODE_A);
35     }
36 
37     @Override
getTitle()38     protected String getTitle() {
39         return getString(R.string.side_panel_title_multi_audio);
40     }
41 
42     @Override
getTrackerLabel()43     public String getTrackerLabel() {
44         return TRACKER_LABEL;
45     }
46 
47     @Override
getItemList()48     protected List<Item> getItemList() {
49         List<TvTrackInfo> tracks = getMainActivity().getTracks(TvTrackInfo.TYPE_AUDIO);
50         mSelectedTrackId = getMainActivity().getSelectedTrack(TvTrackInfo.TYPE_AUDIO);
51 
52         List<Item> items = new ArrayList<>();
53         if (tracks != null) {
54             boolean needToShowSampleRate = Utils.needToShowSampleRate(getActivity(), tracks);
55             int pos = 0;
56             for (final TvTrackInfo track : tracks) {
57                 RadioButtonItem item =
58                         new MultiAudioOptionItem(
59                                 Utils.getMultiAudioString(
60                                         getActivity(), track, needToShowSampleRate),
61                                 track.getId());
62                 if (track.getId().equals(mSelectedTrackId)) {
63                     item.setChecked(true);
64                     mInitialSelectedPosition = pos;
65                     mSelectedTrackId = mFocusedTrackId = track.getId();
66                 }
67                 items.add(item);
68                 ++pos;
69             }
70         }
71         return items;
72     }
73 
74     @Override
onResume()75     public void onResume() {
76         super.onResume();
77         if (mInitialSelectedPosition != INVALID_POSITION) {
78             setSelectedPosition(mInitialSelectedPosition);
79         }
80     }
81 
82     private class MultiAudioOptionItem extends RadioButtonItem {
83         private final String mTrackId;
84 
MultiAudioOptionItem(String title, String trackId)85         private MultiAudioOptionItem(String title, String trackId) {
86             super(title);
87             mTrackId = trackId;
88         }
89 
90         @Override
onSelected()91         protected void onSelected() {
92             super.onSelected();
93             mSelectedTrackId = mFocusedTrackId = mTrackId;
94             getMainActivity().selectAudioTrack(mTrackId);
95             closeFragment();
96         }
97 
98         @Override
onFocused()99         protected void onFocused() {
100             super.onFocused();
101             mFocusedTrackId = mTrackId;
102             getMainActivity().selectAudioTrack(mTrackId);
103         }
104     }
105 
106     @Override
onDetach()107     public void onDetach() {
108         if (!TextUtils.equals(mSelectedTrackId, mFocusedTrackId)) {
109             getMainActivity().selectAudioTrack(mSelectedTrackId);
110         }
111         super.onDetach();
112     }
113 }
114