Skip to content

Commit

Permalink
massive refactoring. namespaced all functions and vars. tweaked behav…
Browse files Browse the repository at this point in the history
…ior of control buttons. fixed various settings bugs.

release version... v1.1
  • Loading branch information
= committed Jun 12, 2010
1 parent 98b1956 commit fffa9ee
Show file tree
Hide file tree
Showing 7 changed files with 138 additions and 129 deletions.
9 changes: 8 additions & 1 deletion CountdownTimer.gadget/countdown_timer.css
Expand Up @@ -23,6 +23,13 @@ body {
font-weight: bolder; font-weight: bolder;
} }


#controls {
height:16px;
top:3px;
right:3px;
position:absolute;
}

img#restart { img#restart {
margin-left: 6px; margin-left: 4px;
} }
174 changes: 76 additions & 98 deletions CountdownTimer.gadget/countdown_timer.js
Expand Up @@ -7,126 +7,104 @@
System.Gadget.settingsUI = "settings.html"; System.Gadget.settingsUI = "settings.html";
System.Gadget.onSettingsClosed = onSettingsClosed; System.Gadget.onSettingsClosed = onSettingsClosed;


var seconds = 0; FTTA.countdownTimer.main.seconds = 0;
var countdown_timer = null; FTTA.countdownTimer.main.countdown_timer = null;
var debug_mode = 0; FTTA.countdownTimer.main.alarm_timer = null;



FTTA.countdownTimer.main.countdown = {
function init() reset: function() {
{ this.pause();
loadSettings(); FTTA.countdownTimer.main.seconds = 60 * FTTA.countdownTimer.global.countdown_min;
} document.getElementById('countdown_block').innerHTML = FTTA.countdownTimer.main.seconds / 60 + " MIN";

FTTA.countdownTimer.ui.updateProgressBar();
function resetCountdown() },
{ start: function() {
pauseCountdown(); this.run();

FTTA.countdownTimer.ui.showPause();
seconds = 60 * countdown_min; },
document.getElementById('countdown_block').innerHTML = seconds / 60; pause: function(obj) {
} clearTimeout(FTTA.countdownTimer.main.countdown_timer);

clearTimeout(FTTA.countdownTimer.main.alarm_timer);
function startCountdown() FTTA.countdownTimer.ui.showPlay();
{ },
countdown(); run: function () {
showPauseButton(); if (FTTA.countdownTimer.main.seconds > 0) {
} FTTA.countdownTimer.main.seconds -= 1;
function pauseCountdown(obj) var time_statement = FTTA.countdownTimer.main.seconds > 60 ? (Math.floor(FTTA.countdownTimer.main.seconds / 60) + " MIN") : (FTTA.countdownTimer.main.seconds + " SEC");
{ document.getElementById('countdown_block').innerHTML = time_statement;
clearTimeout(countdown_timer); document.getElementById('countdown_block').title = FTTA.countdownTimer.main.seconds + " seconds";
showPlayButton(); FTTA.countdownTimer.ui.updateProgressBar();
} FTTA.countdownTimer.main.countdown_timer = setTimeout('FTTA.countdownTimer.main.countdown.run()', 1000);
function countdown() } else {
{ FTTA.countdownTimer.ui.timesUp(0);
if (seconds > 0) { }
seconds -= 1;
var time_statement = seconds > 60 ? (Math.floor(seconds / 60) + " MIN") : (seconds + " SEC");
document.getElementById('countdown_block').innerHTML = time_statement;
document.getElementById('countdown_block').title = seconds + " seconds remain";
updateProgressBar();
countdown_timer = setTimeout('countdown()', 1000);
} else {
timesUp(0);
} }
} }
function updateProgressBar()
{
var width = Math.round(seconds / (60*countdown_min) * 100);
document.getElementById('progress_bar').style.width = width + "%";

var tick = document.getElementById('countdown_tick');


if (tick.style.color == '#666') { FTTA.countdownTimer.ui = {
tick.style.color = '#ccc'; updateProgressBar: function() {
} else { var width = Math.round(FTTA.countdownTimer.main.seconds / (60*FTTA.countdownTimer.global.countdown_min) * 100);
tick.style.color = '#666'; document.getElementById('progress_bar').style.width = width + "%";
}
}
function timesUp(i)
{
if (i++ < max_alarm_notifies) {
System.Sound.playSound("sound/alarm.wav");
document.getElementById('countdown_block').innerHTML = "<marquee>TIMES UP</marquee>";


setTimeout("timesUp("+i+");", 4000); var tick = document.getElementById('countdown_tick');
} else {
showPlayButton(); if (tick.style.color == '#666') {
} tick.style.color = '#ccc';
} } else {
function showPlayButton() tick.style.color = '#666';
{ }
if (document.getElementById('pause')) { },
var pause_btn = document.getElementById('pause'); timesUp: function(i) {
pause_btn.onclick = function() { startCountdown(); } if (i++ < FTTA.countdownTimer.global.num_audible_alarm) {
pause_btn.src = "images/play.png"; System.Sound.playSound("sound/alarm.wav");
pause_btn.id = "play"; FTTA.countdownTimer.main.alarm_timer = setTimeout("FTTA.countdownTimer.ui.timesUp("+i+");", 4000);
} } else {
} this.showPlay();
function showPauseButton() }
{ document.getElementById('countdown_block').innerHTML = "<marquee>TIME'S UP</marquee>";
if (document.getElementById('play')) { },
var play_btn = document.getElementById('play'); showPlay: function() {
play_btn.onclick = function() { pauseCountdown(); } if (document.getElementById('pause')) {
play_btn.src = "images/pause.png"; var pause_btn = document.getElementById('pause');
play_btn.id = "pause"; pause_btn.onclick = function() { FTTA.countdownTimer.main.countdown.start(); }
pause_btn.src = "images/play.png";
pause_btn.id = "play";
}
},
showPause: function() {
if (document.getElementById('play')) {
var play_btn = document.getElementById('play');
play_btn.onclick = function() { FTTA.countdownTimer.main.countdown.pause(); }
play_btn.src = "images/pause.png";
play_btn.id = "pause";
}
} }
} }


