Ignore:
Timestamp:
07/29/06 00:53:01 (18 years ago)
Author:
Nicholas Riley
Message:

Better alarm debug description, datastore debugging; use absolute fire time for snoozed alarms too; replace the buggy alarm stack and misaligned sleep message with a painfully constructed alert.

File:
1 edited

Legend:

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

    r288 r296  
    33import danger.app.Application;
    44import danger.app.Event;
    5 import danger.app.IPCMessage;
     5import danger.ui.AlertWindow;
     6import danger.ui.Container;
     7import danger.ui.Control;
     8import danger.ui.Font;
    69import danger.ui.Layout;
    7 import danger.ui.TextField;
    8 import danger.ui.TextInputAlertWindow;
     10import danger.ui.RecordingPen;
    911import danger.ui.ScreenWindow;
    1012import danger.ui.StaticText;
     13import danger.ui.TextField;
    1114import danger.util.DEBUG;
    12 import java.util.Stack;
     15import danger.util.TextInputFilter;
    1316
    1417public class Pester extends Application implements Resources, Commands {
    1518    private static ScreenWindow sAlarmListWindow;
    16     private static Stack sAlarmStack;
    1719
    1820    public Pester() {
    1921        sAlarmListWindow = (ScreenWindow)getResources().getScreen(ID_ALARM_LIST_SCREEN);
    2022        sAlarmListWindow.show();
    21         sAlarmStack = new Stack();
     23    }
     24
     25    private void showAlertForAlarm(Alarm alarm) {
     26        AlertWindow alert = (AlertWindow)getAlert(ID_ALARM_ALERT, this);
     27        alert.setTitle(alarm.getDateTimeString());
     28        alert.setMessage(alarm.getMessage());
     29        alert.setShowTone(alarm.getAlert());
     30
     31        Font font = Font.findBoldSystemFont();
     32        StaticText label = new StaticText(getString(ID_SNOOZE_LABEL_LEFT), font);
     33        TextField field = new TextField();
     34        field.setAlignment(TextField.JUSTIFY_RIGHT);
     35        field.attachInputFilter(TextInputFilter.newLengthFilter(2));
     36        field.attachInputFilter(TextInputFilter.newNumericFilter());
     37        label.setLeft(35); // XXX alert.getMessageView().getLeft()
     38        Layout.positionToRight(field, label, 3);
     39        Layout.alignBaseline(label, field);
     40        alert.addChildBelowMessageArea(label, label.getLeft(), label.getTop());
     41        alert.addChildBelowMessageArea(field, field.getLeft(), field.getTop());
     42        label = new StaticText(getString(ID_SNOOZE_LABEL_RIGHT), font);
     43        Layout.positionToRight(label, field, 3);
     44        Layout.alignBaseline(label, field);
     45        alert.addChildBelowMessageArea(label, label.getLeft(), label.getTop());
     46       
     47        alert.setEventArgForControlWithID(ID_RESCHEDULE_BUTTON, alarm);
     48        alert.setEventArgForControlWithID(ID_DISMISS_BUTTON, alarm);
     49        alert.setDefaultFocus(field);
     50
     51        alert.paint(new RecordingPen()); // force layout
     52        int fieldID = alert.incrementMaxChildID();
     53        alert.removeChild(field);
     54        alert.addChild(field, fieldID);
     55        Control snoozeButton = alert.getControlWithID(ID_SNOOZE_BUTTON);
     56        Event event = snoozeButton.getEvent();
     57        event.argument = alert;
     58        event.data = fieldID;
     59        snoozeButton.setEvent(event);
     60        alert.disableButtonOnEmptyField(ID_SNOOZE_BUTTON, fieldID);
     61
     62        alert.show(AlertWindow.SYSTEM_ALERT_TYPE_ALARM);
    2263    }
    2364
     
    2566        switch (e.type) {
    2667        case Event.EVENT_ALARM:
    27             Alarm alarm = (Alarm)e.argument;
    28             TextInputAlertWindow alert = getTextInputAlert(ID_ALARM_ALERT, this);
    29             alert.setTitle(alarm.getDateTimeString());
    30             alert.setMessage(alarm.getMessage());
    31             alert.setShowTone(alarm.getAlert());
    32             alert.disableButtonOnEmptyField(ID_SNOOZE_BUTTON, ID_SNOOZE_MINUTES);
    33             alert.setShowCancel(false);
    34             alert.show(TextInputAlertWindow.SYSTEM_ALERT_TYPE_ALARM);
    35             sAlarmStack.push(alarm);
     68            showAlertForAlarm((Alarm)e.argument);
    3669            return true;
    3770        case EVENT_SET_ALARM:
    38             AlarmSetDialog.getDialog().rescheduleAlarm((Alarm)sAlarmStack.pop());
     71            AlarmSetDialog.getDialog().rescheduleAlarm((Alarm)e.argument);
    3972            return true;
    4073        case EVENT_SNOOZE_ALARM:
     74            AlertWindow alert = (AlertWindow)e.argument;
    4175            int snoozeMinutes =
    42                 Integer.parseInt(TextInputAlertWindow.
    43                                  getTextFieldValue((IPCMessage)e.argument,
    44                                                    ID_SNOOZE_MINUTES));
    45             ((Alarm)sAlarmStack.pop()).snoozeForMinutes(snoozeMinutes);
     76                Integer.parseInt(alert.getControlWithID(e.data).toString());
     77            Control dismissButton = alert.getControlWithID(ID_DISMISS_BUTTON);
     78            Alarm alarm = (Alarm)dismissButton.getEvent().argument;
     79            alarm.snoozeForMinutes(snoozeMinutes);
    4680            return true;
    4781        case EVENT_DISMISS_ALARM:
    48             ((Alarm)sAlarmStack.pop()).dismiss();
     82            ((Alarm)e.argument).dismiss();
    4983            return true;
    5084        }
Note: See TracChangeset for help on using the changeset viewer.