aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/dvr/ui/DvrChannelRecordDurationOptionFragment.java
diff options
context:
space:
mode:
authorNick Chalko <nchalko@google.com>2016-08-31 16:00:31 -0700
committerNick Chalko <nchalko@google.com>2016-09-07 05:38:33 -0700
commit65fda1eaa94968bb55d5ded10dcb0b3f37fb05f2 (patch)
treeffc8e4c5a71c130d3782bf03e674f9d77ca77f72 /src/com/android/tv/dvr/ui/DvrChannelRecordDurationOptionFragment.java
parentad819718f80e796cf039f96537b5c8cd127c042b (diff)
downloadTV-65fda1eaa94968bb55d5ded10dcb0b3f37fb05f2.tar.gz
Sync to ub-tv-dev at http://ag/1415258
Bug: 30970843 Change-Id: I0aa43094d103de28956a3d9b56a594ea46a20543
Diffstat (limited to 'src/com/android/tv/dvr/ui/DvrChannelRecordDurationOptionFragment.java')
-rw-r--r--src/com/android/tv/dvr/ui/DvrChannelRecordDurationOptionFragment.java111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/com/android/tv/dvr/ui/DvrChannelRecordDurationOptionFragment.java b/src/com/android/tv/dvr/ui/DvrChannelRecordDurationOptionFragment.java
new file mode 100644
index 00000000..fe65eebd
--- /dev/null
+++ b/src/com/android/tv/dvr/ui/DvrChannelRecordDurationOptionFragment.java
@@ -0,0 +1,111 @@
+/*
+ * 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.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.v17.leanback.app.GuidedStepFragment;
+import android.support.v17.leanback.widget.GuidanceStylist.Guidance;
+import android.support.v17.leanback.widget.GuidedAction;
+
+import com.android.tv.R;
+import com.android.tv.TvApplication;
+import com.android.tv.common.SoftPreconditions;
+import com.android.tv.data.Channel;
+import com.android.tv.data.Program;
+import com.android.tv.dvr.DvrManager;
+import com.android.tv.dvr.ScheduledRecording;
+import com.android.tv.dvr.ui.DvrConflictFragment.DvrChannelRecordConflictFragment;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+public class DvrChannelRecordDurationOptionFragment extends DvrGuidedStepFragment {
+ private final List<Long> mDurations = new ArrayList<>();
+ private Channel mChannel;
+ private Program mProgram;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ Bundle args = getArguments();
+ if (args != null) {
+ long channelId = args.getLong(DvrHalfSizedDialogFragment.KEY_CHANNEL_ID);
+ mChannel = TvApplication.getSingletons(getContext()).getChannelDataManager()
+ .getChannel(channelId);
+ }
+ SoftPreconditions.checkArgument(mChannel != null);
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public Guidance onCreateGuidance(Bundle savedInstanceState) {
+ String title = getResources().getString(R.string.dvr_channel_record_duration_dialog_title);
+ Drawable icon = getResources().getDrawable(R.drawable.ic_dvr, null);
+ return new Guidance(title, null, null, icon);
+ }
+
+ @Override
+ public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
+ int actionId = -1;
+ mDurations.clear();
+ mDurations.add(TimeUnit.MINUTES.toMillis(10));
+ mDurations.add(TimeUnit.MINUTES.toMillis(30));
+ mDurations.add(TimeUnit.HOURS.toMillis(1));
+ mDurations.add(TimeUnit.HOURS.toMillis(3));
+
+ actions.add(new GuidedAction.Builder(getContext())
+ .id(++actionId)
+ .title(R.string.recording_start_dialog_10_min_duration)
+ .build());
+ actions.add(new GuidedAction.Builder(getContext())
+ .id(++actionId)
+ .title(R.string.recording_start_dialog_30_min_duration)
+ .build());
+ actions.add(new GuidedAction.Builder(getContext())
+ .id(++actionId)
+ .title(R.string.recording_start_dialog_1_hour_duration)
+ .build());
+ actions.add(new GuidedAction.Builder(getContext())
+ .id(++actionId)
+ .title(R.string.recording_start_dialog_3_hours_duration)
+ .build());
+ }
+
+ @Override
+ public void onGuidedActionClicked(GuidedAction action) {
+ DvrManager dvrManager = TvApplication.getSingletons(getContext()).getDvrManager();
+ long duration = mDurations.get((int) action.getId());
+ long startTimeMs = System.currentTimeMillis();
+ long endTimeMs = System.currentTimeMillis() + duration;
+ List<ScheduledRecording> conflicts = dvrManager.getConflictingSchedules(
+ mChannel.getId(), startTimeMs, endTimeMs);
+ dvrManager.addSchedule(mChannel, startTimeMs, endTimeMs);
+ if (conflicts.isEmpty()) {
+ dismissDialog();
+ } else {
+ GuidedStepFragment fragment = new DvrChannelRecordConflictFragment();
+ Bundle args = new Bundle();
+ args.putLong(DvrHalfSizedDialogFragment.KEY_CHANNEL_ID, mChannel.getId());
+ args.putLong(DvrHalfSizedDialogFragment.KEY_START_TIME_MS, startTimeMs);
+ args.putLong(DvrHalfSizedDialogFragment.KEY_END_TIME_MS, endTimeMs);
+ fragment.setArguments(args);
+ GuidedStepFragment.add(getFragmentManager(), fragment,
+ R.id.halfsized_dialog_host);
+ }
+ }
+}