function debug(msg)
FTTA.countdownTimer.main.init = function()
{ {
if (debug_mode) { FTTA.countdownTimer.main.getSettings();
//System.Debug.outputString(msg);
window.prompt(msg);
}
} }


function loadSettings() FTTA.countdownTimer.main.getSettings = function()
{ {
var setting_min = 0; FTTA.countdownTimer.global.getSettings();

// override global countdown if custom is set
var custom_countdown = System.Gadget.Settings.readString("custom_countdown_min"); var custom_countdown = System.Gadget.Settings.readString("custom_countdown_min");
if (custom_countdown > 0) { if (custom_countdown > 0) {
setting_min = custom_countdown; FTTA.countdownTimer.global.countdown_min = custom_countdown;
} else {
setting_min = System.Gadget.Settings.readString("countdown_minutes");
} }


var setting_alarm_notifs = System.Gadget.Settings.read("countdown_alarm_notifies"); FTTA.countdownTimer.main.countdown.reset();

max_alarm_notifies = setting_alarm_notifs == '' ? 2 : setting_alarm_notifs;
countdown_min = setting_min == '' ? 30 : setting_min;

resetCountdown();
} }


function onSettingsClosed(event) function onSettingsClosed(event)
{ {
// User hits OK on the settings page. // User hits OK on the settings page.
if (event.closeAction == event.Action.commit) if (event.closeAction == event.Action.commit)
{ {
loadSettings(); FTTA.countdownTimer.main.getSettings();
} }
// User hits Cancel on the settings page.
//else if (event.closeAction == event.Action.cancel)
//{
// SetContentText("Cancelled");
//}
} }
6 changes: 3 additions & 3 deletions CountdownTimer.gadget/gadget.xml
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<gadget> <gadget>
<name>Countdown Timer</name> <name>Countdown Timer</name>
<namespace>naraku.gadgets</namespace> <namespace>ftta.gadgets</namespace>
<version>1.0.0.0</version> <version>1.0.0.0</version>
<author name="Nate Vogel"> <author name="Nate Vogel">
<info url="http://naraku.net" text="naraku.net"/> <info url="http://funtothinkabout.com" text="FTTA"/>
</author> </author>
<copyright> <copyright>
&#169; 2010 &#169; 2010
</copyright> </copyright>
<description> <description>
Simple Countdown Timer A Simple, Configurable Countdown Timer
</description> </description>
<icons> <icons>
<icon src="icon.png"/> <icon src="icon.png"/>
Expand Down
34 changes: 34 additions & 0 deletions CountdownTimer.gadget/global.js
Expand Up @@ -4,7 +4,41 @@
- -
- http://funtothinkabout.com - http://funtothinkabout.com
*/ */
FTTA = {
countdownTimer: {
global: {},
main: {},
settings: {}
}
}
FTTA.countdownTimer.global.getSettings = function()
{
// override Defaults HERE:
FTTA.countdownTimer.global.countdown_min = 30;
FTTA.countdownTimer.global.num_audible_alarm = 2;
FTTA.countdownTimer.global.presets_list_values = "1||5||15||30||60||240";

// leave these alone.
var first_run = System.Gadget.Settings.readString("countdown_first_run");
if (System.Gadget.Settings.readString("countdown_first_run") != '') {
FTTA.countdownTimer.global.countdown_min = System.Gadget.Settings.read("countdown_minutes");
FTTA.countdownTimer.global.presets_list_values = System.Gadget.Settings.read("countdown_presets");
FTTA.countdownTimer.global.num_audible_alarm = System.Gadget.Settings.read("countdown_alarm_notifies");
}
//+"\npresets:"+FTTA.countdownTimer.global.presets_list_values
debug("countdown_min:"+FTTA.countdownTimer.global.countdown_min+"\nnum alarms:"+FTTA.countdownTimer.global.num_audible_alarm);
}

