148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho/* 248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * Copyright (C) 2016 The Android Open Source Project 348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * 448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * Licensed under the Apache License, Version 2.0 (the "License"); 548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * you may not use this file except in compliance with the License. 648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * You may obtain a copy of the License at 748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * 848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * http://www.apache.org/licenses/LICENSE-2.0 948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * 1048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * Unless required by applicable law or agreed to in writing, software 1148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * distributed under the License is distributed on an "AS IS" BASIS, 1248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * See the License for the specific language governing permissions and 1448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * limitations under the License. 1548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho */ 1648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 1748dadb49248271b01997862e1335912a4f2e189fYoungsang Chopackage com.android.tv.dvr.ui; 1848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 1948dadb49248271b01997862e1335912a4f2e189fYoungsang Choimport android.support.v17.leanback.widget.PresenterSelector; 2048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 2148dadb49248271b01997862e1335912a4f2e189fYoungsang Choimport com.android.tv.common.recording.RecordedProgram; 2248dadb49248271b01997862e1335912a4f2e189fYoungsang Choimport com.android.tv.dvr.DvrDataManager; 2348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 2448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho/** 2548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho * Adapter for {@link RecordedProgram}. 2648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho */ 2748dadb49248271b01997862e1335912a4f2e189fYoungsang Chofinal class RecordedProgramsAdapter extends SortedArrayAdapter<RecordedProgram> 2848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho implements DvrDataManager.RecordedProgramListener { 2948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho private final DvrDataManager mDataManager; 3048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 3148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho RecordedProgramsAdapter(DvrDataManager dataManager, PresenterSelector presenterSelector) { 3248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho super(presenterSelector, RecordedProgram.START_TIME_THEN_ID_COMPARATOR); 3348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho mDataManager = dataManager; 3448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho } 3548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 3648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho public void start() { 3748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho clear(); 3848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho addAll(mDataManager.getRecordedPrograms()); 3948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho mDataManager.addRecordedProgramListener(this); 4048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho } 4148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 4248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho public void stop() { 4348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho mDataManager.removeRecordedProgramListener(this); 4448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho } 4548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 4648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho @Override 4748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho long getId(RecordedProgram item) { 4848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho return item.getId(); 4948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho } 5048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 5148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho @Override // DvrDataManager.RecordedProgramListener 5248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho public void onRecordedProgramAdded(RecordedProgram recordedProgram) { 5348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho add(recordedProgram); 5448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho } 5548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 5648dadb49248271b01997862e1335912a4f2e189fYoungsang Cho @Override // DvrDataManager.RecordedProgramListener 5748dadb49248271b01997862e1335912a4f2e189fYoungsang Cho public void onRecordedProgramChanged(RecordedProgram recordedProgram) { 5848dadb49248271b01997862e1335912a4f2e189fYoungsang Cho change(recordedProgram); 5948dadb49248271b01997862e1335912a4f2e189fYoungsang Cho } 6048dadb49248271b01997862e1335912a4f2e189fYoungsang Cho 6148dadb49248271b01997862e1335912a4f2e189fYoungsang Cho @Override // DvrDataManager.RecordedProgramListener 6248dadb49248271b01997862e1335912a4f2e189fYoungsang Cho public void onRecordedProgramRemoved(RecordedProgram recordedProgram) { 6348dadb49248271b01997862e1335912a4f2e189fYoungsang Cho remove(recordedProgram); 6448dadb49248271b01997862e1335912a4f2e189fYoungsang Cho } 6548dadb49248271b01997862e1335912a4f2e189fYoungsang Cho} 66