New files and animals apps
parent
fcab506202
commit
a1c33d16b5
57
apps.json
57
apps.json
|
|
@ -6,8 +6,22 @@
|
|||
"tags": "tool,system",
|
||||
"storage": [
|
||||
{"name":".bootcde","url":"bootloader.js"}
|
||||
]
|
||||
],
|
||||
"sortorder" : -1
|
||||
},
|
||||
{ "id": "clock",
|
||||
"name": "Morphing Clock",
|
||||
"icon": "clock-morphing.png",
|
||||
"description": "7 segment clock that morphs between minutes and hours",
|
||||
"tags": "clock",
|
||||
"storage": [
|
||||
{"name":"+clock","url":"clock.json"},
|
||||
{"name":"-clock","url":"clock-morphing.js"},
|
||||
{"name":"*clock","url":"clock-icon.js","evaluate":true}
|
||||
],
|
||||
"sortorder" : -1
|
||||
},
|
||||
|
||||
{ "id": "trex",
|
||||
"name": "T-Rex",
|
||||
"icon": "trex.png",
|
||||
|
|
@ -30,17 +44,6 @@
|
|||
{"name":"*compass","url":"compass-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "clock",
|
||||
"name": "Morphing Clock",
|
||||
"icon": "clock-morphing.png",
|
||||
"description": "7 segment clock that morphs between minutes and hours",
|
||||
"tags": "clock",
|
||||
"storage": [
|
||||
{"name":"+clock","url":"clock.json"},
|
||||
{"name":"-clock","url":"clock-morphing.js"},
|
||||
{"name":"*clock","url":"clock-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "gpstime",
|
||||
"name": "GPS Time",
|
||||
"icon": "gpstime.png",
|
||||
|
|
@ -97,6 +100,17 @@
|
|||
{"name":"*settings","url":"settings-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "files",
|
||||
"name": "App Manager",
|
||||
"icon": "files.png",
|
||||
"description": "Show currently installed apps, free space, and allow their deletion from the watch",
|
||||
"tags": "tool,system",
|
||||
"storage": [
|
||||
{"name":"+files","url":"files.json"},
|
||||
{"name":"-files","url":"files.js"},
|
||||
{"name":"*files","url":"files-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "sbat",
|
||||
"name": "Battery Level Widget",
|
||||
"icon": "widget-battery.png",
|
||||
|
|
@ -128,6 +142,25 @@
|
|||
{"name":"*swatch","url":"stopwatch-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "animals",
|
||||
"name": "Animals Game",
|
||||
"icon": "animals.png",
|
||||
"description": "Simple toddler's game - displays a different number of animals each time the screen is pressed",
|
||||
"tags": "game",
|
||||
"storage": [
|
||||
{"name":"+animals","url":"animals.json"},
|
||||
{"name":"-animals","url":"animals.js"},
|
||||
{"name":"*animals","url":"animals-icon.js","evaluate":true},
|
||||
{"name":"*snake","url":"animals-snake.js","evaluate":true},
|
||||
{"name":"*duck","url":"animals-duck.js","evaluate":true},
|
||||
{"name":"*swan","url":"animals-swan.js","evaluate":true},
|
||||
{"name":"*fox","url":"animals-fox.js","evaluate":true},
|
||||
{"name":"*camel","url":"animals-camel.js","evaluate":true},
|
||||
{"name":"*pig","url":"animals-pig.js","evaluate":true},
|
||||
{"name":"*sheep","url":"animals-sheep.js","evaluate":true},
|
||||
{"name":"*mouse","url":"animals-mouse.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
{ "id": "qrcode",
|
||||
"name": "Custom QR Code",
|
||||
"icon": "qrcode.png",
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4Az4/HDDAACCywaSCpgeLBQOjzowRIxZPMBIWj0YvjNRKQSCpIWBEBq/VF6hrKdpwuKABYvXFywlDXjw5aF1gvKF0gv5F0ovvFxQxkF9ztLF8ItJF5XGAAIrfeJYtB4D7TFyQlEFwg8INgZtFF6wuCF4wAFBoPAF7ouNF8AfCF56ZFFyofEF9YgCF5z6GF9y+TC4SAFF9ZgNBgovZMAeczgRJBYovXMAtPAAIQIBYouXDAWjEYUrGBMrBYgvY/15vNVCtAADqoACCs4A/AH4A/AH4A/ABY")
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH04AAIttAAYv/FzkNhowoF49h1KOsnGF5vNF9dc1IvBAAYvnLwQvrrn+FkgvIdcoADsVcm83nFiw4vo1mrw4AB1nX1Yvo64AC6GrvVVvQpfp4AEq2BwOlwItBAAVWFTMrFYoAClYKCFgYwZEIYrHBYovHSSQrHFI1Wq16AAWARwgADFaxTDFIWAAAK8BAAYvIMBgrIKoQpHF5xgObYYrPwINCF63+VYYrPAAWlGANWFwtWF5opQFYQAFMQy/MF5gpIAA4wEFxoxEwCSBFJxhJLxwAFqpZPAA2AFyoABFypgBFqowXFrAxTFjgAH4PBzuXy4pkAA263WWywvvAAgv/F7AAEF9+6YFQusGQousAH4A/AH4A/AAoA="))
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AG4wACDtQQDGLAcSBoOr1ek44wVCoPH0gdBF6Gs1mlGCguC0obBF6YwBSSQSCFwQvW0gwQCAWkF7Ol0bXQRoQvaMB5eEF7GrMA3AAAwuD0YTBDQgvP5wUCMAPH44iC4wvHBYYRBLwes5wvP5AvEEIYvNAAIvE5AvP44vdO4QvLGAIvEUoQAGFg4ACXwYvCFxjwE1fIF5IAKCwTuPYArrEACZ7BXxzAE1YvZDQYvNGAYuXDQguOGAYAbFyAvvFzowRF9wUF4AwnCY3AAAgjJB5gvTzt5AAWcFw+cBoedF6RPIEIOip1PvIOHvNPp2iHoJvIF6XAF4NUqhSBBopsBBYIvBT5K/TEYOiEQJgGA4ILCRwK/TGI4wDAAQvHXoYuGFpv+1mrAAnIGIQACHg4KD5AZF1gtMABGr44uIGAnHFAIAIGDAvJFywxL1YtHAAYuJX5xhK0gABqtPp1Op9VBARdXFxRgB0ulp8rAAVPA4KNKGDImB0uAF4eABAQuYGJQmC0uBp9PFwYvIFqIxJR4QwCwIFDR4wtVGRAvJFjwyGFoYADF4QsgAAovFFkwA/AH4At"))
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4Ap3YuuAAIqnsIACv4uosNbAAIvCv4uom8xm4wCsIvomMxFwIwCWDwKJRwRjBAYItbwuFGI46DMQouZwwADGIQvKL4JeZFYOHAAQwGF4iSDLzQrBAwIECF4YuFZxIvSwoqBA4ZlBFZAtaF5IwBeYYseR5JgJFzrvFGAgxBFsRgEGAQxFE7pOGAoLCBGIJjGFzeFcIYKFGAIxeEQgACMQ5jDSjS0EAAQwHGI7jcA4LoDGAzPEGC4ZCVowGBeowwFMYIvVC4OHBIrCIShAvdGARgIGAgvVR5AwCQ4YvJHZAvPGBGFEpIvXGAYxDGQgvjGAgAEEowmEFzIkGwr3BGBAAGF64lIwowMFzIyJGBQudWRQueXAOFDgpUkcgIADGIaElw2HAAYwCWkpbCAgYwGwpehMo6TCHQZegYxYugLw4A/AH4A/AH4AVA="))
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4AYwIACqwABFtQwrF4wwnFIWs6GsF4oAICIIvb6AABGAQvL0wvcJoIABFw0AlYGEvSQd0peBLA0rF4rvgrqNLfDwvDF1IpNFzwsSFrIsTFv6J1Lv4u0dVwwaF64wWFzAACwOBF94wRFzQcBF6IucX1uB1msF8wXFF4QwRRLgvmXCgv1L35e/Rv4fCGNIcGGFAaIF94Ambz4w/XJAzzdbwA/AH4A//w="))
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4A/ACXJ5PKAQfKAAPJB4nDAAIsaEwQAJ5IrCAAYbFGyBWBFyooCGxQABPAyDEABYuHGxInFAAQGGLyoIGLxQvCFyAvJBIzjKdB6OLagYwDc5K/DFyIVBAAprHF5IsTHaAuKRoSOSABwvMXyZhPF5iNfF9nJp9PGB4vh5PD3u8X86PCFwO8AAS/mGQe9zAACF/CPdF4aPD3rwmGAu9FxRghegQuKL8IvBFxYwhFx6QdFpxedXIIuQLpHJ4YdCBoQDDFQosRLxAaB4YAEIRIQDFyQvEFhYwGCQgvX/wcOCYYuWDYSmCF6CfEF6mlz96vX+z+evVPCZwABCJYAJvVVAAVPAAYTNCJoAJFwYvPCY5gUAH4A/AH4A/AH4A2")
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AGesAAQuuGAQ1jFQoAKF1wwdFyQycF6wwVFi4wWEiOBq1WqoABvQHBvWALsl6p4ADF4IIBGwSNjMAJdCAAVVGwQwPXjWBFoMrF4IwOFzVWp94lV4vIwNFzS8CvGi0YFCGBSNadohdCF9gAGdsgvuGJTvkGAgABFxv+wAwcAAQsLAAVPF9lPAAOIF1tWF7qMOp4DBxAABXtIADGAWB0oupGAeAvQABwJmGAwmlwQuZAAQuCF4SYDAgRtBBoeswKsDF7gsEF4+BqovfAANWF5VWFwIvZGAf+EAYuDBooOEF8ANJF/4vREIQv7BxIvZEIwvvBwQveEIIEDF9QA/AH4A/AH4ASA=")
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4Ap3YuuAAIqnsIACv4uosNbAAIvCv4uom8xm4wCsIvomMxFwIwCWDwKJRwRjBAYItbwuFGI46DMQouZwwADGIQvKL4JeZFYOHAAQwGF4iSDLzQrBAwIECF4YuFZxIvSwoqBA4ZlBFZAtaF5IwBeYYseR5JgJFzrvFGAgxBFsRgEGAQxFE7pOGAoLCBGIJjGFzeFcIYKFGAIxeEQgACMQ5jDSjS0EAAQwHGI7jcA4LoDGAzPEGC4ZCVowGBeowwFMYIvVC4OHBIrCIShAvdGARgIGAgvVR5AwCQ4YvJHZAvPGBGFEpIvXGAYxDGQgvjGAgAEEowmEFzIkGwr3BGBAAGF64lIwowMFzIyJGBQudWRQueXAOFDgpUkcgIADGIaElw2HAAYwCWkpbCAgYwGwpehMo6TCHQZegYxYugLw4A/AH4A/AH4AVA="))
|
||||
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/ADGsAAYuuGFIuGGE+swOBq2BF9UrlcAqxgrp9PlYvsvWep6OFF82e4We0oqCF8/CAAWlewYvpA4gvmFw4voA4zuoF/4u/FzAv/F34uOF9IuN64AGFzwvGFo4yZFwwvDAgIuMAAYWBVJ4vIAYQuQF4LZPFw4ADF0QvLFyJe0F9LZHR04bJF8h7LGQ4vaFxovgFygwYFpwvUGBQuYGCgtQFxQvMGIgtRFxYwPACYuMGEIuOGDwtQGLgtUGLAtYGiQrfAH4A/AGQ"))
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
var current="";
|
||||
var images="snake,duck,swan,fox,camel,pig,sheep,mouse".split(",");
|
||||
var lastPress = 0;
|
||||
|
||||
function next(e) {
|
||||
Bangle.setLCDPower(1);
|
||||
if (e.time<(lastPress+0.5)) return;
|
||||
lastPress = e.time;
|
||||
var last = current;
|
||||
do {
|
||||
var n = 0|(Math.random()*images.length);
|
||||
current = images[n];
|
||||
} while (current && current==last);
|
||||
g.clear();
|
||||
var n = 1 + (0|(Math.random()*3.9));
|
||||
var img = require("Storage").read("*"+current);
|
||||
if (n==1)
|
||||
g.drawImage(img,120,120,{scale:4,rotate:Math.random()-0.5});
|
||||
else
|
||||
for (var i=0;i<n;i++) {
|
||||
var a = Math.PI*2*i/n;
|
||||
g.drawImage(img,120+60*Math.cos(a),120+60*Math.sin(a),{scale:1.5,rotate:Math.random()-0.5});
|
||||
}
|
||||
g.flip();
|
||||
}
|
||||
|
||||
setWatch(next,BTN4,{repeat:true});
|
||||
setWatch(next,BTN5,{repeat:true});
|
||||
next({time:getTime()});
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name":"Animals Game",
|
||||
"icon":"*animals",
|
||||
"src":"-animals"
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwghC/AEkIxAABwUiAAwKBC6+AC6ERiIXDGBAXPGA8JzIAByQXKGA4XUA4eDmYAGJwQXVxEizAXPIgIXDwWZC6uIxIwCC6eIGAQX/C9i/FC5mCCw0yC5wAMC/4Xnx//ABf4C/Xzdw8zn4XkL/5f/L+oUDI6YX3AB4XeAH4AdA=="))
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
const storage = require('Storage');
|
||||
|
||||
const boolFormat = (v) => v ? "On" : "Off";
|
||||
|
||||
let m;
|
||||
|
||||
function showMainMenu() {
|
||||
const mainmenu = {
|
||||
'': {
|
||||
'title': 'App Manager',
|
||||
},
|
||||
'Free': {
|
||||
value: undefined,
|
||||
format: (v) => {
|
||||
return storage.getFree();
|
||||
},
|
||||
onchange: () => {}
|
||||
},
|
||||
'Compact': () => {
|
||||
E.showMessage('Compacting...');
|
||||
try {
|
||||
storage.compact();
|
||||
} catch (e) {
|
||||
}
|
||||
m = showMainMenu();
|
||||
},
|
||||
'Apps': ()=> m = showApps(),
|
||||
'< Back': load
|
||||
};
|
||||
return Bangle.menu(mainmenu);
|
||||
}
|
||||
|
||||
function eraseApp(app) {
|
||||
E.showMessage('Erasing ' + app.name + '...');
|
||||
storage.erase(app['']);
|
||||
storage.erase(app.icon);
|
||||
storage.erase(app.src);
|
||||
}
|
||||
|
||||
function showAppMenu(app) {
|
||||
const appmenu = {
|
||||
'': {
|
||||
'title': app.name,
|
||||
},
|
||||
'< Back': () => m = showApps(),
|
||||
'Erase': () => {
|
||||
E.showPrompt('Erase ' + app.name + '?').then((v) => {
|
||||
if (v) {
|
||||
Bangle.buzz(100, 1);
|
||||
eraseApp(app);
|
||||
m = showApps();
|
||||
} else {
|
||||
m = showAppMenu(app)
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
return Bangle.menu(appmenu);
|
||||
}
|
||||
|
||||
function showApps() {
|
||||
const appsmenu = {
|
||||
'': {
|
||||
'title': 'Apps',
|
||||
},
|
||||
'< Back': () => m = showMainMenu(),
|
||||
};
|
||||
|
||||
var list = storage.list().filter((a)=> {
|
||||
return a[0]=='+' && a !== '+setting';
|
||||
}).sort().map((app) => {
|
||||
var ret = storage.readJSON(app);
|
||||
ret[''] = app;
|
||||
return ret;
|
||||
});
|
||||
|
||||
if (list.length > 0) {
|
||||
list.reduce((menu, app) => {
|
||||
menu[app.name] = () => m = showAppMenu(app);
|
||||
return menu;
|
||||
}, appsmenu);
|
||||
appsmenu['Erase All'] = () => {
|
||||
E.showPrompt('Erase all?').then((v) => {
|
||||
if (v) {
|
||||
Bangle.buzz(100, 1);
|
||||
for (var n = 0; n < list.length; n++)
|
||||
eraseApp(list[n]);
|
||||
}
|
||||
m = showApps();
|
||||
});
|
||||
};
|
||||
} else {
|
||||
appsmenu['...No Apps...'] = {
|
||||
value: undefined,
|
||||
format: ()=> '',
|
||||
onchange: ()=> {}
|
||||
};
|
||||
}
|
||||
return Bangle.menu(appsmenu);
|
||||
}
|
||||
|
||||
m = showMainMenu();
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name":"App Manager",
|
||||
"icon":"*files",
|
||||
"src":"-files"
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 617 B |
|
|
@ -1 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwwhC/AH4A/ABEIxGAAgwWO/+IAoIECDB0I////GIxGPAoIXR//854DCC54TCAAYXQCYXIDYYXOOIP4xnMAAJgBPoSMKOIP8xgXDGQJ9CGREIOIXMxmICwITBxh9CC5BEBBoIWBOweMMYZKIWwRdBAgQeDBYYXKFAKnFA4YXIKgJeBFwj0DI5UICgIXDOoIXC5gCBYRIXCN4I+CDgQXCYBJIBBwIXGBQIXX9AXJI4QXHI5Z3K/h3LTYanHX4TvLxhICAAaXCd5gnDd4gLDI5X4xj0CAAPIGwbvJIAeIDAQWBIwXPO5EIRIPP/mM5AFB5HIA4IFBC5DZECAPMDQJdB5AUKJQ3IxnvAgIsLC4ZYCAAgXnCIJxCXgQXPYYJxCAgKMMDAoRCAggA/AH4A/AAoA="))
|
||||
require("heatshrink").decompress(atob("mEwghC/AFEiAAgX/C/4SFkADBgQXFBIgECAAYSCkAWGBIoXGyQTHABBZLkUhiMRiQXLIQwVBAAZlIC44tCAAYxGIxIWFGA4XIFwwwHXBAWHGAwXHFxAwGPAYXTX44XDiAJBgIXGyDAHFAYKDMAq+EGAgXNCwwX/C453XU6IWHa6ZFCC6JJCC4hgEAAoOEC5AwIFwhgEBAgwIBoqmGGBIuFVAgXFGAwLFYAoLFGIYtFeA4MGABMpC4pICkBMGBIpGFC4SuIBIoWFAAxZLC/4X/AFQ"))
|
||||
|
|
|
|||
Loading…
Reference in New Issue