/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.tv.dvr.ui; import android.annotation.TargetApi; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.text.format.DateUtils; import androidx.leanback.app.GuidedStepFragment; import androidx.leanback.widget.GuidanceStylist.Guidance; import androidx.leanback.widget.GuidedAction; import com.android.tv.R; import com.android.tv.TvSingletons; import com.android.tv.common.SoftPreconditions; import com.android.tv.common.flags.DvrFlags; import com.android.tv.data.ProgramImpl; import com.android.tv.dvr.DvrManager; import com.android.tv.dvr.data.ScheduledRecording; import com.android.tv.dvr.data.SeriesRecording; import com.android.tv.dvr.ui.DvrConflictFragment.DvrProgramConflictFragment; import java.util.Collections; import java.util.List; import javax.inject.Inject; import dagger.android.AndroidInjection; /** * A fragment which asks the user the type of the recording. * *
The program should be episodic and the series recording should not had been created yet.
*/
@TargetApi(Build.VERSION_CODES.N)
public class DvrScheduleFragment extends DvrGuidedStepFragment {
/** Key for the whether to add the current program to series. Type: boolean */
public static final String KEY_ADD_CURRENT_PROGRAM_TO_SERIES = "add_current_program_to_series";
private static final String TAG = "DvrScheduleFragment";
private static final int ACTION_RECORD_EPISODE = 1;
private static final int ACTION_RECORD_SERIES = 2;
private ProgramImpl mProgram;
private boolean mAddCurrentProgramToSeries;
@Inject DvrFlags mDvrFlags;
@Override
public void onCreate(Bundle savedInstanceState) {
Bundle args = getArguments();
if (args != null) {
mProgram = args.getParcelable(DvrHalfSizedDialogFragment.KEY_PROGRAM);
mAddCurrentProgramToSeries = args.getBoolean(KEY_ADD_CURRENT_PROGRAM_TO_SERIES, false);
}
DvrManager dvrManager = TvSingletons.getSingletons(getContext()).getDvrManager();
SoftPreconditions.checkArgument(
mProgram != null && mProgram.isEpisodic(),
TAG,
"The program should be episodic: %s ",
mProgram);
SeriesRecording seriesRecording = dvrManager.getSeriesRecording(mProgram);
SoftPreconditions.checkArgument(
seriesRecording == null || seriesRecording.isStopped(),
TAG,
"The series recording should be stopped or null: %s",
seriesRecording);
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Context context) {
AndroidInjection.inject(this);
super.onAttach(context);
}
@Override
public int onProvideTheme() {
return R.style.Theme_TV_Dvr_GuidedStep_Twoline_Action;
}
@NonNull
@Override
public Guidance onCreateGuidance(Bundle savedInstanceState) {
String title = getString(R.string.dvr_schedule_dialog_title);
Drawable icon = getResources().getDrawable(R.drawable.ic_dvr, null);
return new Guidance(title, null, null, icon);
}
@Override
public void onCreateActions(@NonNull List