diff -r 0b6daedcf7e1 -r 8452783e7980 Eggtimer/basic.js --- a/Eggtimer/basic.js Thu Oct 28 11:00:31 2010 -0700 +++ b/Eggtimer/basic.js Mon Nov 01 14:47:36 2010 -0700 @@ -4,14 +4,70 @@ var SETUP_ID = 1; -var timervalue = 0; -var initialTimer = 0; +var timervalue = 60; +var initialTimer = 60; var timeoutId = null; +var paused = true; +var displayUp = true; function init() { showMainWindow(); widget.setDisplayPortrait(); + watchSensorNotifications(); +} + +// Call this function to add a callback that will be notified of orientation +// changes +function watchSensorNotifications() { + var sensors = device.getServiceObject("Service.Sensor", "ISensor"); + var SensorParams = { + SearchCriterion : "Orientation" + }; + var result = sensors.ISensor.FindSensorChannel(SensorParams); + + if (result.ErrorCode != 0) { + var errorCode = result.ErrorCode; + var errorMessage = result.ErrorMessage; + return null; + } + var result2 = sensors.ISensor.RegisterForNotification( + { ChannelInfoMap : result.ReturnValue[0], + ListeningType : "ChannelData" }, sensorCallback); + if (result.ErrorCode == 0) { + var transactionId = result.TransactionID; + return transactionId; + } else { + var errorCode = result.ErrorCode; + var errorMessage = result.ErrorMessage; + return null; + } +} + +function turn(up) { + if (up != displayUp) { + displayUp = up; + timervalue = initialTimer - timervalue; + showValues(); + } +} + +// This function can be passed as callback to +// sensors.ISensor.RegisterForNotification method +function sensorCallback(transactionId, code, result) { + if (result.ErrorCode == 0) { + var dataType = result.ReturnValue.DataType; + var orientation = result.ReturnValue.DeviceOrientation; + + if (orientation == "DisplayUp") { + turn(true); + } else if (orientation == "DisplayDown") { + turn(false); + } + } else { + var errorCode = result.ErrorCode; + var errorMessage = result.ErrorMessage; + } } function startTimer() { @@ -33,17 +89,40 @@ tick(); } +function showValues() { + var hrs = Math.floor(timervalue / 3600); + var mins = Math.floor((timervalue % 3600) / 60); + var sec = timervalue % 60; + + var sz = pad(hrs) + ":" + pad(mins) + ":" + pad(sec); + document.getElementById("timervalue").innerHTML = sz; + var sand=document.getElementById("sand"); + var sandBottom = document.getElementById("sand-bottom"); + var top, bottom; + top = (50 * (initialTimer-timervalue)/initialTimer).toFixed(0) + "%"; + bottom = "50%"; + if (displayUp) { + sand.style.top = top; + sand.style.bottom = bottom; + } else { + sandBottom.style.bottom = top; + sandBottom.style.top = bottom; + } + bottom = "0%"; + top = (50 + (50 * timervalue/initialTimer)).toFixed(0) + "%"; + if (displayUp) { + sandBottom.style.top = top; + sandBottom.style.bottom = bottom; + } else { + sand.style.top = bottom; + sand.style.bottom = top; + } +} + function tick() { if (timervalue > 0) { timervalue = timervalue - 1; - var hrs = Math.floor(timervalue / 3600); - var mins = Math.floor((timervalue % 3600) / 60); - var sec = timervalue % 60; - - var sz = pad(hrs) + ":" + pad(mins) + ":" + pad(sec); - document.getElementById("timervalue").innerHTML = sz; - document.getElementById("sand").style.top=(50 * (initialTimer-timervalue)/initialTimer).toFixed(0) + "%"; - document.getElementById("sand-bottom").style.top=(50+(50 * timervalue/initialTimer)).toFixed(0) + "%"; + showValues(); if (timervalue == 0) { cancelTimer(); } @@ -84,7 +163,6 @@ menu.setRightSoftkeyLabel("Cancel", showMainWindow); } -var paused = false; function pauseStart() { if (paused) {