Update lib.js

Updated with more feedback http://forum.espruino.com/comments/16515847/
Next to add the settings app, update README and screenshots and release.
pull/1814/head
sir-indy 2022-05-10 13:23:41 +01:00 committed by GitHub
parent 130e969883
commit 18967ef7cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 49 additions and 32 deletions

View File

@ -5,13 +5,16 @@ exports.input = function(options) {
var text = options.text; var text = options.text;
if ("string"!=typeof text) text=""; if ("string"!=typeof text) text="";
var settings = require('Storage').readJSON("kbmulti.settings.json", true) || {};
if (settings.firstLaunch==undefined) { settings.firstLaunch = true; }
if (settings.charTimeout==undefined) { settings.charTimeout = 500; }
var fontSize = "6x15"; var fontSize = "6x15";
var Layout = require("Layout"); var Layout = require("Layout");
var letters = { var letters = {
"1":".,!?1","2":"ABC2","3":"DEF3", "1":".,!?1","2":"ABC2","3":"DEF3",
"4":"GHI4","5":"JKL5","6":"MNO6", "4":"GHI4","5":"JKL5","6":"MNO6",
"7":"PQRS7","8":"TUV80","9":"WXYZ9", "7":"PQRS7","8":"TUV80","9":"WXYZ9",
//"0":"_@:/0"
}; };
var helpMessage = 'swipe:\nRight: Space\nLeft:Backspace\nUp/Down: Caps lock\n'; var helpMessage = 'swipe:\nRight: Space\nLeft:Backspace\nUp/Down: Caps lock\n';
@ -71,7 +74,7 @@ exports.input = function(options) {
charTimeout = setTimeout(function() { charTimeout = setTimeout(function() {
charTimeout = undefined; charTimeout = undefined;
newCharacter(); newCharacter();
}, 500); }, settings.charTimeout);
} }
function onSwipe(dirLeftRight, dirUpDown) { function onSwipe(dirLeftRight, dirUpDown) {
@ -85,20 +88,24 @@ exports.input = function(options) {
} }
} }
function onHelp() { function onHelp(resolve,reject) {
Bangle.removeListener("swipe", onSwipe); Bangle.removeListener("swipe", onSwipe);
E.showPrompt( E.showPrompt(
helpMessage, {title: "Help", buttons : {"Ok":true}} helpMessage, {title: "Help", buttons : {"Ok":true}}
).then(function(v) { ).then(function(v) {
Bangle.on('swipe', onSwipe); Bangle.on('swipe', onSwipe);
generateLayout(resolve,reject);
layout.render(); layout.render();
}); });
} }
return new Promise((resolve,reject) => { function generateLayout(resolve,reject) {
layout = new Layout( { layout = new Layout( {
type:"v", c: [ type:"v", c: [
{type:"txt", font:"10%", label:text, id:"text", cb: l=>onHelp(), fillx:1}, {type:"h", c: [
{type:"txt", font:"12x20", label:text.slice(-12), id:"text", fillx:1},
{type:"btn", font:'6x8', label:'?', cb: l=>onHelp(resolve,reject), filly:1 },
]},
{type:"h", c: [ {type:"h", c: [
{type:"btn", font:fontSize, label:letters[1], cb: l=>onKeyPad(1), id:'1', fillx:1, filly:1 }, {type:"btn", font:fontSize, label:letters[1], cb: l=>onKeyPad(1), id:'1', fillx:1, filly:1 },
{type:"btn", font:fontSize, label:letters[2], cb: l=>onKeyPad(2), id:'2', fillx:1, filly:1 }, {type:"btn", font:fontSize, label:letters[2], cb: l=>onKeyPad(2), id:'2', fillx:1, filly:1 },
@ -121,8 +128,18 @@ function onHelp() {
g.clearRect(Bangle.appRect); g.clearRect(Bangle.appRect);
resolve(text); resolve(text);
}}); }});
}
return new Promise((resolve,reject) => {
g.clearRect(Bangle.appRect); g.clearRect(Bangle.appRect);
if (settings.firstLaunch) {
onHelp(resolve,reject);
settings.firstLaunch = false;
require('Storage').writeJSON("kbmulti.settings.json", settings);
} else {
generateLayout(resolve,reject);
Bangle.on('swipe', onSwipe); Bangle.on('swipe', onSwipe);
layout.render(); layout.render();
}
}); });
}; };