Merge pull request #1585 from rigrig/layout-back

Layout: add support for `back` option
pull/1588/head^2
Gordon Williams 2022-03-17 16:14:30 +00:00 committed by GitHub
commit 69c89728e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 2 deletions

View File

@ -59,6 +59,7 @@ options is an object containing:
* `label` - the text on the button * `label` - the text on the button
* `cb` - a callback function * `cb` - a callback function
* `cbl` - a callback function for long presses * `cbl` - a callback function for long presses
* `back` - a callback function, passed as `back` into Bangle.setUI
If automatic lazy rendering is enabled, calls to `layout.render()` will attempt to automatically If automatic lazy rendering is enabled, calls to `layout.render()` will attempt to automatically
determine what objects have changed or moved, clear their previous locations, and re-render just those objects. determine what objects have changed or moved, clear their previous locations, and re-render just those objects.
@ -89,7 +90,7 @@ function Layout(layout, options) {
options = options || {}; options = options || {};
this.lazy = options.lazy || false; this.lazy = options.lazy || false;
var btnList; var btnList, uiSet;
Bangle.setUI(); // remove all existing input handlers Bangle.setUI(); // remove all existing input handlers
if (process.env.HWVERSION!=2) { if (process.env.HWVERSION!=2) {
// no touchscreen, find any buttons in 'layout' // no touchscreen, find any buttons in 'layout'
@ -104,7 +105,7 @@ function Layout(layout, options) {
this.physBtns = 0; this.physBtns = 0;
this.buttons = btnList; this.buttons = btnList;
this.selectedButton = -1; this.selectedButton = -1;
Bangle.setUI("updown", dir=>{ Bangle.setUI({mode:"updown", back:options.back}, dir=>{
var s = this.selectedButton, l=this.buttons.length; var s = this.selectedButton, l=this.buttons.length;
if (dir===undefined && this.buttons[s]) if (dir===undefined && this.buttons[s])
return this.buttons[s].cb(); return this.buttons[s].cb();
@ -119,8 +120,10 @@ function Layout(layout, options) {
} }
this.selectedButton = s; this.selectedButton = s;
}); });
uiSet = true;
} }
} }
if (options.back && !uiSet) Bangle.setUI({mode: "custom", back: options.back});
if (options.btns) { if (options.btns) {
var buttons = options.btns; var buttons = options.btns;