package com.jasonrobinson.racer.util;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.format.DateFormat;
import android.widget.Toast;
import com.jasonrobinson.racer.R;
import com.jasonrobinson.racer.model.Race;
import com.jasonrobinson.racer.receiver.AlarmReceiver;
import java.sql.Date;
public class AlarmUtils {
private AlarmUtils() {
}
public static void addAlarm(Context context, Race race, long delay) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent operation = getPendingIntentForRace(context, race, PendingIntent.FLAG_UPDATE_CURRENT);
long time = race.getStartAt().getTime() - delay;
am.set(AlarmManager.RTC_WAKEUP, time, operation);
Date date = new Date(time);
Toast.makeText(context, context.getString(R.string.notification_scheduled, DateFormat.getTimeFormat(context).format(date), DateFormat.getDateFormat(context).format(date)), Toast.LENGTH_LONG).show();
}
public static void cancelAlarm(Context context, Race race) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent operation = getPendingIntentForRace(context, race, PendingIntent.FLAG_NO_CREATE);
if (operation != null) {
am.cancel(operation);
operation.cancel();
}
}
public static void cleanUpFinishedAlarm(Context context, Race race) {
PendingIntent operation = getPendingIntentForRace(context, race, PendingIntent.FLAG_NO_CREATE);
if (operation != null) {
operation.cancel();
}
}
public static boolean isAlarmAdded(Context context, Race race) {
return getPendingIntentForRace(context, race, PendingIntent.FLAG_NO_CREATE) != null;
}
private static PendingIntent getPendingIntentForRace(Context context, Race race, int flags) {
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setData(Uri.parse(race.getRaceId()));
intent.putExtra(AlarmReceiver.EXTRA_RACE, race);
return PendingIntent.getBroadcast(context, race.getRaceId().hashCode(), intent, flags);
}
}