diff --git a/AlarmApp/App.tsx b/AlarmApp/App.tsx index 62bb9b6..43ea862 100644 --- a/AlarmApp/App.tsx +++ b/AlarmApp/App.tsx @@ -9,6 +9,7 @@ import { Switch, Alert, Platform, + Modal, } from 'react-native'; import DateTimePicker from '@react-native-community/datetimepicker'; @@ -61,6 +62,8 @@ export default function App() { const [showEndPicker, setShowEndPicker] = useState(false); const [showIntervalPicker, setShowIntervalPicker] = useState(false); const [editingAlarmId, setEditingAlarmId] = useState(null); + const [showAlarmModal, setShowAlarmModal] = useState(false); + const [intervalDropdownOpen, setIntervalDropdownOpen] = useState(false); //guard against overlapping alarms const lastFiredRef = React.useRef>({}); @@ -192,6 +195,8 @@ export default function App() { setStartTime(start); setEndTime(end); setIntervalMinutes(alarm.interval); + + setShowAlarmModal(true); }; const saveEditAlarmSet = () => { @@ -274,6 +279,8 @@ const confirmDeleteAlarmSet = (id: string) => { toggleAlarmSet(item.id)} + trackColor={{ false: 'grey', true: '#d6ecff' }} + thumbColor={item.active ? '#2196f3' : '#d6ecff'} /> {/* summarized alarm text */} @@ -294,6 +301,83 @@ const confirmDeleteAlarmSet = (id: string) => { ListEmptyComponent={No alarms yet} /> + + + + + {editingAlarmId ? "Edit Alarm" : "Create Alarm"} + + + {/* start */} + Start Time + setShowStartPicker(true)}> + + {startTime.toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit' + })} + + + + {/* end */} + End Time + setShowEndPicker(true)}> + + {endTime.toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit' + })} + + + + {/* interval picker */} + Interval + setIntervalDropdownOpen(!intervalDropdownOpen)} + style = {styles.dropdownButton} + > + + Every {intervalMinutes} minutes + + + + {intervalDropdownOpen && ( + + {intervalOptions.map((min) => ( + { + setIntervalMinutes(min); + setIntervalDropdownOpen(false); + }} + style = {styles.dropdownItem} + > + {min} minutes + + ))} + + )} +