Merge remote-tracking branch 'upstream/master'
commit
b469b0ba01
|
|
@ -10,3 +10,4 @@
|
||||||
0.28: More config options for cleaner look, enabled fast loading
|
0.28: More config options for cleaner look, enabled fast loading
|
||||||
0.29: Fixed a bug that would leave old font files in storage.
|
0.29: Fixed a bug that would leave old font files in storage.
|
||||||
0.30: Added options to show widgets and date on twist and tap. New fonts.
|
0.30: Added options to show widgets and date on twist and tap. New fonts.
|
||||||
|
0.31: Bugfix, no more freeze.
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,12 @@
|
||||||
extrasTimeout = undefined;
|
extrasTimeout = undefined;
|
||||||
hideExtras();
|
hideExtras();
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
extrasShown = false;
|
||||||
};
|
};
|
||||||
let drawExtras = function() { //draw date, day of the week and widgets
|
let drawExtras = function() { //draw date, day of the week and widgets
|
||||||
let date = new Date();
|
let date = new Date();
|
||||||
|
g.reset();
|
||||||
|
g.clearRect(0, 138, g.getWidth() - 1, 176);
|
||||||
g.setFont("Teletext10x18Ascii").setFontAlign(0, 1);
|
g.setFont("Teletext10x18Ascii").setFontAlign(0, 1);
|
||||||
if (settings.weekday) g.drawString(require("locale").dow(date).toUpperCase(), g.getWidth() / 2, g.getHeight() - 18);
|
if (settings.weekday) g.drawString(require("locale").dow(date).toUpperCase(), g.getWidth() / 2, g.getHeight() - 18);
|
||||||
if (settings.date) g.drawString(require('locale').date(date, 1), g.getWidth() / 2, g.getHeight());
|
if (settings.date) g.drawString(require('locale').date(date, 1), g.getWidth() / 2, g.getHeight());
|
||||||
|
|
@ -45,21 +48,23 @@
|
||||||
};
|
};
|
||||||
let hideExtras = function() {
|
let hideExtras = function() {
|
||||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||||
|
extrasTimeout = undefined; //NEW
|
||||||
|
g.reset();
|
||||||
g.clearRect(0, 138, g.getWidth() - 1, 176);
|
g.clearRect(0, 138, g.getWidth() - 1, 176);
|
||||||
require("widget_utils").hide();
|
require("widget_utils").hide();
|
||||||
extrasShown = false;
|
extrasShown = false; ///NEW
|
||||||
};
|
};
|
||||||
let draw = function() {
|
let draw = function() {
|
||||||
|
if (drawTimeout) clearTimeout(drawTimeout); //NEW
|
||||||
|
drawTimeout = setTimeout(function() {
|
||||||
|
drawTimeout = undefined;
|
||||||
|
draw();
|
||||||
|
}, 60000 - (Date.now() % 60000));
|
||||||
let date = new Date();
|
let date = new Date();
|
||||||
g.reset();
|
g.reset();
|
||||||
if (extrasShown) drawExtras();
|
if (extrasShown) drawExtras();
|
||||||
else hideExtras();
|
else hideExtras();
|
||||||
require('contourclock').drawClock(settings.fontIndex);
|
require('contourclock').drawClock(settings.fontIndex);
|
||||||
if (drawTimeout) clearTimeout(drawTimeout);
|
|
||||||
drawTimeout = setTimeout(function() {
|
|
||||||
drawTimeout = undefined;
|
|
||||||
draw();
|
|
||||||
}, 60000 - (Date.now() % 60000));
|
|
||||||
};
|
};
|
||||||
if (settings.hideWhenLocked) {
|
if (settings.hideWhenLocked) {
|
||||||
onLock = locked => {
|
onLock = locked => {
|
||||||
|
|
@ -83,6 +88,8 @@
|
||||||
Bangle.removeListener('twist', showExtras);
|
Bangle.removeListener('twist', showExtras);
|
||||||
if (drawTimeout) clearTimeout(drawTimeout);
|
if (drawTimeout) clearTimeout(drawTimeout);
|
||||||
if (extrasTimeout) clearTimeout(extrasTimeout);
|
if (extrasTimeout) clearTimeout(extrasTimeout);
|
||||||
|
drawTimeout = undefined;
|
||||||
|
extrasTimeout = undefined;
|
||||||
if (settings.hideWhenLocked) require("widget_utils").show();
|
if (settings.hideWhenLocked) require("widget_utils").show();
|
||||||
g.reset();
|
g.reset();
|
||||||
g.clear();
|
g.clear();
|
||||||
|
|
@ -91,7 +98,7 @@
|
||||||
g.clear();
|
g.clear();
|
||||||
if (settings.widgets) {
|
if (settings.widgets) {
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
setTimeout(Bangle.drawWidgets,0); //NEW
|
||||||
}
|
}
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ "id": "contourclock",
|
{ "id": "contourclock",
|
||||||
"name": "Contour Clock",
|
"name": "Contour Clock",
|
||||||
"shortName" : "Contour Clock",
|
"shortName" : "Contour Clock",
|
||||||
"version":"0.30",
|
"version":"0.31",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"description": "A Minimalist clockface with large Digits.",
|
"description": "A Minimalist clockface with large Digits.",
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
0.01: New app!
|
0.01: New app!
|
||||||
0.02-0.04: Bug fixes
|
0.02-0.04: Bug fixes
|
||||||
0.05: Submitted to the app loader
|
0.05: Submitted to the app loader
|
||||||
|
0.06: Added setting to show clock after start/resume
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
g.clear();
|
||||||
|
|
||||||
Bangle.POMOPLUS_ACTIVE = true; //Prevent the boot code from running. To avoid having to reload on every interaction, we'll control the vibrations from here when the user is in the app.
|
Bangle.POMOPLUS_ACTIVE = true; //Prevent the boot code from running. To avoid having to reload on every interaction, we'll control the vibrations from here when the user is in the app.
|
||||||
|
|
||||||
const storage = require("Storage");
|
const storage = require("Storage");
|
||||||
|
|
@ -13,32 +15,36 @@ if (
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawButtons() {
|
function drawButtons() {
|
||||||
|
let w = g.getWidth();
|
||||||
|
let h = g.getHeight();
|
||||||
//Draw the backdrop
|
//Draw the backdrop
|
||||||
const BAR_TOP = g.getHeight() - 24;
|
const BAR_TOP = h - 24;
|
||||||
g.setColor(0, 0, 1).setFontAlign(0, -1)
|
g.setColor(0, 0, 1).setFontAlign(0, -1)
|
||||||
.clearRect(0, BAR_TOP, g.getWidth(), g.getHeight())
|
.clearRect(0, BAR_TOP, w, h)
|
||||||
.fillRect(0, BAR_TOP, g.getWidth(), g.getHeight())
|
.fillRect(0, BAR_TOP, w, h)
|
||||||
.setColor(1, 1, 1);
|
.setColor(1, 1, 1);
|
||||||
|
|
||||||
if (!common.state.wasRunning) { //If the timer was never started, only show a play button
|
if (!common.state.wasRunning) { //If the timer was never started, only show a play button
|
||||||
g.drawImage(common.BUTTON_ICONS.play, g.getWidth() / 2, BAR_TOP);
|
g.drawImage(common.BUTTON_ICONS.play, w / 2, BAR_TOP);
|
||||||
} else {
|
} else {
|
||||||
g.drawLine(g.getWidth() / 2, BAR_TOP, g.getWidth() / 2, g.getHeight());
|
g.drawLine(w / 2, BAR_TOP, w / 2, h);
|
||||||
if (common.state.running) {
|
if (common.state.running) {
|
||||||
g.drawImage(common.BUTTON_ICONS.pause, g.getWidth() / 4, BAR_TOP)
|
g.drawImage(common.BUTTON_ICONS.pause, w / 4, BAR_TOP)
|
||||||
.drawImage(common.BUTTON_ICONS.skip, g.getWidth() * 3 / 4, BAR_TOP);
|
.drawImage(common.BUTTON_ICONS.skip, w * 3 / 4, BAR_TOP);
|
||||||
} else {
|
} else {
|
||||||
g.drawImage(common.BUTTON_ICONS.reset, g.getWidth() / 4, BAR_TOP)
|
g.drawImage(common.BUTTON_ICONS.reset, w / 4, BAR_TOP)
|
||||||
.drawImage(common.BUTTON_ICONS.play, g.getWidth() * 3 / 4, BAR_TOP);
|
.drawImage(common.BUTTON_ICONS.play, w * 3 / 4, BAR_TOP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawTimerAndMessage() {
|
function drawTimerAndMessage() {
|
||||||
|
let w = g.getWidth();
|
||||||
|
let h = g.getHeight();
|
||||||
g.reset()
|
g.reset()
|
||||||
.setFontAlign(0, 0)
|
.setFontAlign(0, 0)
|
||||||
.setFont("Vector", 36)
|
.setFont("Vector", 36)
|
||||||
.clearRect(0, 24, 176, 152)
|
.clearRect(w / 2 - 60, h / 2 - 34, w / 2 + 60, h / 2 + 34)
|
||||||
|
|
||||||
//Draw the timer
|
//Draw the timer
|
||||||
.drawString((() => {
|
.drawString((() => {
|
||||||
|
|
@ -53,7 +59,7 @@ function drawTimerAndMessage() {
|
||||||
|
|
||||||
if (hours >= 1) return `${parseInt(hours)}:${pad(minutes)}:${pad(seconds)}`;
|
if (hours >= 1) return `${parseInt(hours)}:${pad(minutes)}:${pad(seconds)}`;
|
||||||
else return `${parseInt(minutes)}:${pad(seconds)}`;
|
else return `${parseInt(minutes)}:${pad(seconds)}`;
|
||||||
})(), g.getWidth() / 2, g.getHeight() / 2)
|
})(), w / 2, h / 2)
|
||||||
|
|
||||||
//Draw the phase label
|
//Draw the phase label
|
||||||
.setFont("Vector", 12)
|
.setFont("Vector", 12)
|
||||||
|
|
@ -63,7 +69,7 @@ function drawTimerAndMessage() {
|
||||||
else if (currentPhase == common.PHASE_SHORT_BREAK) return `Short break ${numShortBreaks + 1}/${common.settings.numShortBreaks}`;
|
else if (currentPhase == common.PHASE_SHORT_BREAK) return `Short break ${numShortBreaks + 1}/${common.settings.numShortBreaks}`;
|
||||||
else return "Long break!";
|
else return "Long break!";
|
||||||
})(common.state.phase, common.state.numShortBreaks),
|
})(common.state.phase, common.state.numShortBreaks),
|
||||||
g.getWidth() / 2, g.getHeight() / 2 + 18);
|
w / 2, h / 2 + 18);
|
||||||
|
|
||||||
//Update phase with vibation if needed
|
//Update phase with vibation if needed
|
||||||
if (common.getTimeLeft() <= 0) {
|
if (common.getTimeLeft() <= 0) {
|
||||||
|
|
@ -91,6 +97,7 @@ Bangle.on("touch", (button, xy) => {
|
||||||
};
|
};
|
||||||
setupTimerInterval();
|
setupTimerInterval();
|
||||||
drawButtons();
|
drawButtons();
|
||||||
|
if (common.settings.showClock) Bangle.showClock();
|
||||||
|
|
||||||
} else if (common.state.running) {
|
} else if (common.state.running) {
|
||||||
//If we are running, there are two buttons: pause and skip
|
//If we are running, there are two buttons: pause and skip
|
||||||
|
|
@ -127,6 +134,7 @@ Bangle.on("touch", (button, xy) => {
|
||||||
drawTimerAndMessage();
|
drawTimerAndMessage();
|
||||||
setupTimerInterval();
|
setupTimerInterval();
|
||||||
drawButtons();
|
drawButtons();
|
||||||
|
if (common.settings.showClock) Bangle.showClock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -154,4 +162,4 @@ E.on('kill', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
|
||||||
|
|
@ -105,14 +105,13 @@ exports.nextPhase = function (vibrate) {
|
||||||
|
|
||||||
if (vibrate) {
|
if (vibrate) {
|
||||||
if (exports.state.phase == exports.PHASE_WORKING) {
|
if (exports.state.phase == exports.PHASE_WORKING) {
|
||||||
Bangle.buzz(750, 1);
|
Bangle.buzz(800, 1);
|
||||||
} else if (exports.state.phase == exports.PHASE_SHORT_BREAK) {
|
} else if (exports.state.phase == exports.PHASE_SHORT_BREAK) {
|
||||||
Bangle.buzz();
|
Bangle.buzz();
|
||||||
setTimeout(Bangle.buzz, 400);
|
setTimeout(Bangle.buzz, 400);
|
||||||
} else {
|
} else {
|
||||||
Bangle.buzz();
|
Bangle.buzz();
|
||||||
setTimeout(Bangle.buzz, 400);
|
setTimeout(Bangle.buzz, 400, 400);
|
||||||
setTimeout(Bangle.buzz, 600);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "pomoplus",
|
"id": "pomoplus",
|
||||||
"name": "Pomodoro Plus",
|
"name": "Pomodoro Plus",
|
||||||
"version": "0.05",
|
"version": "0.06",
|
||||||
"description": "A configurable pomodoro timer that runs in the background.",
|
"description": "A configurable pomodoro timer that runs in the background.",
|
||||||
"icon": "icon.png",
|
"icon": "icon.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@ const storage = require("Storage");
|
||||||
longBreak: 900000, //15 minute long break
|
longBreak: 900000, //15 minute long break
|
||||||
numShortBreaks: 3, //3 short breaks for every long break
|
numShortBreaks: 3, //3 short breaks for every long break
|
||||||
pausedTimerExpireTime: 21600000, //If the timer was left paused for >6 hours, reset it on next launch
|
pausedTimerExpireTime: 21600000, //If the timer was left paused for >6 hours, reset it on next launch
|
||||||
widget: false //If a widget is added in the future, whether the user wants it
|
showClock: false, //Show clock after start/resume
|
||||||
|
widget: false, //If a widget is added in the future, whether the user wants it
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,6 +90,13 @@ const storage = require("Storage");
|
||||||
else return `${Math.floor(value / 3600000)}h ${(value % 3600000) / 60000}m`
|
else return `${Math.floor(value / 3600000)}h ${(value % 3600000) / 60000}m`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'Show clock': {
|
||||||
|
value: settings.showClock,
|
||||||
|
onchange: function(value) {
|
||||||
|
settings.showClock = value;
|
||||||
|
save();
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
E.showMenu(menu)
|
E.showMenu(menu)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -823,7 +823,7 @@ function showAppSettings(app) {
|
||||||
try {
|
try {
|
||||||
appSettings = eval(appSettings);
|
appSettings = eval(appSettings);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(`${app.name} settings error:`, e)
|
console.log(`${app.name} settings error:`, e);
|
||||||
return showError(/*LANG*/'Error in settings');
|
return showError(/*LANG*/'Error in settings');
|
||||||
}
|
}
|
||||||
if (typeof appSettings !== "function") {
|
if (typeof appSettings !== "function") {
|
||||||
|
|
@ -833,7 +833,7 @@ function showAppSettings(app) {
|
||||||
// pass showAppSettingsMenu as "back" argument
|
// pass showAppSettingsMenu as "back" argument
|
||||||
appSettings(()=>showAppSettingsMenu());
|
appSettings(()=>showAppSettingsMenu());
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(`${app.name} settings error:`, e)
|
console.log(`${app.name} settings error:`, e);
|
||||||
return showError(/*LANG*/'Error in settings');
|
return showError(/*LANG*/'Error in settings');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
core
2
core
|
|
@ -1 +1 @@
|
||||||
Subproject commit 71813fe2eaf19987cec07db850ab9d1959694f96
|
Subproject commit 11f8e16d2ebb726bb92f29d812dc3ccba4f362a9
|
||||||
Loading…
Reference in New Issue