Allow hiding/showing widgets on drag up/down
parent
eb54751886
commit
c047cfda6d
|
|
@ -6,3 +6,4 @@
|
||||||
0.05: Add precompilation to js for performance
|
0.05: Add precompilation to js for performance
|
||||||
0.06: Watchfaces can be refreshed partly
|
0.06: Watchfaces can be refreshed partly
|
||||||
0.07: Allow wrapping drawing in timeouts to get faster reactions
|
0.07: Allow wrapping drawing in timeouts to get faster reactions
|
||||||
|
Show/Hide widgets with swipe up or down
|
||||||
|
|
|
||||||
|
|
@ -577,6 +577,12 @@ function initialDraw(resources, face){
|
||||||
|
|
||||||
promise.then(()=>{
|
promise.then(()=>{
|
||||||
var currentDrawingTime = Date.now();
|
var currentDrawingTime = Date.now();
|
||||||
|
if (showWidgets){
|
||||||
|
//print("Draw widgets");
|
||||||
|
Bangle.drawWidgets();
|
||||||
|
g.setColor(g.theme.fg);
|
||||||
|
g.drawLine(0,24,g.getWidth(),24);
|
||||||
|
}
|
||||||
lastDrawTime = Date.now() - start;
|
lastDrawTime = Date.now() - start;
|
||||||
drawingTime += Date.now() - currentDrawingTime;
|
drawingTime += Date.now() - currentDrawingTime;
|
||||||
//print(new Date().toISOString(), "Drawing done in", lastDrawTime.toFixed(0), "active:", drawingTime.toFixed(0));
|
//print(new Date().toISOString(), "Drawing done in", lastDrawTime.toFixed(0), "active:", drawingTime.toFixed(0));
|
||||||
|
|
@ -695,7 +701,42 @@ function handleLock(isLocked, forceRedraw){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var showWidgets = false;
|
||||||
|
var showWidgetsChanged = false;
|
||||||
|
var currentDragDistance = 0;
|
||||||
|
|
||||||
Bangle.setUI("clock");
|
Bangle.setUI("clock");
|
||||||
|
Bangle.on('drag', (e)=>{
|
||||||
|
currentDragDistance += e.dy;
|
||||||
|
if (Math.abs(currentDragDistance) < 10) return;
|
||||||
|
dragDown = currentDragDistance > 0;
|
||||||
|
currentDragDistance = 0;
|
||||||
|
if (!showWidgets && dragDown){
|
||||||
|
//print("Enable widgets");
|
||||||
|
if (WIDGETS && typeof WIDGETS === "object") {
|
||||||
|
for (let w in WIDGETS) {
|
||||||
|
var wd = WIDGETS[w];
|
||||||
|
wd.draw = originalWidgetDraw[w];
|
||||||
|
wd.area = originalWidgetArea[w];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showWidgetsChanged = true;
|
||||||
|
}
|
||||||
|
if (showWidgets && !dragDown){
|
||||||
|
//print("Disable widgets");
|
||||||
|
clearWidgetsDraw();
|
||||||
|
firstDraw = true;
|
||||||
|
showWidgetsChanged = true;
|
||||||
|
}
|
||||||
|
if (showWidgetsChanged){
|
||||||
|
showWidgetsChanged = false;
|
||||||
|
//print("Draw after widget change");
|
||||||
|
showWidgets = dragDown;
|
||||||
|
initialDraw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
if (!events || events.includes("pressure")){
|
if (!events || events.includes("pressure")){
|
||||||
Bangle.on('pressure', handlePressure);
|
Bangle.on('pressure', handlePressure);
|
||||||
|
|
@ -716,9 +757,18 @@ if (!events || events.includes("charging")) {
|
||||||
Bangle.on('charging', handleCharging);
|
Bangle.on('charging', handleCharging);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var originalWidgetDraw = {};
|
||||||
|
var originalWidgetArea = {};
|
||||||
|
|
||||||
function clearWidgetsDraw(){
|
function clearWidgetsDraw(){
|
||||||
|
//print("Clear widget draw calls");
|
||||||
if (WIDGETS && typeof WIDGETS === "object") {
|
if (WIDGETS && typeof WIDGETS === "object") {
|
||||||
for (let wd of WIDGETS) {
|
originalWidgetDraw = {};
|
||||||
|
originalWidgetArea = {};
|
||||||
|
for (let w in WIDGETS) {
|
||||||
|
var wd = WIDGETS[w];
|
||||||
|
originalWidgetDraw[w] = wd.draw;
|
||||||
|
originalWidgetArea[w] = wd.area;
|
||||||
wd.draw = () => {};
|
wd.draw = () => {};
|
||||||
wd.area = "";
|
wd.area = "";
|
||||||
}
|
}
|
||||||
|
|
@ -728,6 +778,6 @@ function clearWidgetsDraw(){
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
clearWidgetsDraw();
|
clearWidgetsDraw();
|
||||||
}, 100);
|
}, 0);
|
||||||
|
|
||||||
handleLock(Bangle.isLocked());
|
handleLock(Bangle.isLocked());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue