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

Make date constraints behave predictably. Fix flashing Set button when typing message while date is invalid.

File:
1 edited

Legend:

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

    r258 r269  
    5656        mMessageField =
    5757            (TypeAheadTextField)getDescendantWithID(ID_MESSAGE_FIELD);
    58         disableBottomRightButtonOnEmptyField(mMessageField);
    5958        mInButton = (RadioButton)getDescendantWithID(ID_IN_BUTTON);
    6059        mAtButton = (RadioButton)getDescendantWithID(ID_AT_BUTTON);
     
    9190    }
    9291
     92    protected void editDate(Date date) {
     93        // time and date editors must share the same date object
     94        mTimeEditor.setDate(date);
     95        mDateEditor.setDate(date);
     96        mDatePicker.setDate(date);
     97    }
     98
    9399    protected void editAlarm(Alarm alarm) {
    94100        mMessageField.setText(alarm.getMessage());
     
    108114        }
    109115
    110         Date date = new Date(alarm.getDate());
    111         mTimeEditor.setDate(date);
    112         mDateEditor.setDate(date);
    113         mDatePicker.setDate(date);
     116        editDate(new Date(alarm.getDate()));
    114117
    115118        mInButton.setValue(usesPeriod ? 1 : 0);
     
    162165            date.addSeconds(editingInterval());
    163166        } else {
    164             // XXX is it necessary to do this, or do the two share the
    165             // XXX same physical Date object?
    166167            date = mDateEditor.getDate();
    167             date.setTime(mTimeEditor.getDate().getTime());
     168            DEBUG.p("+ time editor.getTime = " + Alarm.dateTimeString(date, false));
    168169            date.setSeconds(0);
     170            DEBUG.p("+ seconds 0 = " + Alarm.dateTimeString(date, false));
    169171        }
    170172        return date;
     
    179181        }
    180182        Date now = new Date();
    181         mDateEditor.min(now);
    182         mDatePicker.min(now);
    183183        Date editingDate = editingDate();
    184184        if (isIn()) {
     
    193193            mValidateAlarm.resetWake(secondsUntilDate);
    194194        }
     195        // we read the time from the date editor; if we constrain it to
     196        // absolutely now, we won't read an earlier time even if the time
     197        // editor sets it
     198        now.setTime(0);
     199        mDateEditor.min(now);
     200        mDatePicker.min(now);
    195201        mStatusBox.setText(Alarm.dateTimeString(editingDate, true));
    196202        return true;
     
    257263            return true;
    258264        case EVENT_DATE_EDITOR_TOOK_FOCUS:
     265        {
    259266            Date date = editingDate();
    260             if (date.compareTo(new Date()) <= 0) {
    261                 date.addDays(1);
    262                 mDatePicker.setDate(date);
    263                 mDateEditor.setDate(date);
    264             }
    265             validate();
    266             return true;
     267            Date now = new Date();
     268            if (date.compareTo(now) <= 0) {
     269                date.setToday();
     270                if (date.compareTo(now) <= 0)
     271                    date.addDays(1); // tomorrow
     272                editDate(date);
     273            }
     274            validate();
     275            return true;
     276        }
    267277        case EVENT_DATE_EDITOR:
    268278            mDatePicker.setDate(mDateEditor.getDate());
     
    270280            return true;
    271281        case EVENT_DATE_PICKER:
    272             mDateEditor.setDate((Date)e.argument);
    273             validate();
    274             return true;
     282        {
     283            Date date = (Date)e.argument;
     284            date.setTime(mDateEditor.getDate().getTime());
     285            mTimeEditor.setDate(date);
     286            mDateEditor.setDate(date);
     287            validate();
     288            return true;
     289        }
    275290        }
    276291        return super.receiveEvent(e);
Note: See TracChangeset for help on using the changeset viewer.