mirror of https://github.com/espruino/BangleApps
disabling screen controls on the sliding text GUI for the bangle2
parent
3bddcd402d
commit
f561b44463
|
@ -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"}]
|
||||
}
|
||||
|
|
|
@ -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,22 +553,28 @@ 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() {
|
||||
changeFormatter();
|
||||
save_settings();
|
||||
console.log("button1pressed");
|
||||
if (enable_live_controls) {
|
||||
changeFormatter();
|
||||
save_settings();
|
||||
}
|
||||
}
|
||||
|
||||
function button3pressed() {
|
||||
console.log("button3pressed");
|
||||
nextColorTheme();
|
||||
reset_clock(true);
|
||||
draw_clock();
|
||||
save_settings();
|
||||
if (enable_live_controls) {
|
||||
nextColorTheme();
|
||||
reset_clock(true);
|
||||
draw_clock();
|
||||
save_settings();
|
||||
}
|
||||
}
|
||||
|
||||
// The interval reference for updating the clock
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
})
|
Loading…
Reference in New Issue