1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
15 */
16
17package com.android.tv.dvr.ui.list;
18
19import android.os.Bundle;
20import android.support.v17.leanback.widget.ClassPresenterSelector;
21
22import com.android.tv.R;
23import com.android.tv.dvr.data.ScheduledRecording;
24import com.android.tv.dvr.ui.list.SchedulesHeaderRowPresenter.DateHeaderRowPresenter;
25
26/**
27 * A fragment to show the list of schedule recordings.
28 */
29public class DvrSchedulesFragment extends BaseDvrSchedulesFragment {
30    @Override
31    public void onCreate(Bundle savedInstanceState) {
32        super.onCreate(savedInstanceState);
33        if (getRowsAdapter().size() == 0) {
34            showEmptyMessage(R.string.dvr_schedules_empty_state);
35        }
36    }
37
38    @Override
39    public SchedulesHeaderRowPresenter onCreateHeaderRowPresenter() {
40        return new DateHeaderRowPresenter(getContext());
41    }
42
43    @Override
44    public ScheduleRowPresenter onCreateRowPresenter() {
45        return new ScheduleRowPresenter(getContext());
46    }
47
48    @Override
49    public ScheduleRowAdapter onCreateRowsAdapter(ClassPresenterSelector presenterSelecor) {
50        return new ScheduleRowAdapter(getContext(), presenterSelecor);
51    }
52
53    @Override
54    public void onScheduledRecordingAdded(ScheduledRecording... scheduledRecordings) {
55        super.onScheduledRecordingAdded(scheduledRecordings);
56        if (getRowsAdapter().size() > 0) {
57            hideEmptyMessage();
58        }
59    }
60
61    @Override
62    public void onScheduledRecordingRemoved(ScheduledRecording... scheduledRecordings) {
63        super.onScheduledRecordingRemoved(scheduledRecordings);
64        if (getRowsAdapter().size() == 0) {
65            showEmptyMessage(R.string.dvr_schedules_empty_state);
66        }
67    }
68
69    @Override
70    protected int getFirstItemPosition() {
71        Bundle args = getArguments();
72        ScheduledRecording recording = null;
73        if (args != null) {
74            recording = args.getParcelable(SCHEDULES_KEY_SCHEDULED_RECORDING);
75        }
76        final int selectedPostion = getRowsAdapter().indexOf(
77                getRowsAdapter().findRowByScheduledRecording(recording));
78        if (selectedPostion != -1) {
79            return selectedPostion;
80        }
81        return super.getFirstItemPosition();
82    }
83}