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

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

Save most recent alarm settings to SettingsDB.

File size: 2.2 KB
Line 
1package net.sabi.pester;
2
3import java.util.Comparator;
4import danger.app.Application;
5import danger.app.DataStore;
6import danger.app.Event;
7import danger.app.SettingsDB;
8import danger.app.SettingsDBException;
9import danger.internal.Date;
10import danger.util.StdActiveList;
11
12public class Alarms extends StdActiveList {
13 // max # records in a datastore
14 private static final int MAX_ALARM_COUNT = 50;
15
16 private static Alarms sAlarmList = null;
17 private static Listener sListener;
18 private static SettingsDB sSettingsDB;
19
20 private DataStore mDataStore;
21
22 private Alarms() {
23 mDataStore = DataStore.createDataStore("alarms", true /* auto sync */);
24 }
25
26 public static Alarms getList() {
27 if (sAlarmList == null) {
28 sAlarmList = new Alarms();
29 sListener = new Listener();
30 sSettingsDB = new SettingsDB("settings", true /* auto sync */);
31 Application.registerForEvent(sListener, Event.EVENT_TIME_CHANGED);
32 }
33 return sAlarmList;
34 }
35
36 public static void addAlarm(Alarm alarm) {
37 sAlarmList.addItem(alarm);
38 }
39 public static void removeAlarm(Alarm alarm) {
40 sAlarmList.removeItem(alarm);
41 }
42
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
60 /*
61 private static Alarm sAlarm0 = new Alarm();
62 private static Alarm sAlarm1 = new Alarm();
63 public int compare(Object arg0, Object arg1) {
64
65 return Collator.getInstance().compare(
66 }
67 */
68
69 static class Listener extends danger.app.Listener
70 implements danger.util.ActiveList.ForEach {
71
72 public void receive(Object item) {
73 ((Alarm)item).timeChanged();
74 }
75
76 public boolean receiveEvent(Event e) {
77 if (e.type == Event.EVENT_TIME_CHANGED) {
78 // XXX do we get this when the time zone changes?
79 Alarms.getList().forEach(this);
80 return true;
81 }
82 return super.receiveEvent(e);
83 }
84 }
85}
86
Note: See TracBrowser for help on using the repository browser.