package net.sabi.pester; import danger.app.Application; import danger.app.Event; import danger.ui.ActiveListView; import danger.util.ActiveList; public class AlarmListView extends ActiveListView implements Resources, Commands { // XXX some of these shouldn't conceptually be static private static AlarmListWindow sAlarmListWindow; private static AlarmSetDialog sAlarmSetDialog; public void onDecoded() { sAlarmListWindow = (AlarmListWindow)getWindow(); setList(Alarms.getList()); super.onDecoded(); } protected AlarmSetDialog alarmSetDialog() { if (sAlarmSetDialog == null) sAlarmSetDialog = AlarmSetDialog.getDialog(); return sAlarmSetDialog; } public boolean eventWidgetUp(int widget, Event e) { switch (widget) { case Event.DEVICE_BUTTON_BACK: case Event.DEVICE_BUTTON_CANCEL: Application.getCurrentApp().returnToLauncher(); return true; } return super.eventWidgetUp(widget, e); } public boolean receiveEvent(Event e) { switch (e.type) { case EVENT_NEW_ALARM: alarmSetDialog().editAlarm(new Alarm(), true); return true; case EVENT_DISCARD_ALARM: // XXX confirmation Alarms.removeAlarm((Alarm)getFocusedItem()); return true; } return super.receiveEvent(e); } protected void itemActivated(Object item) { if (item == null) return; alarmSetDialog().editAlarm((Alarm)item, false); } public int alarmsSet() { return getListSize(); } public void onItemAdded(ActiveList list, Object item, int index) { sAlarmListWindow.updateAlarmCount(); setFocus(index); super.onItemAdded(list, item, index); } public void onItemRemoved(ActiveList list, Object item, int index) { ((Alarm)item).cancel(); sAlarmListWindow.updateAlarmCount(); super.onItemRemoved(list, item, index); } protected CharSequence getToolTipForItem(Object item) { if (item == null) // this is dumb, why do we get asked for a tooltip? return null; // XXX need to refresh, localize Alarm alarm = (Alarm)item; return alarm.getDateTimeString() + " - " + alarm.getIntervalString(); } }