Ignore:
Timestamp:
07/09/06 03:16:34 (18 years ago)
Author:
Nicholas Riley
Message:

Bug fixing and cleanups.

Location:
trunk/hiptop/pester/net/sabi/pester
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/hiptop/pester/net/sabi/pester/Alarm.java

    r242 r243  
    77import danger.app.Application;
    88import danger.internal.Date;
     9import danger.util.LocaleUtils;
    910import danger.util.StdActiveList;
    1011import danger.util.StdActiveObject;
    1112import danger.util.DEBUG;
     13import danger.util.format.DateFormat;
     14import danger.util.format.StringFormat;
    1215
    1316public class Alarm extends StdActiveObject {
     
    5154        mType = repeating ? TYPE_PERIODIC_REPEATING : TYPE_PERIODIC;
    5255        mPeriod = period;
    53         mDate = new Date();
    54         mDate.addSeconds(period);
    5556    }
    5657    public void setDate(Date date) {
     
    99100    }
    100101
     102    void resume() {
     103        mState = STATE_SCHEDULED;
     104        int period = mDate.getDangerTimeGMT() - new Date().getDangerTimeGMT();
     105        if (period < 0) period = 0;
     106        mAlarm.resetWake(period);
     107        DEBUG.p("resetWake: " + description() + " - " + period + "s left");
     108        update();
     109    }
     110
     111    void schedule() {
     112        if (getUsesPeriod()) {
     113            mDate = new Date();
     114            mDate.addSeconds(mPeriod);
     115        }
     116        resume();
     117    }
     118
    101119    void dismiss() {
    102120        if (getRepeating())
     
    111129    }
    112130
    113     void schedule() {
    114         mState = STATE_SCHEDULED;
    115         DEBUG.p("schedule alarm: " + mMessage);
     131    public String description() {
     132        StringBuffer sb = new StringBuffer();
     133        switch (mState) {
     134        case STATE_INVALID: sb.append("invalid "); break;
     135        case STATE_EDITING: sb.append("editing "); break;
     136        case STATE_SCHEDULED: sb.append("scheduled "); break;
     137        }
    116138        switch (mType) {
    117139        case TYPE_PERIODIC:
    118             DEBUG.p(" - periodic: " + mPeriod); break;
     140            sb.append("periodic (").append(mPeriod).append("s) "); break;
    119141        case TYPE_PERIODIC_REPEATING:
    120             DEBUG.p(" - periodic repeating: " + mPeriod); break;
     142            sb.append("repeating periodic (").append(mPeriod).append("s) ");
     143            break;
    121144        case TYPE_DATE:
    122             DEBUG.p(" - date: " + mDate); break;
     145            sb.append("date (").append(getDateTimeString()).append(") "); break;
    123146        }
    124         mAlarm.resetWake(mPeriod);
     147        sb.append("alarm: ");
     148        sb.append('"').append(mMessage).append('"');
     149        return sb.toString();
    125150    }
    126    
     151
     152    protected static String dateTimeString(Date date) {
     153        if (date == null)
     154            return null;
     155        String layout = LocaleUtils.getDateTimePattern();
     156        String timeFormat = LocaleUtils.getMediumTimeFormat();
     157        String dateFormat = LocaleUtils.getShortDateFormat();
     158        return StringFormat.withFormat(layout,
     159                                       DateFormat.withFormat(timeFormat, date),
     160                                       DateFormat.withFormat(dateFormat, date));
     161    }
     162
     163    public String getDateTimeString() {
     164        return dateTimeString(mDate);
     165    }
     166   
    127167    public String toString() {
    128168        return mMessage;
  • trunk/hiptop/pester/net/sabi/pester/AlarmListView.java

    r242 r243  
    124124        Date date = sDateEditor.getDate();
    125125        date.setTime(sTimeEditor.getDate().getTime());
     126        date.setSeconds(0);
    126127        return date;
    127128    }
     
    153154                sEditingAlarm.setDate(editingDate());
    154155            }
     156            // schedule before adding so the tooltip is correct
     157            sEditingAlarm.schedule();
    155158            if (sEditingAlarm != sFocusedAlarm) { // new alarm
    156159                sAlarmList.addItem(sEditingAlarm);
    157160                setFocusedItem(sEditingAlarm);
    158161                sFocusedAlarm = sEditingAlarm;
    159             } else {
    160                 sEditingAlarm.update();
    161             }
     162            }
     163            return true;
    162164        case EVENT_CANCEL_ALARM:
    163             if (sEditingAlarm == sFocusedAlarm)
    164                 sEditingAlarm.schedule();
     165            if (sEditingAlarm == sFocusedAlarm) // existing alarm
     166                sEditingAlarm.resume();
    165167            sEditingAlarm = null;
    166168            return true;
     
    200202
    201203    protected void itemActivated(Object item) {
    202         // XXX deschedule alarm
    203204        editAlarm(sFocusedAlarm, false);
    204205    }
     
    223224        if (item == null) // this is dumb, why do we get asked for a tooltip?
    224225            return null;
    225         // XXX only set a tooltip if the message is truncated
    226         return ((Alarm)item).getMessage();
     226        // XXX need "in XXX minutes" too
     227        return ((Alarm)item).getDateTimeString();
    227228    }
    228229}
  • trunk/hiptop/pester/net/sabi/pester/Pester.java

    r242 r243  
    2323            Alarm alarm = (Alarm)e.argument;
    2424            AlertWindow alert = getAlert(ID_ALARM_ALERT, this);
     25            alert.setTitle(alert.getTitle() + ": " + alarm.getDateTimeString());
    2526            alert.setMessage(alarm.getMessage());
    2627            // alert.setMessageFormatDate(alarm.getDate());
Note: See TracChangeset for help on using the changeset viewer.