From 98597073ef1a97c95f01321382a68d4a27767c28 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 1 Jul 2023 11:55:00 +0100 Subject: [PATCH] rep: add recorder functionality --- apps/rep/README.md | 3 ++- apps/rep/app.js | 18 +++++++++++++++--- apps/rep/app.ts | 23 +++++++++++++++++++---- apps/rep/settings.ts | 19 +++++++++++++++++++ 4 files changed, 55 insertions(+), 8 deletions(-) diff --git a/apps/rep/README.md b/apps/rep/README.md index 85d41956d..343837f4d 100644 --- a/apps/rep/README.md +++ b/apps/rep/README.md @@ -7,6 +7,7 @@ You can rewind, fast-forward and play/pause with the control buttons. # Todo -- [ ] Recorder functionality +- [X] Recorder functionality + - [ ] Recorder toggle functionality - [ ] Fastload: scoping, unregister layout handlers etc - [ ] Swipe handlers as well as "<<" / ">>" buttons diff --git a/apps/rep/app.js b/apps/rep/app.js index b5ca4f7b8..e57eb19aa 100644 --- a/apps/rep/app.js +++ b/apps/rep/app.js @@ -246,8 +246,20 @@ }; buzz(); }; + var init = function () { + g.clear(); + drawRep_1(); + Bangle.drawWidgets(); + }; Bangle.loadWidgets(); - g.clear(); - drawRep_1(); - Bangle.drawWidgets(); + if (settings.record && WIDGETS["recorder"]) { + WIDGETS["recorder"] + .setRecording(true) + .then(init); + if (settings.recordStopOnExit) + E.on('kill', function () { return WIDGETS["recorder"].setRecording(false); }); + } + else { + init(); + } } diff --git a/apps/rep/app.ts b/apps/rep/app.ts index aeded4a23..a85793883 100644 --- a/apps/rep/app.ts +++ b/apps/rep/app.ts @@ -1,4 +1,6 @@ type RepSettings = { + record: boolean, + recordStopOnExit: boolean, stepMs: number, }; @@ -308,10 +310,23 @@ const buzzNewRep = () => { buzz(); }; +const init = () => { + g.clear(); + drawRep(); + + Bangle.drawWidgets(); +}; + Bangle.loadWidgets(); +if (settings.record && WIDGETS["recorder"]) { + (WIDGETS["recorder"] as RecorderWidget) + .setRecording(true) + .then(init); + + if (settings.recordStopOnExit) + E.on('kill', () => (WIDGETS["recorder"] as RecorderWidget).setRecording(false)); +} else { + init(); +} -g.clear(); -drawRep(); - -Bangle.drawWidgets(); } diff --git a/apps/rep/settings.ts b/apps/rep/settings.ts index 539ff98bc..0041b95f9 100644 --- a/apps/rep/settings.ts +++ b/apps/rep/settings.ts @@ -3,6 +3,8 @@ const storage = require("Storage") const settings = (storage.readJSON(SETTINGS_FILE, true) || {}) as RepSettings; + settings.record ??= false; + settings.recordStopOnExit ??= false; settings.stepMs ??= 5 * 1000; const save = () => { @@ -25,5 +27,22 @@ }, }; + if (global["WIDGETS"] && WIDGETS["recorder"]) { + menu[/*LANG*/"Record activity"] = { + value: !!settings.record, + onchange: (v: boolean) => { + settings.record = v; + save(); + } + }; + menu[/*LANG*/"Stop record on exit"] = { + value: !!settings.recordStopOnExit, + onchange: (v: boolean) => { + settings.recordStopOnExit = v; + save(); + } + }; + } + E.showMenu(menu); }) satisfies SettingsFunc