var UI = require('ui'); var Vector2 = require('vector2'); var Vibe = require('ui/vibe'); var menu = new UI.Menu({ sections: [{ title: 'Egg size', items: [{ title: 'Medium', }, { title: 'Large' }, { title: 'Extra-large' }] }] }); var mdMenu = new UI.Menu({ sections: [{ title: 'Egg timer', items: [{ title: 'Runny', subtitle: '3m' }, { title: 'Soft', subtitle: '4m' }, { title: 'Firm', subtitle: '5m' }] }] }); var lgMenu = new UI.Menu({ sections: [{ title: 'Egg timer', items: [{ title: 'Runny', subtitle: '4m' }, { title: 'Soft', subtitle: '5m' }, { title: 'Firm', subtitle: '6m' }] }] }); var xlMenu = new UI.Menu({ sections: [{ title: 'Egg timer', items: [{ title: 'Runny', subtitle: '5m' }, { title: 'Soft', subtitle: '6m' }, { title: 'Firm', subtitle: '7m' }] }] }); var timeouts = { '3m': 18, '4m': 24, '5m': 30, '6m': 36, '7m': 42 }; menu.on('select', function(e) { if (e.itemIndex === 0){ mdMenu.show(); } else if (e.itemIndex === 1){ lgMenu.show(); } else { xlMenu.show(); } }); mdMenu.on('select', onTimerSelect); lgMenu.on('select', onTimerSelect); xlMenu.on('select', onTimerSelect); var globalIntervalId; function onTimerSelect(e){ clearInterval(globalIntervalId); var timeout = timeouts[e.item.subtitle]; globalIntervalId = timer(timeout); } menu.show(); var readyMessage = new UI.Card({ title: 'Done', body: 'Your eggs are ready!' }); function timer(timerInSec){ var intervalId = setInterval(function(){ timerInSec--; if (timerInSec == 1){ Vibe.vibrate('double'); } if (timerInSec > 0){ textfield.text(getTimeString(timerInSec)); } else { readyMessage.show(); wind.hide(); clearInterval(globalIntervalId); Vibe.vibrate('long'); } }, 1000); var wind = new UI.Window(); var textfield = new UI.Text({ position: new Vector2(0, 50), size: new Vector2(144, 30), font: 'bitham-42-light', text: getTimeString(timerInSec), textAlign: 'center' }); wind.add(textfield); wind.show(); wind.on('hide', function(){ clearInterval(globalIntervalId); }); return intervalId; } function getTimeString(timeInSec){ var minutes = parseInt(timeInSec / 60); var seconds = timeInSec % 60; return minutes + ':' + (seconds < 10 ? ('0' + seconds) : seconds); }