function getTimeSuffix(seconds) function getTimeSuffix(seconds)
{ {
return seconds > 3600 ? "HR" : seconds > 60 ? "MIN" : "SEC"; return seconds > 3600 ? "HR" : seconds > 60 ? "MIN" : "SEC";
} }

FTTA.countdownTimer.global.debug_mode = 0;
function debug(msg)
{
if (FTTA.countdownTimer.global.debug_mode) {
//System.Debug.outputString(msg);
window.prompt(msg);
}
}
12 changes: 6 additions & 6 deletions CountdownTimer.gadget/main.html
Expand Up @@ -7,16 +7,16 @@
<html xmlns="http://www.w3.org/1999/xhtml" > <html xmlns="http://www.w3.org/1999/xhtml" >
<head> <head>
<title>Countdown Timer</title> <title>Countdown Timer</title>
<link href="countdown_timer.css" rel="stylesheet" type="text/css" /> <link href="countdown_timer.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="countdown_timer.js"></script>
<script type="text/javascript" src="global.js"></script> <script type="text/javascript" src="global.js"></script>
<script type="text/javascript" src="countdown_timer.js"></script>
</head> </head>


<body onload="init();"> <body onload="FTTA.countdownTimer.main.init();">


<div style="float:right;"> <div id="controls">
<img id="play" src="images/play.png" width="14" height="12" title="Play/Pause" onclick="startCountdown();"> <img id="play" src="images/play.png" title="Play/Pause" onclick="FTTA.countdownTimer.main.countdown.start();">
<img id="restart" src="images/restart.png" width="14" height="12" title="Restart" onclick="resetCountdown();"> <img id="restart" src="images/restart.png" title="Reset" onclick="FTTA.countdownTimer.main.countdown.reset();">
</div> </div>
<span id="countdown_tick">:</span><span id="countdown_block"></span> <span id="countdown_tick">:</span><span id="countdown_block"></span>
<div id="progress_bar">&nbsp;</div> <div id="progress_bar">&nbsp;</div>
Expand Down
6 changes: 3 additions & 3 deletions CountdownTimer.gadget/settings.html
Expand Up @@ -7,12 +7,12 @@
<html> <html>
<head> <head>
<title>Countdown Timer Settings</title> <title>Countdown Timer Settings</title>
<script type="text/javascript" src="settings.js"></script>
<script type="text/javascript" src="global.js"></script> <script type="text/javascript" src="global.js"></script>
<script type="text/javascript" src="settings.js"></script>
<link rel="stylesheet" href="settings.css"> <link rel="stylesheet" href="settings.css">
</head> </head>


