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 Chalko
21d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalkoimport com.android.tv.data.Program;
226ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.dvr.data.ScheduledRecording;
236ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.dvr.data.ScheduledRecording.Builder;
246ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.dvr.ui.DvrUiHelper;
25d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
26d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko/**
27d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko * A class for the episodic program.
28d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko */
296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoclass EpisodicProgramRow extends ScheduleRow {
30d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    private final String mInputId;
31d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    private final Program mProgram;
32d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
33d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public EpisodicProgramRow(String inputId, Program program, ScheduledRecording recording,
34d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko            SchedulesHeaderRow headerRow) {
35d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        super(recording, headerRow);
36d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        mInputId = inputId;
37d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        mProgram = program;
38d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
39d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
40d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    /**
41d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko     * Returns the program.
42d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko     */
43d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public Program getProgram() {
44d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram;
45d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
46d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
47d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
48d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public long getChannelId() {
49d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getChannelId();
50d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
51d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
52d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
53d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public long getStartTimeMs() {
54d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getStartTimeUtcMillis();
55d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
56d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
57d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
58d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public long getEndTimeMs() {
59d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getEndTimeUtcMillis();
60d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
61d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
62d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
63d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public Builder createNewScheduleBuilder() {
64d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return ScheduledRecording.builder(mInputId, mProgram);
65d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
66d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
67d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
68d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public String getProgramTitleWithEpisodeNumber(Context context) {
696ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko        return DvrUiHelper.getStyledTitleWithEpisodeNumber(context, mProgram, 0).toString();
70d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
71d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
72d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
73d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public String getEpisodeDisplayTitle(Context context) {
74d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return mProgram.getEpisodeDisplayTitle(context);
75d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
76d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
77d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
78d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public boolean matchSchedule(ScheduledRecording schedule) {
79d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return schedule.getType() == ScheduledRecording.TYPE_PROGRAM
80d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko                && mProgram.getId() == schedule.getProgramId();
81d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
82d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko
83d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    @Override
84d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    public String toString() {
85d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko        return super.toString()
86d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko                + "(inputId=" + mInputId
87d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko                + ",program=" + mProgram
88d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko                + ")";
89d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko    }
90d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko}
91