disabling screen controls on the sliding text GUI for the bangle2

pull/2012/head
adrian w kirk 2022-06-27 18:04:45 +01:00
parent 3bddcd402d
commit f561b44463
3 changed files with 98 additions and 14 deletions

View File

@ -1,7 +1,7 @@
{
"id": "slidingtext",
"name": "Sliding Clock",
"version": "0.08",
"version": "0.09",
"description": "Inspired by the Pebble sliding clock, old times are scrolled off the screen and new times on. You are also able to change language on the fly so you can see the time written in other languages using button 1. Currently English, French, Japanese, Spanish and German are supported",
"icon": "slidingtext.png",
"type": "clock",
@ -12,6 +12,7 @@
"allow_emulator": false,
"storage": [
{"name":"slidingtext.app.js","url":"slidingtext.js"},
{"name":"slidingtext.settings.js","url":"slidingtext.settings.js"},
{"name":"slidingtext.img","url":"slidingtext-icon.js","evaluate":true},
{"name":"slidingtext.locale.en.js","url":"slidingtext.locale.en.js"},
{"name":"slidingtext.locale.en2.js","url":"slidingtext.locale.en2.js"},
@ -21,5 +22,6 @@
{"name":"slidingtext.locale.jp.js","url":"slidingtext.locale.jp.js"},
{"name":"slidingtext.locale.de.js","url":"slidingtext.locale.de.js"},
{"name":"slidingtext.dtfmt.js","url":"slidingtext.dtfmt.js"}
]
],
"data": [{"name": "slidingtext.settings.json"}]
}

View File

@ -5,11 +5,17 @@
*/
const color_schemes = [
{
name: "white",
background : [1.0,1.0,1.0],
main_bar: [0.0,0.0,0.0],
other_bars: [0.25,0.25,0.25],
},
{
name: "black",
background : [0.0,0.0,0.0],
main_bar: [1.0,1.0,1.0],
other_bars: [0.85,0.85,0.85],
other_bars: [1.0,1.0,1.0],
},
{
name: "red",
@ -81,7 +87,7 @@ function reset_commands(){
function has_commands(){
return command_stack_high_priority.length > 0 ||
command_stack_low_priority.lenth > 0;
command_stack_low_priority.length > 0;
}
class ShiftText {
@ -244,7 +250,12 @@ function setRowDisplays(y, heights) {
y += heights[i];
}
}
if (g.getHeight()>200)
function bangleVersion(){
return (g.getHeight()>200)? 1 : 2;
}
if (bangleVersion()>1)
setRowDisplays(50, [40,30,30,30,40]);
else
setRowDisplays(34, [35,25,25,25,35]);
@ -411,8 +422,7 @@ function draw_clock(){
reset_commands();
date = display_time(date);
console.log("draw_clock:" + last_draw_time.toISOString() + " display:" + date.toISOString());
// for debugging only
//date.setMinutes(37);
var rows = date_formatter.formatDate(date);
var display;
for (var i = 0; i < rows.length; i++) {
@ -503,6 +513,7 @@ function set_dateformat(dateformat_name){
}
}
var enable_live_controls = false;
const PREFERENCE_FILE = "slidingtext.settings.json";
/**
* Called on startup to set the watch to the last preference settings
@ -510,7 +521,7 @@ const PREFERENCE_FILE = "slidingtext.settings.json";
function load_settings(){
var setScheme = false;
try{
settings = require("Storage").readJSON(PREFERENCE_FILE);
var settings = require("Storage").readJSON(PREFERENCE_FILE);
if(settings != null){
console.log("loaded:" + JSON.stringify(settings));
if(settings.color_scheme != null){
@ -520,6 +531,10 @@ function load_settings(){
if(settings.date_format != null){
set_dateformat(settings.date_format);
}
if(settings.enable_live_controls == null){
settings.enable_live_controls = (bangleVersion() <= 1);
}
enable_live_controls = settings.enable_live_controls;
} else {
console.log("no settings to load");
}
@ -538,23 +553,29 @@ function save_settings(){
var settings = {
date_format : date_formatter.name(),
color_scheme : color_schemes[color_scheme_index].name,
enable_live_controls: enable_live_controls
};
console.log("saving:" + JSON.stringify(settings));
require("Storage").writeJSON(PREFERENCE_FILE,settings);
}
function button1pressed() {
console.log("button1pressed");
if (enable_live_controls) {
changeFormatter();
save_settings();
}
}
function button3pressed() {
console.log("button3pressed");
if (enable_live_controls) {
nextColorTheme();
reset_clock(true);
draw_clock();
save_settings();
}
}
// The interval reference for updating the clock
let intervalRef = null;

View File

@ -0,0 +1,61 @@
(function(back) {
const PREFERENCE_FILE = "slidingtext.settings.json";
var settings = Object.assign({
secondsOnUnlock: false,
}, require('Storage').readJSON(PREFERENCE_FILE, true) || {});
console.log("loaded:" + JSON.stringify(settings));
const LANGUAGES_FILE = "slidingtext.languages.json";
const LANGUAGES_DEFAULT = ["en","en2"];
var locales = null;
try {
locales = require("Storage").readJSON(LANGUAGES_FILE);
} catch(e) {
console.log("failed to load languages:" + e);
}
if(locales == null || locales.length == 0){
locales = LANGUAGES_DEFAULT;
console.log("defaulting languages to locale:" + locales);
}
function writeSettings() {
require('Storage').writeJSON(PREFERENCE_FILE, settings);
}
// Helper method which uses int-based menu item for set of string values
function stringItems(startvalue, writer, values) {
return {
value: (startvalue === undefined ? 0 : values.indexOf(startvalue)),
format: v => values[v],
min: 0,
max: values.length - 1,
wrap: true,
step: 1,
onchange: v => {
writer(values[v]);
writeSettings();
}
};
}
// Helper method which breaks string set settings down to local settings object
function stringInSettings(name, values) {
return stringItems(settings[name], v => settings[name] = v, values);
}
// Show the menu
E.showMenu({
"" : { "title" : "Sliding Text" },
"< Back" : () => back(),
"Colour": stringInSettings("color_scheme", ["white", "black", "red","grey","purple","blue"]),
"Languages": stringInSettings("date_format", locales),
"Live Control": {
value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true),
format: v => v ? "On" : "Off",
onchange: v => {
settings.enable_live_controls = v;
writeSettings();
}
},
});
})