package de.geeksfactory.opacclient.frontend;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.NotificationManager;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.widget.DatePicker;
import android.widget.TimePicker;
import org.joda.time.DateTime;
import de.geeksfactory.opacclient.OpacClient;
import de.geeksfactory.opacclient.R;
import de.geeksfactory.opacclient.reminder.Alarm;
import de.geeksfactory.opacclient.reminder.ReminderBroadcastReceiver;
import de.geeksfactory.opacclient.reminder.ReminderHelper;
import de.geeksfactory.opacclient.storage.AccountDataSource;
import de.geeksfactory.opacclient.storage.DataIntegrityException;
public class SnoozeDatePickerActivity extends Activity
implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
private DateTime dt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// close notification drawer
Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(it);
dt = DateTime.now();
new DatePickerDialog(this, R.style.Theme_AppCompat_Light_Dialog, this, dt.getYear(),
dt.getMonthOfYear() - 1, // Joda time has 1-based months
dt.getDayOfMonth()).show();
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dt = dt.withYear(year).withMonthOfYear(monthOfYear + 1) // Joda time has 1-based months
.withDayOfMonth(dayOfMonth);
new TimePickerDialog(this, R.style.Theme_AppCompat_Light_Dialog, this, dt.getHourOfDay(),
dt.getMinuteOfHour(), DateFormat.is24HourFormat(this)).show();
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
dt = dt.withHourOfDay(hourOfDay).withMinuteOfHour(minute);
long alarmId = getIntent().getLongExtra(ReminderBroadcastReceiver.EXTRA_ALARM_ID, -1);
AccountDataSource adata = new AccountDataSource(this);
Alarm alarm = adata.getAlarm(alarmId);
if (alarm == null) {
throw new DataIntegrityException("Trying to snooze unknown alarm ID " + alarmId);
}
alarm.notified = false;
alarm.notificationTime = dt;
adata.updateAlarm(alarm);
// dismiss notification
NotificationManager manager = (NotificationManager) getSystemService(
Context.NOTIFICATION_SERVICE);
manager.cancel((int) alarm.id);
// reschedule alarms
new ReminderHelper((OpacClient) getApplication()).scheduleAlarms();
finish();
}
}