aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/dvr/ui/DvrBrowseFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/tv/dvr/ui/DvrBrowseFragment.java')
-rw-r--r--src/com/android/tv/dvr/ui/DvrBrowseFragment.java601
1 files changed, 0 insertions, 601 deletions
diff --git a/src/com/android/tv/dvr/ui/DvrBrowseFragment.java b/src/com/android/tv/dvr/ui/DvrBrowseFragment.java
deleted file mode 100644
index a6dd31d1..00000000
--- a/src/com/android/tv/dvr/ui/DvrBrowseFragment.java
+++ /dev/null
@@ -1,601 +0,0 @@
-/*
- * Copyright (C) 2015 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.content.Context;
-import android.media.tv.TvInputManager.TvInputCallback;
-import android.os.Bundle;
-import android.os.Handler;
-import android.support.v17.leanback.app.BrowseFragment;
-import android.support.v17.leanback.widget.ArrayObjectAdapter;
-import android.support.v17.leanback.widget.ClassPresenterSelector;
-import android.support.v17.leanback.widget.HeaderItem;
-import android.support.v17.leanback.widget.ListRow;
-import android.support.v17.leanback.widget.ListRowPresenter;
-import android.support.v17.leanback.widget.Presenter;
-import android.support.v17.leanback.widget.TitleViewAdapter;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.tv.ApplicationSingletons;
-import com.android.tv.R;
-import com.android.tv.TvApplication;
-import com.android.tv.data.GenreItems;
-import com.android.tv.dvr.DvrDataManager;
-import com.android.tv.dvr.DvrDataManager.OnDvrScheduleLoadFinishedListener;
-import com.android.tv.dvr.DvrDataManager.OnRecordedProgramLoadFinishedListener;
-import com.android.tv.dvr.DvrDataManager.RecordedProgramListener;
-import com.android.tv.dvr.DvrDataManager.ScheduledRecordingListener;
-import com.android.tv.dvr.DvrDataManager.SeriesRecordingListener;
-import com.android.tv.dvr.DvrScheduleManager;
-import com.android.tv.dvr.RecordedProgram;
-import com.android.tv.dvr.ScheduledRecording;
-import com.android.tv.dvr.SeriesRecording;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * {@link BrowseFragment} for DVR functions.
- */
-public class DvrBrowseFragment extends BrowseFragment implements
- RecordedProgramListener, ScheduledRecordingListener, SeriesRecordingListener,
- OnDvrScheduleLoadFinishedListener, OnRecordedProgramLoadFinishedListener {
- private static final String TAG = "DvrBrowseFragment";
- private static final boolean DEBUG = false;
-
- private static final int MAX_RECENT_ITEM_COUNT = 10;
- private static final int MAX_SCHEDULED_ITEM_COUNT = 4;
-
- private RecordedProgramAdapter mRecentAdapter;
- private ScheduleAdapter mScheduleAdapter;
- private SeriesAdapter mSeriesAdapter;
- private RecordedProgramAdapter[] mGenreAdapters =
- new RecordedProgramAdapter[GenreItems.getGenreCount() + 1];
- private ListRow mRecentRow;
- private ListRow mSeriesRow;
- private ListRow[] mGenreRows = new ListRow[GenreItems.getGenreCount() + 1];
- private List<String> mGenreLabels;
- private DvrDataManager mDvrDataManager;
- private DvrScheduleManager mDvrScheudleManager;
- private ArrayObjectAdapter mRowsAdapter;
- private ClassPresenterSelector mPresenterSelector;
- private final HashMap<String, RecordedProgram> mSeriesId2LatestProgram = new HashMap<>();
- private final Handler mHandler = new Handler();
-
- private final Comparator<Object> RECORDED_PROGRAM_COMPARATOR = new Comparator<Object>() {
- @Override
- public int compare(Object lhs, Object rhs) {
- if (lhs instanceof SeriesRecording) {
- lhs = mSeriesId2LatestProgram.get(((SeriesRecording) lhs).getSeriesId());
- }
- if (rhs instanceof SeriesRecording) {
- rhs = mSeriesId2LatestProgram.get(((SeriesRecording) rhs).getSeriesId());
- }
- if (lhs instanceof RecordedProgram) {
- if (rhs instanceof RecordedProgram) {
- return RecordedProgram.START_TIME_THEN_ID_COMPARATOR.reversed()
- .compare((RecordedProgram) lhs, (RecordedProgram) rhs);
- } else {
- return -1;
- }
- } else if (rhs instanceof RecordedProgram) {
- return 1;
- } else {
- return 0;
- }
- }
- };
-
- private final Comparator<Object> SCHEDULE_COMPARATOR = new Comparator<Object>() {
- @Override
- public int compare(Object lhs, Object rhs) {
- if (lhs instanceof ScheduledRecording) {
- if (rhs instanceof ScheduledRecording) {
- return ScheduledRecording.START_TIME_THEN_PRIORITY_THEN_ID_COMPARATOR
- .compare((ScheduledRecording) lhs, (ScheduledRecording) rhs);
- } else {
- return -1;
- }
- } else if (rhs instanceof ScheduledRecording) {
- return 1;
- } else {
- return 0;
- }
- }
- };
-
- private final DvrScheduleManager.OnConflictStateChangeListener mOnConflictStateChangeListener =
- new DvrScheduleManager.OnConflictStateChangeListener() {
- @Override
- public void onConflictStateChange(boolean conflict, ScheduledRecording... schedules) {
- if (mScheduleAdapter != null) {
- for (ScheduledRecording schedule : schedules) {
- onScheduledRecordingStatusChanged(schedule);
- }
- }
- }
- };
-
- private final Runnable mUpdateRowsRunnable = new Runnable() {
- @Override
- public void run() {
- updateRows();
- }
- };
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- if (DEBUG) Log.d(TAG, "onCreate");
- super.onCreate(savedInstanceState);
- Context context = getContext();
- ApplicationSingletons singletons = TvApplication.getSingletons(context);
- mDvrDataManager = singletons.getDvrDataManager();
- mDvrScheudleManager = singletons.getDvrScheduleManager();
- mPresenterSelector = new ClassPresenterSelector()
- .addClassPresenter(ScheduledRecording.class,
- new ScheduledRecordingPresenter(context))
- .addClassPresenter(RecordedProgram.class, new RecordedProgramPresenter(context))
- .addClassPresenter(SeriesRecording.class, new SeriesRecordingPresenter(context))
- .addClassPresenter(FullScheduleCardHolder.class, new FullSchedulesCardPresenter());
- mGenreLabels = new ArrayList<>(Arrays.asList(GenreItems.getLabels(context)));
- mGenreLabels.add(getString(R.string.dvr_main_others));
- setupUiElements();
- setupAdapters();
- mDvrScheudleManager.addOnConflictStateChangeListener(mOnConflictStateChangeListener);
- prepareEntranceTransition();
- if (mDvrDataManager.isInitialized()) {
- startEntranceTransition();
- } else {
- if (!mDvrDataManager.isDvrScheduleLoadFinished()) {
- mDvrDataManager.addDvrScheduleLoadFinishedListener(this);
- }
- if (!mDvrDataManager.isRecordedProgramLoadFinished()) {
- mDvrDataManager.addRecordedProgramLoadFinishedListener(this);
- }
- }
- }
-
- @Override
- public void onDestroy() {
- if (DEBUG) Log.d(TAG, "onDestroy");
- mHandler.removeCallbacks(mUpdateRowsRunnable);
- mDvrScheudleManager.removeOnConflictStateChangeListener(mOnConflictStateChangeListener);
- mDvrDataManager.removeRecordedProgramListener(this);
- mDvrDataManager.removeScheduledRecordingListener(this);
- mDvrDataManager.removeSeriesRecordingListener(this);
- mDvrDataManager.removeDvrScheduleLoadFinishedListener(this);
- mDvrDataManager.removeRecordedProgramLoadFinishedListener(this);
- mRowsAdapter.clear();
- mSeriesId2LatestProgram.clear();
- for (Presenter presenter : mPresenterSelector.getPresenters()) {
- if (presenter instanceof DvrItemPresenter) {
- ((DvrItemPresenter) presenter).unbindAllViewHolders();
- }
- }
- super.onDestroy();
- }
-
- @Override
- public void onDvrScheduleLoadFinished() {
- List<ScheduledRecording> scheduledRecordings = mDvrDataManager.getAllScheduledRecordings();
- onScheduledRecordingAdded(ScheduledRecording.toArray(scheduledRecordings));
- List<SeriesRecording> seriesRecordings = mDvrDataManager.getSeriesRecordings();
- onSeriesRecordingAdded(SeriesRecording.toArray(seriesRecordings));
- if (mDvrDataManager.isInitialized()) {
- startEntranceTransition();
- }
- mDvrDataManager.removeDvrScheduleLoadFinishedListener(this);
- }
-
- @Override
- public void onRecordedProgramLoadFinished() {
- for (RecordedProgram recordedProgram : mDvrDataManager.getRecordedPrograms()) {
- handleRecordedProgramAdded(recordedProgram, true);
- }
- updateRows();
- if (mDvrDataManager.isInitialized()) {
- startEntranceTransition();
- }
- mDvrDataManager.removeRecordedProgramLoadFinishedListener(this);
- }
-
- @Override
- public void onRecordedProgramsAdded(RecordedProgram... recordedPrograms) {
- for (RecordedProgram recordedProgram : recordedPrograms) {
- handleRecordedProgramAdded(recordedProgram, true);
- }
- postUpdateRows();
- }
-
- @Override
- public void onRecordedProgramsChanged(RecordedProgram... recordedPrograms) {
- for (RecordedProgram recordedProgram : recordedPrograms) {
- handleRecordedProgramChanged(recordedProgram);
- }
- postUpdateRows();
- }
-
- @Override
- public void onRecordedProgramsRemoved(RecordedProgram... recordedPrograms) {
- for (RecordedProgram recordedProgram : recordedPrograms) {
- handleRecordedProgramRemoved(recordedProgram);
- }
- postUpdateRows();
- }
-
- // No need to call updateRows() during ScheduledRecordings' change because
- // the row for ScheduledRecordings is always displayed.
- @Override
- public void onScheduledRecordingAdded(ScheduledRecording... scheduledRecordings) {
- for (ScheduledRecording scheduleRecording : scheduledRecordings) {
- if (needToShowScheduledRecording(scheduleRecording)) {
- mScheduleAdapter.add(scheduleRecording);
- }
- }
- }
-
- @Override
- public void onScheduledRecordingRemoved(ScheduledRecording... scheduledRecordings) {
- for (ScheduledRecording scheduleRecording : scheduledRecordings) {
- mScheduleAdapter.remove(scheduleRecording);
- }
- }
-
- @Override
- public void onScheduledRecordingStatusChanged(ScheduledRecording... scheduledRecordings) {
- for (ScheduledRecording scheduleRecording : scheduledRecordings) {
- if (needToShowScheduledRecording(scheduleRecording)) {
- mScheduleAdapter.change(scheduleRecording);
- } else {
- mScheduleAdapter.removeWithId(scheduleRecording);
- }
- }
- }
-
- @Override
- public void onSeriesRecordingAdded(SeriesRecording... seriesRecordings) {
- handleSeriesRecordingsAdded(Arrays.asList(seriesRecordings));
- postUpdateRows();
- }
-
- @Override
- public void onSeriesRecordingRemoved(SeriesRecording... seriesRecordings) {
- handleSeriesRecordingsRemoved(Arrays.asList(seriesRecordings));
- postUpdateRows();
- }
-
- @Override
- public void onSeriesRecordingChanged(SeriesRecording... seriesRecordings) {
- handleSeriesRecordingsChanged(Arrays.asList(seriesRecordings));
- postUpdateRows();
- }
-
- // Workaround of b/29108300
- @Override
- public void showTitle(int flags) {
- flags &= ~TitleViewAdapter.SEARCH_VIEW_VISIBLE;
- super.showTitle(flags);
- }
-
- private void setupUiElements() {
- setBadgeDrawable(getActivity().getDrawable(R.drawable.ic_dvr_badge));
- setHeadersState(HEADERS_ENABLED);
- setHeadersTransitionOnBackEnabled(false);
- setBrandColor(getResources().getColor(R.color.program_guide_side_panel_background, null));
- }
-
- private void setupAdapters() {
- mRecentAdapter = new RecordedProgramAdapter(MAX_RECENT_ITEM_COUNT);
- mScheduleAdapter = new ScheduleAdapter(MAX_SCHEDULED_ITEM_COUNT);
- mSeriesAdapter = new SeriesAdapter();
- for (int i = 0; i < mGenreAdapters.length; i++) {
- mGenreAdapters[i] = new RecordedProgramAdapter();
- }
- // Schedule Recordings.
- List<ScheduledRecording> schedules = mDvrDataManager.getAllScheduledRecordings();
- onScheduledRecordingAdded(ScheduledRecording.toArray(schedules));
- mScheduleAdapter.addExtraItem(FullScheduleCardHolder.FULL_SCHEDULE_CARD_HOLDER);
- // Recorded Programs.
- for (RecordedProgram recordedProgram : mDvrDataManager.getRecordedPrograms()) {
- handleRecordedProgramAdded(recordedProgram, false);
- }
- // Series Recordings. Series recordings should be added after recorded programs, because
- // we build series recordings' latest program information while adding recorded programs.
- List<SeriesRecording> recordings = mDvrDataManager.getSeriesRecordings();
- handleSeriesRecordingsAdded(recordings);
- mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
- mRecentRow = new ListRow(new HeaderItem(
- getString(R.string.dvr_main_recent)), mRecentAdapter);
- mRowsAdapter.add(new ListRow(new HeaderItem(
- getString(R.string.dvr_main_scheduled)), mScheduleAdapter));
- mSeriesRow = new ListRow(new HeaderItem(
- getString(R.string.dvr_main_series)), mSeriesAdapter);
- updateRows();
- mDvrDataManager.addRecordedProgramListener(this);
- mDvrDataManager.addScheduledRecordingListener(this);
- mDvrDataManager.addSeriesRecordingListener(this);
- setAdapter(mRowsAdapter);
- }
-
- private void handleRecordedProgramAdded(RecordedProgram recordedProgram,
- boolean updateSeriesRecording) {
- mRecentAdapter.add(recordedProgram);
- String seriesId = recordedProgram.getSeriesId();
- SeriesRecording seriesRecording = null;
- if (seriesId != null) {
- seriesRecording = mDvrDataManager.getSeriesRecording(seriesId);
- RecordedProgram latestProgram = mSeriesId2LatestProgram.get(seriesId);
- if (latestProgram == null || RecordedProgram.START_TIME_THEN_ID_COMPARATOR
- .compare(latestProgram, recordedProgram) < 0) {
- mSeriesId2LatestProgram.put(seriesId, recordedProgram);
- if (updateSeriesRecording && seriesRecording != null) {
- onSeriesRecordingChanged(seriesRecording);
- }
- }
- }
- if (seriesRecording == null) {
- for (RecordedProgramAdapter adapter
- : getGenreAdapters(recordedProgram.getCanonicalGenres())) {
- adapter.add(recordedProgram);
- }
- }
- }
-
- private void handleRecordedProgramRemoved(RecordedProgram recordedProgram) {
- mRecentAdapter.remove(recordedProgram);
- String seriesId = recordedProgram.getSeriesId();
- if (seriesId != null) {
- SeriesRecording seriesRecording = mDvrDataManager.getSeriesRecording(seriesId);
- RecordedProgram latestProgram =
- mSeriesId2LatestProgram.get(recordedProgram.getSeriesId());
- if (latestProgram != null && latestProgram.getId() == recordedProgram.getId()) {
- if (seriesRecording != null) {
- updateLatestRecordedProgram(seriesRecording);
- onSeriesRecordingChanged(seriesRecording);
- }
- }
- }
- for (RecordedProgramAdapter adapter
- : getGenreAdapters(recordedProgram.getCanonicalGenres())) {
- adapter.remove(recordedProgram);
- }
- }
-
- private void handleRecordedProgramChanged(RecordedProgram recordedProgram) {
- mRecentAdapter.change(recordedProgram);
- String seriesId = recordedProgram.getSeriesId();
- SeriesRecording seriesRecording = null;
- if (seriesId != null) {
- seriesRecording = mDvrDataManager.getSeriesRecording(seriesId);
- RecordedProgram latestProgram = mSeriesId2LatestProgram.get(seriesId);
- if (latestProgram == null || RecordedProgram.START_TIME_THEN_ID_COMPARATOR
- .compare(latestProgram, recordedProgram) <= 0) {
- mSeriesId2LatestProgram.put(seriesId, recordedProgram);
- if (seriesRecording != null) {
- onSeriesRecordingChanged(seriesRecording);
- }
- } else if (latestProgram.getId() == recordedProgram.getId()) {
- if (seriesRecording != null) {
- updateLatestRecordedProgram(seriesRecording);
- onSeriesRecordingChanged(seriesRecording);
- }
- }
- }
- if (seriesRecording == null) {
- updateGenreAdapters(getGenreAdapters(
- recordedProgram.getCanonicalGenres()), recordedProgram);
- } else {
- updateGenreAdapters(new ArrayList<>(), recordedProgram);
- }
- }
-
- private void handleSeriesRecordingsAdded(List<SeriesRecording> seriesRecordings) {
- for (SeriesRecording seriesRecording : seriesRecordings) {
- mSeriesAdapter.add(seriesRecording);
- if (mSeriesId2LatestProgram.get(seriesRecording.getSeriesId()) != null) {
- for (RecordedProgramAdapter adapter
- : getGenreAdapters(seriesRecording.getCanonicalGenreIds())) {
- adapter.add(seriesRecording);
- }
- }
- }
- }
-
- private void handleSeriesRecordingsRemoved(List<SeriesRecording> seriesRecordings) {
- for (SeriesRecording seriesRecording : seriesRecordings) {
- mSeriesAdapter.remove(seriesRecording);
- for (RecordedProgramAdapter adapter
- : getGenreAdapters(seriesRecording.getCanonicalGenreIds())) {
- adapter.remove(seriesRecording);
- }
- }
- }
-
- private void handleSeriesRecordingsChanged(List<SeriesRecording> seriesRecordings) {
- for (SeriesRecording seriesRecording : seriesRecordings) {
- mSeriesAdapter.change(seriesRecording);
- if (mSeriesId2LatestProgram.get(seriesRecording.getSeriesId()) != null) {
- updateGenreAdapters(getGenreAdapters(
- seriesRecording.getCanonicalGenreIds()), seriesRecording);
- } else {
- // Remove series recording from all genre rows if it has no recorded program
- updateGenreAdapters(new ArrayList<>(), seriesRecording);
- }
- }
- }
-
- private List<RecordedProgramAdapter> getGenreAdapters(String[] genres) {
- List<RecordedProgramAdapter> result = new ArrayList<>();
- if (genres == null || genres.length == 0) {
- result.add(mGenreAdapters[mGenreAdapters.length - 1]);
- } else {
- for (String genre : genres) {
- int genreId = GenreItems.getId(genre);
- if(genreId >= mGenreAdapters.length) {
- Log.d(TAG, "Wrong Genre ID: " + genreId);
- } else {
- result.add(mGenreAdapters[genreId]);
- }
- }
- }
- return result;
- }
-
- private List<RecordedProgramAdapter> getGenreAdapters(int[] genreIds) {
- List<RecordedProgramAdapter> result = new ArrayList<>();
- if (genreIds == null || genreIds.length == 0) {
- result.add(mGenreAdapters[mGenreAdapters.length - 1]);
- } else {
- for (int genreId : genreIds) {
- if(genreId >= mGenreAdapters.length) {
- Log.d(TAG, "Wrong Genre ID: " + genreId);
- } else {
- result.add(mGenreAdapters[genreId]);
- }
- }
- }
- return result;
- }
-
- private void updateGenreAdapters(List<RecordedProgramAdapter> adapters, Object r) {
- for (RecordedProgramAdapter adapter : mGenreAdapters) {
- if (adapters.contains(adapter)) {
- adapter.change(r);
- } else {
- adapter.remove(r);
- }
- }
- }
-
- private void postUpdateRows() {
- mHandler.removeCallbacks(mUpdateRowsRunnable);
- mHandler.post(mUpdateRowsRunnable);
- }
-
- private void updateRows() {
- int visibleRowsCount = 1; // Schedule's Row will never be empty
- if (mRecentAdapter.isEmpty()) {
- mRowsAdapter.remove(mRecentRow);
- } else {
- if (mRowsAdapter.indexOf(mRecentRow) < 0) {
- mRowsAdapter.add(0, mRecentRow);
- }
- visibleRowsCount++;
- }
- if (mSeriesAdapter.isEmpty()) {
- mRowsAdapter.remove(mSeriesRow);
- } else {
- if (mRowsAdapter.indexOf(mSeriesRow) < 0) {
- mRowsAdapter.add(visibleRowsCount, mSeriesRow);
- }
- visibleRowsCount++;
- }
- for (int i = 0; i < mGenreAdapters.length; i++) {
- RecordedProgramAdapter adapter = mGenreAdapters[i];
- if (adapter != null) {
- if (adapter.isEmpty()) {
- mRowsAdapter.remove(mGenreRows[i]);
- } else {
- if (mGenreRows[i] == null || mRowsAdapter.indexOf(mGenreRows[i]) < 0) {
- mGenreRows[i] = new ListRow(new HeaderItem(mGenreLabels.get(i)), adapter);
- mRowsAdapter.add(visibleRowsCount, mGenreRows[i]);
- }
- visibleRowsCount++;
- }
- }
- }
- }
-
- private boolean needToShowScheduledRecording(ScheduledRecording recording) {
- int state = recording.getState();
- return state == ScheduledRecording.STATE_RECORDING_IN_PROGRESS
- || state == ScheduledRecording.STATE_RECORDING_NOT_STARTED;
- }
-
- private void updateLatestRecordedProgram(SeriesRecording seriesRecording) {
- RecordedProgram latestProgram = null;
- for (RecordedProgram program :
- mDvrDataManager.getRecordedPrograms(seriesRecording.getId())) {
- if (latestProgram == null || RecordedProgram
- .START_TIME_THEN_ID_COMPARATOR.compare(latestProgram, program) < 0) {
- latestProgram = program;
- }
- }
- mSeriesId2LatestProgram.put(seriesRecording.getSeriesId(), latestProgram);
- }
-
- private class ScheduleAdapter extends SortedArrayAdapter<Object> {
- ScheduleAdapter(int maxItemCount) {
- super(mPresenterSelector, SCHEDULE_COMPARATOR, maxItemCount);
- }
-
- @Override
- public long getId(Object item) {
- if (item instanceof ScheduledRecording) {
- return ((ScheduledRecording) item).getId();
- } else {
- return -1;
- }
- }
- }
-
- private class SeriesAdapter extends SortedArrayAdapter<SeriesRecording> {
- SeriesAdapter() {
- super(mPresenterSelector, new Comparator<SeriesRecording>() {
- @Override
- public int compare(SeriesRecording lhs, SeriesRecording rhs) {
- if (lhs.isStopped() && !rhs.isStopped()) {
- return 1;
- } else if (!lhs.isStopped() && rhs.isStopped()) {
- return -1;
- }
- return SeriesRecording.PRIORITY_COMPARATOR.compare(lhs, rhs);
- }
- });
- }
-
- @Override
- public long getId(SeriesRecording item) {
- return item.getId();
- }
- }
-
- private class RecordedProgramAdapter extends SortedArrayAdapter<Object> {
- RecordedProgramAdapter() {
- this(Integer.MAX_VALUE);
- }
-
- RecordedProgramAdapter(int maxItemCount) {
- super(mPresenterSelector, RECORDED_PROGRAM_COMPARATOR, maxItemCount);
- }
-
- @Override
- public long getId(Object item) {
- if (item instanceof SeriesRecording) {
- return ((SeriesRecording) item).getId();
- } else if (item instanceof RecordedProgram) {
- return ((RecordedProgram) item).getId();
- } else {
- return -1;
- }
- }
- }
-} \ No newline at end of file