16ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko/* 26ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Copyright (C) 2016 The Android Open Source Project 36ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 46ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 56ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * you may not use this file except in compliance with the License. 66ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * You may obtain a copy of the License at 76ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 86ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * http://www.apache.org/licenses/LICENSE-2.0 96ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 106ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Unless required by applicable law or agreed to in writing, software 116ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 126ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * See the License for the specific language governing permissions and 146ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * limitations under the License 156ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 166ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkopackage com.android.tv.dvr.ui.browse; 186ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 196ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.content.Context; 206ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.media.tv.TvContract; 216ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.support.annotation.Nullable; 226ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.text.TextUtils; 236ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 246ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.R; 256ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.TvApplication; 266ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.data.Channel; 276ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.dvr.data.RecordedProgram; 286ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.dvr.data.ScheduledRecording; 296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.dvr.data.SeriesRecording; 306ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.dvr.ui.DvrUiHelper; 316ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 326ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko/** 336ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * A class for details content. 346ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 356ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoclass DetailsContent { 366ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** Constant for invalid time. */ 376ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public static final long INVALID_TIME = -1; 386ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 396ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private CharSequence mTitle; 406ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private long mStartTimeUtcMillis; 416ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private long mEndTimeUtcMillis; 426ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mDescription; 436ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mLogoImageUri; 446ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mBackgroundImageUri; 456ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private boolean mUsingChannelLogo; 466ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 476ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko static DetailsContent createFromRecordedProgram(Context context, 486ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko RecordedProgram recordedProgram) { 496ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return new DetailsContent.Builder() 506ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setChannelId(recordedProgram.getChannelId()) 516ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setProgramTitle(recordedProgram.getTitle()) 526ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setSeasonNumber(recordedProgram.getSeasonNumber()) 536ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setEpisodeNumber(recordedProgram.getEpisodeNumber()) 546ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setStartTimeUtcMillis(recordedProgram.getStartTimeUtcMillis()) 556ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setEndTimeUtcMillis(recordedProgram.getEndTimeUtcMillis()) 566ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setDescription(TextUtils.isEmpty(recordedProgram.getLongDescription()) 576ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko ? recordedProgram.getDescription() : recordedProgram.getLongDescription()) 586ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setPosterArtUri(recordedProgram.getPosterArtUri()) 596ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setThumbnailUri(recordedProgram.getThumbnailUri()) 606ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .build(context); 616ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 626ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 636ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko static DetailsContent createFromSeriesRecording(Context context, 646ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko SeriesRecording seriesRecording) { 656ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return new DetailsContent.Builder() 666ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setChannelId(seriesRecording.getChannelId()) 676ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setTitle(seriesRecording.getTitle()) 686ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setDescription(TextUtils.isEmpty(seriesRecording.getLongDescription()) 696ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko ? seriesRecording.getDescription() : seriesRecording.getLongDescription()) 706ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setPosterArtUri(seriesRecording.getPosterUri()) 716ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setThumbnailUri(seriesRecording.getPhotoUri()) 726ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .build(context); 736ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 746ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 756ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko static DetailsContent createFromScheduledRecording(Context context, 766ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko ScheduledRecording scheduledRecording) { 776ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko Channel channel = TvApplication.getSingletons(context).getChannelDataManager() 786ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .getChannel(scheduledRecording.getChannelId()); 796ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko String description = !TextUtils.isEmpty(scheduledRecording.getProgramDescription()) ? 806ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko scheduledRecording.getProgramDescription() 816ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko : scheduledRecording.getProgramLongDescription(); 826ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (TextUtils.isEmpty(description)) { 836ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko description = channel != null ? channel.getDescription() : null; 846ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 856ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return new DetailsContent.Builder() 866ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setChannelId(scheduledRecording.getChannelId()) 876ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setProgramTitle(scheduledRecording.getProgramTitle()) 886ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setSeasonNumber(scheduledRecording.getSeasonNumber()) 896ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setEpisodeNumber(scheduledRecording.getEpisodeNumber()) 906ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setStartTimeUtcMillis(scheduledRecording.getStartTimeMs()) 916ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setEndTimeUtcMillis(scheduledRecording.getEndTimeMs()) 926ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setDescription(description) 936ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setPosterArtUri(scheduledRecording.getProgramPosterArtUri()) 946ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .setThumbnailUri(scheduledRecording.getProgramThumbnailUri()) 956ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .build(context); 966ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 976ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 986ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private DetailsContent() { } 996ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1006ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1016ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Returns title. 1026ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1036ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public CharSequence getTitle() { 1046ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mTitle; 1056ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1066ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1076ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1086ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Returns start time. 1096ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1106ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public long getStartTimeUtcMillis() { 1116ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mStartTimeUtcMillis; 1126ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1136ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1146ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1156ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Returns end time. 1166ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public long getEndTimeUtcMillis() { 1186ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mEndTimeUtcMillis; 1196ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1206ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1216ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1226ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Returns description. 1236ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1246ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public String getDescription() { 1256ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mDescription; 1266ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1276ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1286ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Returns Logo image URI as a String. 1306ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1316ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public String getLogoImageUri() { 1326ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mLogoImageUri; 1336ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1346ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1356ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1366ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Returns background image URI as a String. 1376ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1386ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public String getBackgroundImageUri() { 1396ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mBackgroundImageUri; 1406ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1416ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1426ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1436ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Returns if image URIs are from its channels' logo. 1446ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1456ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public boolean isUsingChannelLogo() { 1466ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mUsingChannelLogo; 1476ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1486ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1496ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1506ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Copies other details content. 1516ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1526ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public void copyFrom(DetailsContent other) { 1536ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (this == other) { 1546ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return; 1556ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1566ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mTitle = other.mTitle; 1576ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mStartTimeUtcMillis = other.mStartTimeUtcMillis; 1586ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mEndTimeUtcMillis = other.mEndTimeUtcMillis; 1596ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDescription = other.mDescription; 1606ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mLogoImageUri = other.mLogoImageUri; 1616ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mBackgroundImageUri = other.mBackgroundImageUri; 1626ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mUsingChannelLogo = other.mUsingChannelLogo; 1636ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1646ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1656ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1666ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * A class for building details content. 1676ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1686ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public static final class Builder { 1696ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private final DetailsContent mDetailsContent; 1706ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1716ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private long mChannelId; 1726ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mProgramTitle; 1736ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mSeasonNumber; 1746ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mEpisodeNumber; 1756ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mPosterArtUri; 1766ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private String mThumbnailUri; 1776ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1786ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Builder() { 1796ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent = new DetailsContent(); 1806ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mStartTimeUtcMillis = INVALID_TIME; 1816ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mEndTimeUtcMillis = INVALID_TIME; 1826ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1836ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1846ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1856ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Sets title. 1866ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1876ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Builder setTitle(CharSequence title) { 1886ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mTitle = title; 1896ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 1906ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1916ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1926ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 1936ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Sets start time. 1946ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 1956ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Builder setStartTimeUtcMillis(long startTimeUtcMillis) { 1966ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mStartTimeUtcMillis = startTimeUtcMillis; 1976ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 1986ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1996ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2006ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 2016ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Sets end time. 2026ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 2036ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Builder setEndTimeUtcMillis(long endTimeUtcMillis) { 2046ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mEndTimeUtcMillis = endTimeUtcMillis; 2056ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2066ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2076ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2086ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 2096ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Sets description. 2106ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 2116ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Builder setDescription(String description) { 2126ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mDescription = description; 2136ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2146ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2156ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2166ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 2176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Sets logo image URI as a String. 2186ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 2196ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Builder setLogoImageUri(String logoImageUri) { 2206ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mLogoImageUri = logoImageUri; 2216ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2226ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2236ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2246ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 2256ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Sets background image URI as a String. 2266ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 2276ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public Builder setBackgroundImageUri(String backgroundImageUri) { 2286ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mBackgroundImageUri = backgroundImageUri; 2296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2306ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2316ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2326ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private Builder setProgramTitle(String programTitle) { 2336ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mProgramTitle = programTitle; 2346ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2356ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2366ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2376ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private Builder setSeasonNumber(String seasonNumber) { 2386ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mSeasonNumber = seasonNumber; 2396ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2406ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2416ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2426ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private Builder setEpisodeNumber(String episodeNumber) { 2436ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mEpisodeNumber = episodeNumber; 2446ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2456ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2466ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2476ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private Builder setChannelId(long channelId) { 2486ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mChannelId = channelId; 2496ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2506ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2516ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2526ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private Builder setPosterArtUri(String posterArtUri) { 2536ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mPosterArtUri = posterArtUri; 2546ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2556ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2566ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2576ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private Builder setThumbnailUri(String thumbnailUri) { 2586ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mThumbnailUri = thumbnailUri; 2596ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return this; 2606ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2616ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2626ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private void createStyledTitle(Context context, Channel channel) { 2636ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko CharSequence title = DvrUiHelper.getStyledTitleWithEpisodeNumber(context, 2646ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mProgramTitle, mSeasonNumber, mEpisodeNumber, 2656ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko R.style.text_appearance_card_view_episode_number); 2666ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (TextUtils.isEmpty(title)) { 2676ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mTitle = channel != null ? channel.getDisplayName() 2686ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko : context.getResources().getString(R.string.no_program_information); 2696ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } else { 2706ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mTitle = title; 2716ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2726ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2736ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2746ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private void createImageUris(@Nullable Channel channel) { 2756ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mLogoImageUri = null; 2766ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mBackgroundImageUri = null; 2776ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mUsingChannelLogo = false; 2786ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (!TextUtils.isEmpty(mPosterArtUri) && !TextUtils.isEmpty(mThumbnailUri)) { 2796ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mLogoImageUri = mPosterArtUri; 2806ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mBackgroundImageUri = mThumbnailUri; 2816ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } else if (!TextUtils.isEmpty(mPosterArtUri)) { 2826ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // thumbnailUri is empty 2836ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mLogoImageUri = mPosterArtUri; 2846ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mBackgroundImageUri = mPosterArtUri; 2856ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } else if (!TextUtils.isEmpty(mThumbnailUri)) { 2866ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // posterArtUri is empty 2876ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mLogoImageUri = mThumbnailUri; 2886ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mBackgroundImageUri = mThumbnailUri; 2896ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2906ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (TextUtils.isEmpty(mDetailsContent.mLogoImageUri) && channel != null) { 2916ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko String channelLogoUri = TvContract.buildChannelLogoUri(channel.getId()) 2926ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .toString(); 2936ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mLogoImageUri = channelLogoUri; 2946ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mBackgroundImageUri = channelLogoUri; 2956ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDetailsContent.mUsingChannelLogo = true; 2966ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2976ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 2986ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 2996ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko /** 3006ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Builds details content. 3016ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 3026ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public DetailsContent build(Context context) { 3036ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko Channel channel = TvApplication.getSingletons(context).getChannelDataManager() 3046ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko .getChannel(mChannelId); 3056ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (mDetailsContent.mTitle == null) { 3066ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko createStyledTitle(context, channel); 3076ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 3086ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (mDetailsContent.mBackgroundImageUri == null 3096ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko && mDetailsContent.mLogoImageUri == null) { 3106ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko createImageUris(channel); 3116ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 3126ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko DetailsContent detailsContent = new DetailsContent(); 3136ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko detailsContent.copyFrom(mDetailsContent); 3146ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return detailsContent; 3156ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 3166ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 3176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko}