From 4ea4966feb03f61ad9898b9d0603b805c39c677c Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Thu, 3 Feb 2022 22:20:59 +0100 Subject: [PATCH] Recorder - Allow creation of new file instead of overwriting --- apps/recorder/widget.js | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/apps/recorder/widget.js b/apps/recorder/widget.js index 742d373a4..4ea19bbbe 100644 --- a/apps/recorder/widget.js +++ b/apps/recorder/widget.js @@ -11,6 +11,11 @@ settings.recording = false; return settings; } + + function updateSettings(settings) { + require("Storage").writeJSON("recorder.json", settings); + if (WIDGETS["recorder"]) WIDGETS["recorder"].reload(); + } function getRecorders() { var recorders = { @@ -227,15 +232,32 @@ Bangle.drawWidgets(); // relayout all widgets },setRecording:function(isOn) { var settings = loadSettings(); - if (isOn && !settings.recording && require("Storage").list(settings.file).length) - return E.showPrompt("Overwrite\nLog " + settings.file.match(/\d+/)[0] + "?",{title:"Recorder",buttons:{Yes:"yes",No:"no"}}).then(selection=>{ + if (isOn && !settings.recording && require("Storage").list(settings.file).length){ + var logfiles=require("Storage").list(/recorder.log.*/); + var maxNumber=0; + for (var c of logfiles){ + maxNumber = Math.max(maxNumber, c.match(/\d+/)[0]); + } + var newFileName; + if (maxNumber < 99){ + newFileName="recorder.log" + (maxNumber + 1) + ".csv"; + updateSettings(settings); + } + var buttons={Yes:"yes",No:"no"}; + if (newFileName) buttons["New"] = "new"; + var prompt = E.showPrompt("Overwrite\nLog " + settings.file.match(/\d+/)[0] + "?",{title:"Recorder",buttons:buttons}).then(selection=>{ if (selection=="no") return false; // just cancel if (selection=="yes") require("Storage").open(settings.file,"r").erase(); - // TODO: Add 'new file' option + if (selection=="new"){ + settings.file = newFileName; + updateSettings(settings); + } return WIDGETS["recorder"].setRecording(1); }); + return prompt; + } settings.recording = isOn; - require("Storage").write("recorder.json", settings); + updateSettings(settings); WIDGETS["recorder"].reload(); return Promise.resolve(settings.recording); }/*,plotTrack:function(m) { // m=instance of openstmap module