1d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko/*
2d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * Copyright (C) 2016 The Android Open Source Project
3d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko *
4d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
5d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * you may not use this file except in compliance with the License.
6d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * You may obtain a copy of the License at
7d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko *
8d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
9d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko *
10d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * Unless required by applicable law or agreed to in writing, software
11d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
12d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * See the License for the specific language governing permissions and
14d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * limitations under the License
15d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko */
16d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
17d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalkopackage com.android.tv.dvr.ui.list;
18d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
19d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalkoimport android.content.Context;
20d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalkoimport com.android.tv.data.Program;
21633eb826b8c97731dfc5ef12c7bf78a63734275dNick Chalkoimport com.android.tv.dvr.data.ScheduledRecording;
22633eb826b8c97731dfc5ef12c7bf78a63734275dNick Chalkoimport com.android.tv.dvr.data.ScheduledRecording.Builder;
23633eb826b8c97731dfc5ef12c7bf78a63734275dNick Chalkoimport com.android.tv.dvr.ui.DvrUiHelper;
24d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
2595961816a768da387f0b5523cf4363ace2044089Nick Chalko/** A class for the episodic program. */
26633eb826b8c97731dfc5ef12c7bf78a63734275dNick Chalkoclass EpisodicProgramRow extends ScheduleRow {
27d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    private final String mInputId;
28d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    private final Program mProgram;
29d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
3095961816a768da387f0b5523cf4363ace2044089Nick Chalko    public EpisodicProgramRow(
3195961816a768da387f0b5523cf4363ace2044089Nick Chalko            String inputId,
3295961816a768da387f0b5523cf4363ace2044089Nick Chalko            Program program,
3395961816a768da387f0b5523cf4363ace2044089Nick Chalko            ScheduledRecording recording,
34d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko            SchedulesHeaderRow headerRow) {
35d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        super(recording, headerRow);
36d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        mInputId = inputId;
37d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        mProgram = program;
38d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
39d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
4095961816a768da387f0b5523cf4363ace2044089Nick Chalko    /** Returns the program. */
41d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public Program getProgram() {
42d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram;
43d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
44d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
45d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
46d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public long getChannelId() {
47d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getChannelId();
48d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
49d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
50d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
51d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public long getStartTimeMs() {
52d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getStartTimeUtcMillis();
53d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
54d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
55d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
56d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public long getEndTimeMs() {
57d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getEndTimeUtcMillis();
58d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
59d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
60d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
61d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public Builder createNewScheduleBuilder() {
62d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return ScheduledRecording.builder(mInputId, mProgram);
63d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
64d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
65d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
66d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public String getProgramTitleWithEpisodeNumber(Context context) {
67633eb826b8c97731dfc5ef12c7bf78a63734275dNick Chalko        return DvrUiHelper.getStyledTitleWithEpisodeNumber(context, mProgram, 0).toString();
68d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
69d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
70d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
71d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public String getEpisodeDisplayTitle(Context context) {
72d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getEpisodeDisplayTitle(context);
73d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
74d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
75d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
76d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public boolean matchSchedule(ScheduledRecording schedule) {
77d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return schedule.getType() == ScheduledRecording.TYPE_PROGRAM
78d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko                && mProgram.getId() == schedule.getProgramId();
79d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
80d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
81d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
82d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public String toString() {
8395961816a768da387f0b5523cf4363ace2044089Nick Chalko        return super.toString() + "(inputId=" + mInputId + ",program=" + mProgram + ")";
84d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
85d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko}
86