Changeset 276 for trunk/hiptop/pester/net/sabi/pester/Alarms.java
- Timestamp:
- 07/22/06 08:45:34 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hiptop/pester/net/sabi/pester/Alarms.java
r259 r276 9 9 import danger.internal.Date; 10 10 import danger.util.StdActiveList; 11 import danger.util.DEBUG; 11 12 12 13 public class Alarms extends StdActiveList { … … 22 23 private Alarms() { 23 24 mDataStore = DataStore.createDataStore("alarms", true /* auto sync */); 25 byte[][] alarmsData = mDataStore.getRecords(); 26 int i; 27 for (i = 0 ; i < alarmsData.length ; ++i) { 28 Alarm alarm = new Alarm(); 29 alarm.fromByteArray(alarmsData[i]); 30 alarm.setUID(mDataStore.getRecordUID(i)); 31 insertItemSorted(alarm, alarm); 32 alarm.resume(); 33 } 24 34 } 25 35 26 36 public static Alarms getList() { 27 37 if (sAlarmList == null) { 38 Application.registerForEvent(sListener, Event.EVENT_TIME_CHANGED); 39 sSettingsDB = new SettingsDB("settings", true /* auto sync */); 40 sListener = new Listener(); 28 41 sAlarmList = new Alarms(); 29 sListener = new Listener();30 sSettingsDB = new SettingsDB("settings", true /* auto sync */);31 Application.registerForEvent(sListener, Event.EVENT_TIME_CHANGED);32 42 } 33 43 return sAlarmList; … … 39 49 public static void removeAlarm(Alarm alarm) { 40 50 sAlarmList.removeItem(alarm); 51 } 52 53 // XXX handle EVENT_DATASTORE_RESTORED: note that in the event of 54 // a hard reset, items may come back out of order, so we need to 55 // implement an in-place sort, then insert the current alarm list. 56 // Aiee. Also, what on earth happens when UIDs aren't synchronized? 57 58 protected void onItemAdded(Object item, int index) { 59 if (sAlarmList == null) // restoring from service 60 return; 61 Alarm alarm = (Alarm)item; 62 DEBUG.p("adding: " + alarm + 63 " next UID: " + mDataStore.getAutoSyncNextUID()); 64 index = mDataStore.addRecord(alarm.toByteArray(), index); 65 alarm.setUID(mDataStore.getRecordUID(index)); 66 DEBUG.p("added UID " + alarm.getUID() + " @ " + index); 67 } 68 69 protected void onItemRemoved(Object item, int index) { 70 Alarm alarm = (Alarm)item; 71 // XXX make sure +/- UIDs are OK 72 int uid = alarm.getUID(); 73 if (uid == 0) 74 return; 75 DEBUG.p("removing; " + alarm + " UID " + uid); 76 mDataStore.removeRecordByUID(uid); 77 } 78 79 public void onItemUpdated(Object item, int index) { 80 if (sAlarmList == null) // restoring from service 81 return; 82 Alarm alarm = (Alarm)item; 83 // XXX check that updating a + UID by a - one is OK 84 mDataStore.setRecordDataByUID(alarm.getUID(), alarm.toByteArray(), true); 85 DEBUG.p("updated: " + alarm + " UID " + alarm.getUID()); 41 86 } 42 87 … … 67 112 public boolean receiveEvent(Event e) { 68 113 if (e.type == Event.EVENT_TIME_CHANGED) { 69 // XXX do we get this when the time zone changes?70 114 Alarms.getList().forEach(this); 71 115 return true; … … 75 119 } 76 120 } 77
Note:
See TracChangeset
for help on using the changeset viewer.