Changeset 278 for trunk/hiptop/pester/net/sabi/pester/Alarms.java
- Timestamp:
- 07/23/06 08:33:15 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hiptop/pester/net/sabi/pester/Alarms.java
r276 r278 23 23 private Alarms() { 24 24 mDataStore = DataStore.createDataStore("alarms", true /* auto sync */); 25 // register us for Event.EVENT_DATASTORE_RESTORED, which only 26 // seems to be documented at: 27 // <http://developer.danger.com/forum/index.php?t=msg&th=27> 28 mDataStore.setAutoSyncNotifyee(sListener); 29 refreshFromDataStore(false); 30 } 31 32 void refreshFromDataStore(boolean datastoreRestored) { 33 sAlarmList = null; 34 removeAllItems(); 35 if (datastoreRestored) 36 mDataStore.doneResolvingConflict(); // resolves UID conflicts 25 37 byte[][] alarmsData = mDataStore.getRecords(); 26 38 int i; … … 32 44 alarm.resume(); 33 45 } 46 sAlarmList = this; 34 47 } 35 48 … … 39 52 sSettingsDB = new SettingsDB("settings", true /* auto sync */); 40 53 sListener = new Listener(); 41 sAlarmList =new Alarms();54 new Alarms(); 42 55 } 43 56 return sAlarmList; … … 51 64 } 52 65 53 // XXX handle EVENT_DATASTORE_RESTORED: note that in the event of54 // a hard reset, items may come back out of order, so we need to55 // 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 66 protected void onItemAdded(Object item, int index) { 59 67 if (sAlarmList == null) // restoring from service … … 62 70 DEBUG.p("adding: " + alarm + 63 71 " next UID: " + mDataStore.getAutoSyncNextUID()); 64 index = mDataStore.addRecord(alarm.toByteArray() , index);72 index = mDataStore.addRecord(alarm.toByteArray()); 65 73 alarm.setUID(mDataStore.getRecordUID(index)); 66 74 DEBUG.p("added UID " + alarm.getUID() + " @ " + index); … … 68 76 69 77 protected void onItemRemoved(Object item, int index) { 78 if (sAlarmList == null) // restoring from service (after hard reset) 79 return; 70 80 Alarm alarm = (Alarm)item; 71 // XXX make sure +/- UIDs are OK72 81 int uid = alarm.getUID(); 73 82 if (uid == 0) 74 83 return; 75 DEBUG.p("removing; " + alarm + " UID " + uid);76 84 mDataStore.removeRecordByUID(uid); 77 85 } … … 81 89 return; 82 90 Alarm alarm = (Alarm)item; 83 // XXX check that updating a + UID by a - one is OK84 91 mDataStore.setRecordDataByUID(alarm.getUID(), alarm.toByteArray(), true); 85 92 DEBUG.p("updated: " + alarm + " UID " + alarm.getUID()); … … 114 121 Alarms.getList().forEach(this); 115 122 return true; 123 } else if (e.type == Event.EVENT_DATASTORE_RESTORED) { 124 String dbName = (String)e.argument; 125 DEBUG.p("DATASTORE_RESTORED: " + dbName); 126 if (!dbName.endsWith("alarms")) { 127 // because we only get/set the default alarm on demand 128 // there's no need to handle conflicts with the settings... 129 // XXX but what happens if we set a (default) alarm, then 130 // the SettingsDB restores? 131 Alarms.getList().refreshFromDataStore(true); 132 } 116 133 } 117 134 return super.receiveEvent(e);
Note:
See TracChangeset
for help on using the changeset viewer.