• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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.dvr.ui;
18 
19 import android.app.Activity;
20 import android.content.Context;
21 import android.os.Bundle;
22 import android.support.v17.leanback.app.GuidedStepFragment;
23 import android.view.LayoutInflater;
24 import android.view.View;
25 import android.view.ViewGroup;
26 import com.android.tv.MainActivity;
27 import com.android.tv.R;
28 import com.android.tv.dialog.HalfSizedDialogFragment;
29 import com.android.tv.dvr.ui.DvrConflictFragment.DvrChannelWatchConflictFragment;
30 import com.android.tv.dvr.ui.DvrConflictFragment.DvrProgramConflictFragment;
31 import com.android.tv.guide.ProgramGuide;
32 
33 public class DvrHalfSizedDialogFragment extends HalfSizedDialogFragment {
34     /** Key for input ID. Type: String. */
35     public static final String KEY_INPUT_ID = "DvrHalfSizedDialogFragment.input_id";
36     /** Key for the program. Type: {@link com.android.tv.data.Program}. */
37     public static final String KEY_PROGRAM = "DvrHalfSizedDialogFragment.program";
38     /** Key for the channel ID. Type: long. */
39     public static final String KEY_CHANNEL_ID = "DvrHalfSizedDialogFragment.channel_id";
40     /** Key for the recording start time in millisecond. Type: long. */
41     public static final String KEY_START_TIME_MS = "DvrHalfSizedDialogFragment.start_time_ms";
42     /** Key for the recording end time in millisecond. Type: long. */
43     public static final String KEY_END_TIME_MS = "DvrHalfSizedDialogFragment.end_time_ms";
44 
45     @Override
onAttach(Context context)46     public void onAttach(Context context) {
47         super.onAttach(context);
48         Activity activity = getActivity();
49         if (activity instanceof MainActivity) {
50             ProgramGuide programGuide =
51                     ((MainActivity) activity).getOverlayManager().getProgramGuide();
52             if (programGuide != null && programGuide.isActive()) {
53                 programGuide.cancelHide();
54             }
55         }
56     }
57 
58     @Override
onDetach()59     public void onDetach() {
60         super.onDetach();
61         Activity activity = getActivity();
62         if (activity instanceof MainActivity) {
63             ProgramGuide programGuide =
64                     ((MainActivity) activity).getOverlayManager().getProgramGuide();
65             if (programGuide != null && programGuide.isActive()) {
66                 programGuide.scheduleHide();
67             }
68         }
69     }
70 
71     public abstract static class DvrGuidedStepDialogFragment extends DvrHalfSizedDialogFragment {
72         private DvrGuidedStepFragment mFragment;
73 
74         @Override
onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)75         public View onCreateView(
76                 LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
77             View view = super.onCreateView(inflater, container, savedInstanceState);
78             mFragment = onCreateGuidedStepFragment();
79             mFragment.setArguments(getArguments());
80             mFragment.setOnActionClickListener(getOnActionClickListener());
81             GuidedStepFragment.add(
82                     getChildFragmentManager(), mFragment, R.id.halfsized_dialog_host);
83             return view;
84         }
85 
86         @Override
setOnActionClickListener(OnActionClickListener listener)87         public void setOnActionClickListener(OnActionClickListener listener) {
88             super.setOnActionClickListener(listener);
89             if (mFragment != null) {
90                 mFragment.setOnActionClickListener(listener);
91             }
92         }
93 
onCreateGuidedStepFragment()94         protected abstract DvrGuidedStepFragment onCreateGuidedStepFragment();
95     }
96 
97     /** A dialog fragment for {@link DvrScheduleFragment}. */
98     public static class DvrScheduleDialogFragment extends DvrGuidedStepDialogFragment {
99         @Override
onCreateGuidedStepFragment()100         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
101             return new DvrScheduleFragment();
102         }
103     }
104 
105     /** A dialog fragment for {@link DvrProgramConflictFragment}. */
106     public static class DvrProgramConflictDialogFragment extends DvrGuidedStepDialogFragment {
107         @Override
onCreateGuidedStepFragment()108         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
109             return new DvrProgramConflictFragment();
110         }
111     }
112 
113     /** A dialog fragment for {@link DvrChannelWatchConflictFragment}. */
114     public static class DvrChannelWatchConflictDialogFragment extends DvrGuidedStepDialogFragment {
115         @Override
onCreateGuidedStepFragment()116         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
117             return new DvrChannelWatchConflictFragment();
118         }
119     }
120 
121     /** A dialog fragment for {@link DvrChannelRecordDurationOptionFragment}. */
122     public static class DvrChannelRecordDurationOptionDialogFragment
123             extends DvrGuidedStepDialogFragment {
124         @Override
onCreateGuidedStepFragment()125         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
126             return new DvrChannelRecordDurationOptionFragment();
127         }
128     }
129 
130     /** A dialog fragment for {@link DvrInsufficientSpaceErrorFragment}. */
131     public static class DvrInsufficientSpaceErrorDialogFragment
132             extends DvrGuidedStepDialogFragment {
133         @Override
onCreateGuidedStepFragment()134         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
135             return new DvrInsufficientSpaceErrorFragment();
136         }
137     }
138 
139     /** A dialog fragment for {@link DvrMissingStorageErrorFragment}. */
140     public static class DvrMissingStorageErrorDialogFragment extends DvrGuidedStepDialogFragment {
141         @Override
onCreateGuidedStepFragment()142         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
143             return new DvrMissingStorageErrorFragment();
144         }
145     }
146 
147     /** A dialog fragment to show error message when there is no enough free space to record. */
148     public static class DvrNoFreeSpaceErrorDialogFragment extends DvrGuidedStepDialogFragment {
149         @Override
onCreateGuidedStepFragment()150         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
151             return new DvrGuidedStepFragment.DvrNoFreeSpaceErrorFragment();
152         }
153     }
154 
155     /**
156      * A dialog fragment to show error message when the current storage is too small to support DVR
157      */
158     public static class DvrSmallSizedStorageErrorDialogFragment
159             extends DvrGuidedStepDialogFragment {
160         @Override
onCreateGuidedStepFragment()161         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
162             return new DvrGuidedStepFragment.DvrSmallSizedStorageErrorFragment();
163         }
164     }
165 
166     /** A dialog fragment for {@link DvrStopRecordingFragment}. */
167     public static class DvrStopRecordingDialogFragment extends DvrGuidedStepDialogFragment {
168         @Override
onCreateGuidedStepFragment()169         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
170             return new DvrStopRecordingFragment();
171         }
172     }
173 
174     /** A dialog fragment for {@link DvrAlreadyScheduledFragment}. */
175     public static class DvrAlreadyScheduledDialogFragment extends DvrGuidedStepDialogFragment {
176         @Override
onCreateGuidedStepFragment()177         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
178             return new DvrAlreadyScheduledFragment();
179         }
180     }
181 
182     /** A dialog fragment for {@link DvrAlreadyRecordedFragment}. */
183     public static class DvrAlreadyRecordedDialogFragment extends DvrGuidedStepDialogFragment {
184         @Override
onCreateGuidedStepFragment()185         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
186             return new DvrAlreadyRecordedFragment();
187         }
188     }
189 
190     /** A dialog fragment for {@link DvrFutureProgramInfoFragment}. */
191     public static class DvrFutureProgramInfoDialogFragment extends DvrGuidedStepDialogFragment {
192         @Override
onCreateGuidedStepFragment()193         protected DvrGuidedStepFragment onCreateGuidedStepFragment() {
194             return new DvrFutureProgramInfoFragment();
195         }
196     }
197 }
198