source: trunk/hiptop/pester/net/sabi/pester/Alarms.java@ 273

Last change on this file since 273 was 259, checked in by Nicholas Riley, 18 years ago

Sortable alarm list.

File size: 2.1 KB
RevLine 
[237]1package net.sabi.pester;
2
3import java.util.Comparator;
[255]4import danger.app.Application;
[237]5import danger.app.DataStore;
[255]6import danger.app.Event;
[258]7import danger.app.SettingsDB;
8import danger.app.SettingsDBException;
9import danger.internal.Date;
[250]10import danger.util.StdActiveList;
[237]11
[250]12public class Alarms extends StdActiveList {
[237]13 // max # records in a datastore
14 private static final int MAX_ALARM_COUNT = 50;
15
[250]16 private static Alarms sAlarmList = null;
[255]17 private static Listener sListener;
[258]18 private static SettingsDB sSettingsDB;
[237]19
[255]20 private DataStore mDataStore;
21
[237]22 private Alarms() {
[255]23 mDataStore = DataStore.createDataStore("alarms", true /* auto sync */);
[237]24 }
25
[250]26 public static Alarms getList() {
[255]27 if (sAlarmList == null) {
[250]28 sAlarmList = new Alarms();
[255]29 sListener = new Listener();
[258]30 sSettingsDB = new SettingsDB("settings", true /* auto sync */);
[255]31 Application.registerForEvent(sListener, Event.EVENT_TIME_CHANGED);
32 }
[250]33 return sAlarmList;
[237]34 }
35
[250]36 public static void addAlarm(Alarm alarm) {
[259]37 sAlarmList.insertItemSorted(alarm, alarm);
[250]38 }
39 public static void removeAlarm(Alarm alarm) {
40 sAlarmList.removeItem(alarm);
41 }
42
[258]43 private static String KEY_DEFAULT_ALARM = "default alarm";
44
45 public static Alarm getDefaultAlarm() {
46 Alarm defaultAlarm = new Alarm();
47 try {
48 defaultAlarm.fromByteArray(sSettingsDB.getBytes(KEY_DEFAULT_ALARM));
49 } catch (SettingsDBException e) {
50 defaultAlarm = new Alarm();
51 defaultAlarm.setDate(new Date());
52 defaultAlarm.setPeriod(600, false);
53 }
54 return defaultAlarm;
55 }
56 public static void setDefaultAlarm(Alarm alarm) {
57 sSettingsDB.setBytes(KEY_DEFAULT_ALARM, alarm.toByteArray());
58 }
59
[255]60 static class Listener extends danger.app.Listener
61 implements danger.util.ActiveList.ForEach {
62
63 public void receive(Object item) {
64 ((Alarm)item).timeChanged();
65 }
66
67 public boolean receiveEvent(Event e) {
68 if (e.type == Event.EVENT_TIME_CHANGED) {
69 // XXX do we get this when the time zone changes?
70 Alarms.getList().forEach(this);
71 return true;
72 }
73 return super.receiveEvent(e);
74 }
75 }
[237]76}
[255]77
Note: See TracBrowser for help on using the repository browser.