| /* |
| * 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.app.Activity; |
| import android.app.AlertDialog; |
| import android.content.Context; |
| import android.content.DialogInterface; |
| import android.content.Intent; |
| import android.content.res.Resources; |
| import android.media.tv.TvContract; |
| import android.support.v17.leanback.widget.Presenter; |
| import android.text.TextUtils; |
| import android.view.View; |
| import android.view.ViewGroup; |
| |
| import java.util.List; |
| |
| import com.android.tv.MainActivity; |
| import com.android.tv.R; |
| import com.android.tv.TvApplication; |
| import com.android.tv.common.recording.RecordedProgram; |
| import com.android.tv.data.Channel; |
| import com.android.tv.data.ChannelDataManager; |
| import com.android.tv.dvr.DvrManager; |
| import com.android.tv.ui.DialogUtils; |
| import com.android.tv.util.Utils; |
| |
| /** |
| * Presents a {@link RecordedProgram} in the {@link DvrBrowseFragment}. |
| */ |
| public class RecordedProgramPresenter extends Presenter { |
| private final ChannelDataManager mChannelDataManager; |
| |
| public RecordedProgramPresenter(Context context) { |
| mChannelDataManager = TvApplication.getSingletons(context).getChannelDataManager(); |
| } |
| |
| @Override |
| public ViewHolder onCreateViewHolder(ViewGroup parent) { |
| Context context = parent.getContext(); |
| RecordingCardView view = new RecordingCardView(context); |
| return new ViewHolder(view); |
| } |
| |
| @Override |
| public void onBindViewHolder(ViewHolder viewHolder, Object o) { |
| final RecordedProgram recording = (RecordedProgram) o; |
| final RecordingCardView cardView = (RecordingCardView) viewHolder.view; |
| final Context context = viewHolder.view.getContext(); |
| final Resources resources = context.getResources(); |
| |
| Channel channel = mChannelDataManager.getChannel(recording.getChannelId()); |
| |
| if (!TextUtils.isEmpty(recording.getTitle())) { |
| cardView.setTitle(recording.getTitle()); |
| } else { |
| cardView.setTitle(resources.getString(R.string.dvr_msg_program_title_unknown)); |
| } |
| if (recording.getPosterArt() != null) { |
| cardView.setImageUri(recording.getPosterArt()); |
| } else if (recording.getThumbnail() != null) { |
| cardView.setImageUri(recording.getThumbnail()); |
| } else { |
| if (channel != null) { |
| cardView.setImageUri(TvContract.buildChannelLogoUri(channel.getId()).toString()); |
| } |
| } |
| cardView.setContent(Utils.getDurationString(context, recording.getStartTimeUtcMillis(), |
| recording.getEndTimeUtcMillis(), true)); |
| //TODO: replace with a detail card |
| viewHolder.view.setOnClickListener(new View.OnClickListener() { |
| @Override |
| public void onClick(View v) { |
| DialogUtils.showListDialog(v.getContext(), |
| new int[] { R.string.dvr_detail_play, R.string.dvr_detail_delete }, |
| new Runnable[] { |
| new Runnable() { |
| @Override |
| public void run() { |
| Intent intent = new Intent(context, MainActivity.class); |
| intent.putExtra(Utils.EXTRA_KEY_RECORDING_URI, |
| recording.getUri()); |
| context.startActivity(intent); |
| ((Activity) context).finish(); |
| } |
| }, |
| new Runnable() { |
| @Override |
| public void run() { |
| DvrManager dvrManager = TvApplication |
| .getSingletons(context).getDvrManager(); |
| dvrManager.removeRecordedProgram(recording); |
| } |
| }, |
| }); |
| } |
| }); |
| |
| } |
| |
| @Override |
| public void onUnbindViewHolder(ViewHolder viewHolder) { |
| final RecordingCardView cardView = (RecordingCardView) viewHolder.view; |
| cardView.reset(); |
| } |
| } |