/* * 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.browse; import android.media.tv.TvContract; import android.support.annotation.Nullable; import android.text.TextUtils; import com.android.tv.data.BaseProgram; import com.android.tv.data.Channel; /** * A class for details content. */ class DetailsContent { /** Constant for invalid time. */ public static final long INVALID_TIME = -1; private CharSequence mTitle; private long mStartTimeUtcMillis; private long mEndTimeUtcMillis; private String mDescription; private String mLogoImageUri; private String mBackgroundImageUri; private DetailsContent() { } /** * Returns title. */ public CharSequence getTitle() { return mTitle; } /** * Returns start time. */ public long getStartTimeUtcMillis() { return mStartTimeUtcMillis; } /** * Returns end time. */ public long getEndTimeUtcMillis() { return mEndTimeUtcMillis; } /** * Returns description. */ public String getDescription() { return mDescription; } /** * Returns Logo image URI as a String. */ public String getLogoImageUri() { return mLogoImageUri; } /** * Returns background image URI as a String. */ public String getBackgroundImageUri() { return mBackgroundImageUri; } /** * Copies other details content. */ public void copyFrom(DetailsContent other) { if (this == other) { return; } mTitle = other.mTitle; mStartTimeUtcMillis = other.mStartTimeUtcMillis; mEndTimeUtcMillis = other.mEndTimeUtcMillis; mDescription = other.mDescription; mLogoImageUri = other.mLogoImageUri; mBackgroundImageUri = other.mBackgroundImageUri; } /** * A class for building details content. */ public static final class Builder { private final DetailsContent mDetailsContent; public Builder() { mDetailsContent = new DetailsContent(); mDetailsContent.mStartTimeUtcMillis = INVALID_TIME; mDetailsContent.mEndTimeUtcMillis = INVALID_TIME; } /** * Sets title. */ public Builder setTitle(CharSequence title) { mDetailsContent.mTitle = title; return this; } /** * Sets start time. */ public Builder setStartTimeUtcMillis(long startTimeUtcMillis) { mDetailsContent.mStartTimeUtcMillis = startTimeUtcMillis; return this; } /** * Sets end time. */ public Builder setEndTimeUtcMillis(long endTimeUtcMillis) { mDetailsContent.mEndTimeUtcMillis = endTimeUtcMillis; return this; } /** * Sets description. */ public Builder setDescription(String description) { mDetailsContent.mDescription = description; return this; } /** * Sets logo image URI as a String. */ public Builder setLogoImageUri(String logoImageUri) { mDetailsContent.mLogoImageUri = logoImageUri; return this; } /** * Sets background image URI as a String. */ public Builder setBackgroundImageUri(String backgroundImageUri) { mDetailsContent.mBackgroundImageUri = backgroundImageUri; return this; } /** * Sets background image and logo image URI from program and channel. */ public Builder setImageUris(@Nullable BaseProgram program, @Nullable Channel channel) { if (program != null) { return setImageUris(program.getPosterArtUri(), program.getThumbnailUri(), channel); } else { return setImageUris(null, null, channel); } } /** * Sets background image and logo image URI and channel is used for fallback images. */ public Builder setImageUris(@Nullable String posterArtUri, @Nullable String thumbnailUri, @Nullable Channel channel) { mDetailsContent.mLogoImageUri = null; mDetailsContent.mBackgroundImageUri = null; if (!TextUtils.isEmpty(posterArtUri) && !TextUtils.isEmpty(thumbnailUri)) { mDetailsContent.mLogoImageUri = posterArtUri; mDetailsContent.mBackgroundImageUri = thumbnailUri; } else if (!TextUtils.isEmpty(posterArtUri)) { // thumbnailUri is empty mDetailsContent.mLogoImageUri = posterArtUri; mDetailsContent.mBackgroundImageUri = posterArtUri; } else if (!TextUtils.isEmpty(thumbnailUri)) { // posterArtUri is empty mDetailsContent.mLogoImageUri = thumbnailUri; mDetailsContent.mBackgroundImageUri = thumbnailUri; } if (TextUtils.isEmpty(mDetailsContent.mLogoImageUri) && channel != null) { String channelLogoUri = TvContract.buildChannelLogoUri(channel.getId()) .toString(); mDetailsContent.mLogoImageUri = channelLogoUri; mDetailsContent.mBackgroundImageUri = channelLogoUri; } return this; } /** * Builds details content. */ public DetailsContent build() { DetailsContent detailsContent = new DetailsContent(); detailsContent.copyFrom(mDetailsContent); return detailsContent; } } }