package com.pledgeapps.buyingtime.utils;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.Ringtone;
import android.os.Bundle;
import android.os.Vibrator;
import com.pledgeapps.buyingtime.AlertActivity;
import com.pledgeapps.buyingtime.data.Alarm;
import com.pledgeapps.buyingtime.data.Alarms;
import java.text.SimpleDateFormat;
import java.util.Date;
public class AlarmHelper {
private static AlarmHelper current;
public boolean isSounding = false; //Is the alarm current playing
public boolean pendingAlarm = false; //Does the alarm need to start playing
public Ringtone ringtone;
private AlarmManager am;
private PendingIntent pi;
public Vibrator vibrator;
public static AlarmHelper getCurrent() {
if (current==null) current=new AlarmHelper();
return current;
};
private void disableAllAlarms(Context context)
{
this.am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
//Remove any existing alarms
if (this.pi!=null) { am.cancel(pi); this.pi.cancel(); }
}
public void setAlarm(Context context, Alarm alarm)
{
disableAllAlarms(context);
if (alarm==null || alarm.nextNotificationTime==null) return;
Bundle bundle = new Bundle();
bundle.putString("ALARM_GUID", alarm.guid );
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtras(bundle);
this.pi = PendingIntent.getBroadcast(context, 0, intent, 0);
this.am.set(AlarmManager.RTC_WAKEUP, alarm.nextNotificationTime.getTime(), this.pi);
}
public void showAlert(Context context, Alarm alarm)
{
this.pendingAlarm = true;
Bundle bundle = new Bundle();
bundle.putString("ALARM_GUID", alarm.guid);
Intent i = new Intent(context, AlertActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtras(bundle);
context.startActivity(i);
}
public void updateAlarms(Context context)
{
Alarms alarms = Alarms.getCurrent();
alarms.updateNextAlarmTime();
alarms.save(context);
Alarm nextAlarm = alarms.getNextAlarm();
this.disableAllAlarms(context);
if (nextAlarm!=null && nextAlarm.nextNotificationTime!=null) this.setAlarm(context, nextAlarm);
}
}