From 18967ef7ccdf02b77ddde822ae72bb79101bd896 Mon Sep 17 00:00:00 2001 From: sir-indy <53864146+sir-indy@users.noreply.github.com> Date: Tue, 10 May 2022 13:23:41 +0100 Subject: [PATCH] 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. --- apps/kbmulti/lib.js | 81 +++++++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/apps/kbmulti/lib.js b/apps/kbmulti/lib.js index 527c8a8cc..0b41cc9d0 100644 --- a/apps/kbmulti/lib.js +++ b/apps/kbmulti/lib.js @@ -5,13 +5,16 @@ exports.input = function(options) { var text = options.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 Layout = require("Layout"); var letters = { "1":".,!?1","2":"ABC2","3":"DEF3", "4":"GHI4","5":"JKL5","6":"MNO6", "7":"PQRS7","8":"TUV80","9":"WXYZ9", - //"0":"_@:/0" }; var helpMessage = 'swipe:\nRight: Space\nLeft:Backspace\nUp/Down: Caps lock\n'; @@ -71,7 +74,7 @@ exports.input = function(options) { charTimeout = setTimeout(function() { charTimeout = undefined; newCharacter(); - }, 500); + }, settings.charTimeout); } function onSwipe(dirLeftRight, dirUpDown) { @@ -85,44 +88,58 @@ exports.input = function(options) { } } -function onHelp() { - Bangle.removeListener("swipe", onSwipe); - E.showPrompt( - helpMessage, {title: "Help", buttons : {"Ok":true}} - ).then(function(v) { - Bangle.on('swipe', onSwipe); - layout.render(); - }); -} + function onHelp(resolve,reject) { + Bangle.removeListener("swipe", onSwipe); + E.showPrompt( + helpMessage, {title: "Help", buttons : {"Ok":true}} + ).then(function(v) { + Bangle.on('swipe', onSwipe); + generateLayout(resolve,reject); + layout.render(); + }); + } - return new Promise((resolve,reject) => { + function generateLayout(resolve,reject) { layout = new Layout( { - type:"v", c: [ - {type:"txt", font:"10%", label:text, id:"text", cb: l=>onHelp(), fillx:1}, - {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[2], cb: l=>onKeyPad(2), id:'2', fillx:1, filly:1 }, - {type:"btn", font:fontSize, label:letters[3], cb: l=>onKeyPad(3), id:'3', fillx:1, filly:1 }, - ]}, - {type:"h", filly:1, c: [ - {type:"btn", font:fontSize, label:letters[4], cb: l=>onKeyPad(4), id:'4', fillx:1, filly:1 }, - {type:"btn", font:fontSize, label:letters[5], cb: l=>onKeyPad(5), id:'5', fillx:1, filly:1 }, - {type:"btn", font:fontSize, label:letters[6], cb: l=>onKeyPad(6), id:'6', fillx:1, filly:1 }, - ]}, - {type:"h", filly:1, c: [ - {type:"btn", font:fontSize, label:letters[7], cb: l=>onKeyPad(7), id:'7', fillx:1, filly:1 }, - {type:"btn", font:fontSize, label:letters[8], cb: l=>onKeyPad(8), id:'8', fillx:1, filly:1 }, - {type:"btn", font:fontSize, label:letters[9], cb: l=>onKeyPad(9), id:'9', fillx:1, filly:1 }, - ]}, - ] + type:"v", c: [ + {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:"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[3], cb: l=>onKeyPad(3), id:'3', fillx:1, filly:1 }, + ]}, + {type:"h", filly:1, c: [ + {type:"btn", font:fontSize, label:letters[4], cb: l=>onKeyPad(4), id:'4', fillx:1, filly:1 }, + {type:"btn", font:fontSize, label:letters[5], cb: l=>onKeyPad(5), id:'5', fillx:1, filly:1 }, + {type:"btn", font:fontSize, label:letters[6], cb: l=>onKeyPad(6), id:'6', fillx:1, filly:1 }, + ]}, + {type:"h", filly:1, c: [ + {type:"btn", font:fontSize, label:letters[7], cb: l=>onKeyPad(7), id:'7', fillx:1, filly:1 }, + {type:"btn", font:fontSize, label:letters[8], cb: l=>onKeyPad(8), id:'8', fillx:1, filly:1 }, + {type:"btn", font:fontSize, label:letters[9], cb: l=>onKeyPad(9), id:'9', fillx:1, filly:1 }, + ]}, + ] },{back: ()=>{ Bangle.setUI(); Bangle.removeListener("swipe", onSwipe); g.clearRect(Bangle.appRect); resolve(text); }}); + } + + return new Promise((resolve,reject) => { g.clearRect(Bangle.appRect); - Bangle.on('swipe', onSwipe); - layout.render(); + if (settings.firstLaunch) { + onHelp(resolve,reject); + settings.firstLaunch = false; + require('Storage').writeJSON("kbmulti.settings.json", settings); + } else { + generateLayout(resolve,reject); + Bangle.on('swipe', onSwipe); + layout.render(); + } }); };