aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/dvr/ui/list/ScheduleRowAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/tv/dvr/ui/list/ScheduleRowAdapter.java')
-rw-r--r--src/com/android/tv/dvr/ui/list/ScheduleRowAdapter.java174
1 files changed, 86 insertions, 88 deletions
diff --git a/src/com/android/tv/dvr/ui/list/ScheduleRowAdapter.java b/src/com/android/tv/dvr/ui/list/ScheduleRowAdapter.java
index 97d60473..ef4a4337 100644
--- a/src/com/android/tv/dvr/ui/list/ScheduleRowAdapter.java
+++ b/src/com/android/tv/dvr/ui/list/ScheduleRowAdapter.java
@@ -16,7 +16,9 @@
package com.android.tv.dvr.ui.list;
+import android.annotation.TargetApi;
import android.content.Context;
+import android.os.Build.VERSION_CODES;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -27,11 +29,11 @@ import android.util.ArraySet;
import android.util.Log;
import com.android.tv.R;
-import com.android.tv.TvApplication;
+import com.android.tv.TvSingletons;
import com.android.tv.common.SoftPreconditions;
import com.android.tv.dvr.DvrManager;
-import com.android.tv.dvr.ui.list.SchedulesHeaderRow.DateHeaderRow;
import com.android.tv.dvr.data.ScheduledRecording;
+import com.android.tv.dvr.ui.list.SchedulesHeaderRow.DateHeaderRow;
import com.android.tv.util.Utils;
import java.util.ArrayList;
@@ -40,14 +42,14 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
-/**
- * An adapter for {@link ScheduleRow}.
- */
+/** An adapter for {@link ScheduleRow}. */
+@TargetApi(VERSION_CODES.N)
+@SuppressWarnings("AndroidApiChecker") // TODO(b/32513850) remove when error prone is updated
class ScheduleRowAdapter extends ArrayObjectAdapter {
private static final String TAG = "ScheduleRowAdapter";
private static final boolean DEBUG = false;
- private final static long ONE_DAY_MS = TimeUnit.DAYS.toMillis(1);
+ private static final long ONE_DAY_MS = TimeUnit.DAYS.toMillis(1);
private static final int MSG_UPDATE_ROW = 1;
@@ -55,16 +57,17 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
private final List<String> mTitles = new ArrayList<>();
private final Set<ScheduleRow> mPendingUpdate = new ArraySet<>();
- private final Handler mHandler = new Handler(Looper.getMainLooper()) {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == MSG_UPDATE_ROW) {
- long currentTimeMs = System.currentTimeMillis();
- handleUpdateRow(currentTimeMs);
- sendNextUpdateMessage(currentTimeMs);
- }
- }
- };
+ private final Handler mHandler =
+ new Handler(Looper.getMainLooper()) {
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == MSG_UPDATE_ROW) {
+ long currentTimeMs = System.currentTimeMillis();
+ handleUpdateRow(currentTimeMs);
+ sendNextUpdateMessage(currentTimeMs);
+ }
+ }
+ };
public ScheduleRowAdapter(Context context, ClassPresenterSelector classPresenterSelector) {
super(classPresenterSelector);
@@ -73,37 +76,41 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
mTitles.add(mContext.getString(R.string.dvr_date_tomorrow));
}
- /**
- * Returns context.
- */
+ /** Returns context. */
protected Context getContext() {
return mContext;
}
- /**
- * Starts schedule row adapter.
- */
+ /** Starts schedule row adapter. */
public void start() {
clear();
- List<ScheduledRecording> recordingList = TvApplication.getSingletons(mContext)
- .getDvrDataManager().getNonStartedScheduledRecordings();
- recordingList.addAll(TvApplication.getSingletons(mContext).getDvrDataManager()
- .getStartedRecordings());
- Collections.sort(recordingList,
- ScheduledRecording.START_TIME_THEN_PRIORITY_THEN_ID_COMPARATOR);
+ List<ScheduledRecording> recordingList =
+ TvSingletons.getSingletons(mContext)
+ .getDvrDataManager()
+ .getNonStartedScheduledRecordings();
+ recordingList.addAll(
+ TvSingletons.getSingletons(mContext).getDvrDataManager().getStartedRecordings());
+ Collections.sort(
+ recordingList, ScheduledRecording.START_TIME_THEN_PRIORITY_THEN_ID_COMPARATOR);
long deadLine = Utils.getLastMillisecondOfDay(System.currentTimeMillis());
- for (int i = 0; i < recordingList.size();) {
+ for (int i = 0; i < recordingList.size(); ) {
ArrayList<ScheduledRecording> section = new ArrayList<>();
while (i < recordingList.size() && recordingList.get(i).getStartTimeMs() < deadLine) {
section.add(recordingList.get(i++));
}
if (!section.isEmpty()) {
- SchedulesHeaderRow headerRow = new DateHeaderRow(calculateHeaderDate(deadLine),
- mContext.getResources().getQuantityString(
- R.plurals.dvr_schedules_section_subtitle, section.size(), section.size()),
- section.size(), deadLine);
+ SchedulesHeaderRow headerRow =
+ new DateHeaderRow(
+ calculateHeaderDate(deadLine),
+ mContext.getResources()
+ .getQuantityString(
+ R.plurals.dvr_schedules_section_subtitle,
+ section.size(),
+ section.size()),
+ section.size(),
+ deadLine);
add(headerRow);
- for(ScheduledRecording recording : section){
+ for (ScheduledRecording recording : section) {
add(new ScheduleRow(recording, headerRow));
}
}
@@ -113,25 +120,29 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
}
private String calculateHeaderDate(long deadLine) {
- int titleIndex = (int) ((deadLine -
- Utils.getLastMillisecondOfDay(System.currentTimeMillis())) / ONE_DAY_MS);
+ int titleIndex =
+ (int)
+ ((deadLine - Utils.getLastMillisecondOfDay(System.currentTimeMillis()))
+ / ONE_DAY_MS);
String headerDate;
if (titleIndex < mTitles.size()) {
headerDate = mTitles.get(titleIndex);
} else {
- headerDate = DateUtils.formatDateTime(getContext(), deadLine,
- DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE
- | DateUtils.FORMAT_ABBREV_MONTH);
+ headerDate =
+ DateUtils.formatDateTime(
+ getContext(),
+ deadLine,
+ DateUtils.FORMAT_SHOW_WEEKDAY
+ | DateUtils.FORMAT_SHOW_DATE
+ | DateUtils.FORMAT_ABBREV_MONTH);
}
return headerDate;
}
- /**
- * Stops schedules row adapter.
- */
+ /** Stops schedules row adapter. */
public void stop() {
mHandler.removeCallbacksAndMessages(null);
- DvrManager dvrManager = TvApplication.getSingletons(getContext()).getDvrManager();
+ DvrManager dvrManager = TvSingletons.getSingletons(getContext()).getDvrManager();
for (int i = 0; i < size(); i++) {
if (get(i) instanceof ScheduleRow) {
ScheduleRow row = (ScheduleRow) get(i);
@@ -142,9 +153,7 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
}
}
- /**
- * Gets which {@link ScheduleRow} the {@link ScheduledRecording} belongs to.
- */
+ /** Gets which {@link ScheduleRow} the {@link ScheduledRecording} belongs to. */
public ScheduleRow findRowByScheduledRecording(ScheduledRecording recording) {
if (recording == null) {
return null;
@@ -167,7 +176,8 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
continue;
}
ScheduleRow row = (ScheduleRow) item;
- if (row.getSchedule() != null && row.isStartRecordingRequested()
+ if (row.getSchedule() != null
+ && row.isStartRecordingRequested()
&& row.matchSchedule(schedule)) {
return row;
}
@@ -185,7 +195,8 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
if (get(index) instanceof ScheduleRow) {
ScheduleRow scheduleRow = (ScheduleRow) get(index);
if (ScheduledRecording.START_TIME_THEN_PRIORITY_THEN_ID_COMPARATOR.compare(
- scheduleRow.getSchedule(), recording) > 0) {
+ scheduleRow.getSchedule(), recording)
+ > 0) {
break;
}
pre = index;
@@ -205,9 +216,14 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
add(index, addedRow);
updateHeaderDescription(headerRow);
} else {
- SchedulesHeaderRow headerRow = new DateHeaderRow(calculateHeaderDate(deadLine),
- mContext.getResources().getQuantityString(
- R.plurals.dvr_schedules_section_subtitle, 1, 1), 1, deadLine);
+ SchedulesHeaderRow headerRow =
+ new DateHeaderRow(
+ calculateHeaderDate(deadLine),
+ mContext.getResources()
+ .getQuantityString(
+ R.plurals.dvr_schedules_section_subtitle, 1, 1),
+ 1,
+ deadLine);
add(++pre, headerRow);
ScheduleRow addedRow = new ScheduleRow(recording, headerRow);
add(pre, addedRow);
@@ -241,14 +257,15 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
}
private void updateHeaderDescription(SchedulesHeaderRow headerRow) {
- headerRow.setDescription(mContext.getResources().getQuantityString(
- R.plurals.dvr_schedules_section_subtitle,
- headerRow.getItemCount(), headerRow.getItemCount()));
+ headerRow.setDescription(
+ mContext.getResources()
+ .getQuantityString(
+ R.plurals.dvr_schedules_section_subtitle,
+ headerRow.getItemCount(),
+ headerRow.getItemCount()));
}
- /**
- * Called when a schedule recording is added to dvr date manager.
- */
+ /** Called when a schedule recording is added to dvr date manager. */
public void onScheduledRecordingAdded(ScheduledRecording schedule) {
if (DEBUG) Log.d(TAG, "onScheduledRecordingAdded: " + schedule);
ScheduleRow row = findRowWithStartRequest(schedule);
@@ -263,9 +280,7 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
}
}
- /**
- * Called when a schedule recording is removed from dvr date manager.
- */
+ /** Called when a schedule recording is removed from dvr date manager. */
public void onScheduledRecordingRemoved(ScheduledRecording schedule) {
if (DEBUG) Log.d(TAG, "onScheduledRecordingRemoved: " + schedule);
ScheduleRow row = findRowByScheduledRecording(schedule);
@@ -276,9 +291,7 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
}
}
- /**
- * Called when a schedule recording is updated in dvr date manager.
- */
+ /** Called when a schedule recording is updated in dvr date manager. */
public void onScheduledRecordingUpdated(ScheduledRecording schedule, boolean conflictChange) {
if (DEBUG) Log.d(TAG, "onScheduledRecordingUpdated: " + schedule);
ScheduleRow row = findRowByScheduledRecording(schedule);
@@ -329,9 +342,7 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
}
}
- /**
- * Checks if there is a row which requested start/stop recording.
- */
+ /** Checks if there is a row which requested start/stop recording. */
protected boolean isStartOrStopRequested() {
for (int i = 0; i < size(); i++) {
Object item = get(i);
@@ -345,16 +356,12 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
return false;
}
- /**
- * Delays update of the row.
- */
+ /** Delays update of the row. */
protected void addPendingUpdate(ScheduleRow row) {
mPendingUpdate.add(row);
}
- /**
- * Executes the pending updates.
- */
+ /** Executes the pending updates. */
protected void executePendingUpdate() {
for (ScheduleRow row : mPendingUpdate) {
int index = indexOf(row);
@@ -365,21 +372,17 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
mPendingUpdate.clear();
}
- /**
- * To check whether the recording should be kept or not.
- */
+ /** To check whether the recording should be kept or not. */
protected boolean willBeKept(ScheduledRecording schedule) {
// CANCELED state means that the schedule was removed temporarily, which should be shown
// in the list so that the user can reschedule it.
return schedule.getEndTimeMs() > System.currentTimeMillis()
&& (schedule.getState() == ScheduledRecording.STATE_RECORDING_IN_PROGRESS
- || schedule.getState() == ScheduledRecording.STATE_RECORDING_NOT_STARTED
- || schedule.getState() == ScheduledRecording.STATE_RECORDING_CANCELED);
+ || schedule.getState() == ScheduledRecording.STATE_RECORDING_NOT_STARTED
+ || schedule.getState() == ScheduledRecording.STATE_RECORDING_CANCELED);
}
- /**
- * Handle the message to update/remove rows.
- */
+ /** Handle the message to update/remove rows. */
protected void handleUpdateRow(long currentTimeMs) {
for (int i = 0; i < size(); i++) {
Object item = get(i);
@@ -392,9 +395,7 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
}
}
- /**
- * Returns the next update time. Return {@link Long#MAX_VALUE} if no timer is necessary.
- */
+ /** Returns the next update time. Return {@link Long#MAX_VALUE} if no timer is necessary. */
protected long getNextTimerMs(long currentTimeMs) {
long earliest = Long.MAX_VALUE;
for (int i = 0; i < size(); i++) {
@@ -411,15 +412,12 @@ class ScheduleRowAdapter extends ArrayObjectAdapter {
return earliest;
}
- /**
- * Send update message at the time returned by {@link #getNextTimerMs}.
- */
+ /** Send update message at the time returned by {@link #getNextTimerMs}. */
protected final void sendNextUpdateMessage(long currentTimeMs) {
mHandler.removeMessages(MSG_UPDATE_ROW);
long nextTime = getNextTimerMs(currentTimeMs);
if (nextTime != Long.MAX_VALUE) {
- mHandler.sendEmptyMessageDelayed(MSG_UPDATE_ROW,
- nextTime - System.currentTimeMillis());
+ mHandler.sendEmptyMessageDelayed(MSG_UPDATE_ROW, nextTime - System.currentTimeMillis());
}
}
}