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