<body onload="loadSettings();"> <body onload="FTTA.countdownTimer.settings.getSettings();">
<strong>Custom Countdown</strong> <strong>Custom Countdown</strong>
<input type="text" name="custom_countdown_min" value="" /> <input type="text" name="custom_countdown_min" value="" />


Expand All @@ -24,7 +24,7 @@
<input type="text" size="1" name="num_audible_alarm" id="num_audible_alarm" /> <input type="text" size="1" name="num_audible_alarm" id="num_audible_alarm" />


<br /><br /> <br /><br />
For Tips and About Visit:<br /> For Tips and More, Visit:<br />
<strong><a href="http://funtothinkabout.com">Fun To Think About</a></strong> <strong><a href="http://funtothinkabout.com">Fun To Think About</a></strong>
</body> </body>
</html> </html>
26 changes: 8 additions & 18 deletions CountdownTimer.gadget/settings.js
Expand Up @@ -4,11 +4,10 @@
- -
- http://funtothinkabout.com - http://funtothinkabout.com
*/ */
System.Gadget.onSettingsClosing = SettingsClosing; System.Gadget.onSettingsClosing = FTTA.countdownTimer.settings.SettingsClosing;


function SettingsClosing(event) function FTTA.countdownTimer.settings.SettingsClosing(event)
{ {
// Save the settings if the user clicked OK.
if (event.closeAction == event.Action.commit) if (event.closeAction == event.Action.commit)
{ {
System.Gadget.Settings.write("countdown_first_run", false); System.Gadget.Settings.write("countdown_first_run", false);
Expand Down Expand Up @@ -41,35 +40,26 @@ function SettingsClosing(event)
event.cancel = false; event.cancel = false;
} }


var countdown_min; FTTA.countdownTimer.settings.getSettings = function()
var presets_list_values;
var num_audible_alarm;
function loadSettings()
{ {
if (System.Gadget.Settings.read("countdown_first_run") == '') { FTTA.countdownTimer.global.getSettings();
loadDefaults();
} else {
countdown_min = System.Gadget.Settings.read("countdown_minutes");
presets_list_values = System.Gadget.Settings.read("countdown_presets");
num_audible_alarm = System.Gadget.Settings.read("countdown_alarm_notifies");
}


var presets_list = document.getElementById('preset_list'); var presets_list = document.getElementById('preset_list');
presets_list_values = presets_list_values.split("||"); presets_list_values = FTTA.countdownTimer.global.presets_list_values.split("||");

// populate countdown minute presets // populate countdown minute presets
for (i = 0; i < presets_list_values.length; i++) { for (i = 0; i < presets_list_values.length; i++) {
var option = document.createElement('option'); var option = document.createElement('option');
option.appendChild(document.createTextNode(presets_list_values[i])); option.appendChild(document.createTextNode(presets_list_values[i]));
option.setAttribute("value", presets_list_values[i]); option.setAttribute("value", presets_list_values[i]);
if (countdown_min == presets_list_values[i]) { if (FTTA.countdownTimer.global.countdown_min == presets_list_values[i]) {
option.setAttribute("selected", "selected"); option.setAttribute("selected", "selected");
} }
presets_list.appendChild(option); presets_list.appendChild(option);
} }


// populate number of alarm sounds // populate number of alarm sounds
document.getElementById("num_audible_alarm").value = num_audible_alarm; document.getElementById("num_audible_alarm").value = FTTA.countdownTimer.global.num_audible_alarm;


return; return;
} }

0 comments on commit fffa9ee

Please sign in to comment.