Sliding Clock: Updated settings for new styling

pull/2178/head
lu713691 2022-09-29 23:37:42 +01:00
parent f30a2d0ba0
commit fd636155e8
No known key found for this signature in database
GPG Key ID: 5A448EB0FC623526
9 changed files with 109 additions and 67 deletions

View File

@ -6,8 +6,6 @@ class DateFormatter {
* and the date formatDate method will return the time formated * and the date formatDate method will return the time formated
* to the lines of text on the screen * to the lines of text on the screen
*/ */
name(){ return "no name";}
shortName(){ return "no short name" }
formatDate(date){ return ["no","date","defined"]; } formatDate(date){ return ["no","date","defined"]; }
/** /**

View File

@ -309,7 +309,7 @@ const row_types = {
}; };
let row_displays; let row_displays;
function init_display(settings) { function initDisplay(settings) {
if(row_displays != null){ if(row_displays != null){
return; return;
} }
@ -466,8 +466,8 @@ function nextColorTheme(){
} }
//console.log("changing color scheme to " + color_schemes[color_scheme_index].name) //console.log("changing color scheme to " + color_schemes[color_scheme_index].name)
updateColorScheme(); updateColorScheme();
reset_clock(true); resetClock(true);
draw_clock(); drawClock();
} }
function updateColorScheme(){ function updateColorScheme(){
@ -480,7 +480,7 @@ function updateColorScheme(){
g.fillRect(0, 24, g.getWidth(), g.getHeight()); g.fillRect(0, 24, g.getWidth(), g.getHeight());
} }
function reset_clock(hard_reset){ function resetClock(hard_reset){
console.log("reset_clock hard_reset:" + hard_reset); console.log("reset_clock hard_reset:" + hard_reset);
updateColorScheme(); updateColorScheme();
@ -525,7 +525,7 @@ function display_time(date){
} }
} }
function draw_clock(){ function drawClock(){
var date = new Date(); var date = new Date();
// we don't want the time to be displayed // we don't want the time to be displayed
@ -607,7 +607,7 @@ function display_row(display,txt){
* called from load_settings on startup to * called from load_settings on startup to
* set the color scheme to named value * set the color scheme to named value
*/ */
function set_colorscheme(colorscheme_name){ function setColorScheme(colorscheme_name){
console.log("setting color scheme:" + colorscheme_name); console.log("setting color scheme:" + colorscheme_name);
for (var i=0; i < color_schemes.length; i++) { for (var i=0; i < color_schemes.length; i++) {
if(color_schemes[i].name === colorscheme_name){ if(color_schemes[i].name === colorscheme_name){
@ -651,8 +651,6 @@ class DigitDateTimeFormatter {
} }
]; ];
} }
name(){return "Digital";}
shortName(){return "digit";}
format00(num){ format00(num){
var value = (num | 0); var value = (num | 0);
@ -678,7 +676,7 @@ class DigitDateTimeFormatter {
} }
var date_formatter; var date_formatter;
function set_dateformat(shortname){ function setDateformat(shortname){
console.log("setting date format:" + shortname); console.log("setting date format:" + shortname);
try { try {
if (date_formatter == null || date_formatter.shortName() !== shortname) { if (date_formatter == null || date_formatter.shortName() !== shortname) {
@ -698,21 +696,22 @@ const PREFERENCE_FILE = "slidingtext.settings.json";
/** /**
* Called on startup to set the watch to the last preference settings * Called on startup to set the watch to the last preference settings
*/ */
function load_settings() { function loadSettings() {
var setScheme = false;
try { try {
var settings = require("Storage").readJSON(PREFERENCE_FILE); var settings = require("Storage").readJSON(PREFERENCE_FILE);
settings = { date_format: 'dgt'};
if (settings != null) { if (settings != null) {
console.log("loaded settings:" + JSON.stringify(settings)); console.log("loaded settings:" + JSON.stringify(settings));
if (settings.date_format != null) { if (settings.date_format != null) {
set_dateformat(settings.date_format); var format = setting.date_format;
init_display(settings); if(settings.date_formatter != null)
format = settings.date_format;
setDateformat(format);
initDisplay(settings);
} }
if (settings.color_scheme != null) { if (settings.color_scheme != null) {
set_colorscheme(settings.color_scheme); setColorScheme(settings.color_scheme);
setScheme = true;
} }
if (settings.enable_live_controls == null) { if (settings.enable_live_controls == null) {
settings.enable_live_controls = (bangleVersion() <= 1); settings.enable_live_controls = (bangleVersion() <= 1);
@ -727,36 +726,21 @@ function load_settings() {
console.log("failed to load settings:" + e); console.log("failed to load settings:" + e);
} }
// just set up as default // just set up as default
console.log("set_schema:" + setScheme); if (row_displays === undefined) {
if (!setScheme) { setDateformat("default");
set_dateformat("default"); initDisplay();
init_display();
updateColorScheme(); updateColorScheme();
} }
init_display();
enable_live_controls = true; enable_live_controls = true;
} }
/**
* Called on button press to save down the last preference settings
*/
function save_settings(){
var settings = {
date_format : date_formatter.shortName(),
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 button3pressed() { function button3pressed() {
console.log("button3pressed enable_live_controls=" + enable_live_controls); console.log("button3pressed enable_live_controls=" + enable_live_controls);
if (enable_live_controls) { if (enable_live_controls) {
nextColorTheme(); nextColorTheme();
reset_clock(true); resetClock(true);
draw_clock(); drawClock();
save_settings();
} }
} }
@ -776,7 +760,7 @@ function startTimers(){
var nextMinuteStart = 60 - secs; var nextMinuteStart = 60 - secs;
//console.log("scheduling clock draw in " + nextMinuteStart + " seconds"); //console.log("scheduling clock draw in " + nextMinuteStart + " seconds");
setTimeout(scheduleDrawClock,nextMinuteStart * 1000); setTimeout(scheduleDrawClock,nextMinuteStart * 1000);
draw_clock(); drawClock();
} }
/** /**
@ -799,13 +783,13 @@ function scheduleDrawClock(){
console.log("draw clock callback - skipped redraw"); console.log("draw clock callback - skipped redraw");
} else { } else {
console.log("draw clock callback"); console.log("draw clock callback");
draw_clock(); drawClock();
} }
}, 60 * 1000 }, 60 * 1000
); );
if (shouldRedraw()) { if (shouldRedraw()) {
draw_clock(); drawClock();
} else { } else {
console.log("scheduleDrawClock - skipped redraw"); console.log("scheduleDrawClock - skipped redraw");
} }
@ -818,17 +802,17 @@ Bangle.on('lcdPower', (on) => {
if (on) { if (on) {
console.log("lcdPower: on"); console.log("lcdPower: on");
Bangle.drawWidgets(); Bangle.drawWidgets();
reset_clock(false); resetClock(false);
startTimers(); startTimers();
} else { } else {
console.log("lcdPower: off"); console.log("lcdPower: off");
reset_clock(false); resetClock(false);
clearTimers(); clearTimers();
} }
}); });
g.clear(); g.clear();
load_settings(); loadSettings();
// Show launcher when button pressed // Show launcher when button pressed
Bangle.setUI("clockupdown", d=>{ Bangle.setUI("clockupdown", d=>{
if (d>0) button3pressed(); if (d>0) button3pressed();

View File

@ -86,8 +86,6 @@ class GermanDateFormatter extends DateFormatter {
} }
]; ];
} }
name(){return "German";}
shortName(){return "de"}
formatDate(date){ formatDate(date){
var mins = date.getMinutes(); var mins = date.getMinutes();
var hourOfDay = date.getHours(); var hourOfDay = date.getHours();

View File

@ -60,8 +60,6 @@ class EnglishDateFormatter extends DateFormatter {
} }
]; ];
} }
name(){return "English";}
shortName(){return "en"}
formatDate(date){ formatDate(date){
var hours_txt = hoursToText(date.getHours()); var hours_txt = hoursToText(date.getHours());
var mins_txt = numberToText(date.getMinutes()); var mins_txt = numberToText(date.getMinutes());

View File

@ -99,8 +99,6 @@ class EnglishTraditionalDateFormatter extends DateFormatter {
}, },
]; ];
} }
name(){return "English (Traditional)";}
shortName(){return "en2"}
formatDate(date){ formatDate(date){
var date_txt = Locale.dow(date,1).toUpperCase() + " " + numberToText(date.getDate()); var date_txt = Locale.dow(date,1).toUpperCase() + " " + numberToText(date.getDate());
var mins = date.getMinutes(); var mins = date.getMinutes();

View File

@ -63,8 +63,6 @@ class SpanishDateFormatter extends DateFormatter {
} }
]; ];
} }
name(){return "Spanish";}
shortName(){return "es"}
formatDate(date){ formatDate(date){
var mins = date.getMinutes(); var mins = date.getMinutes();
var hourOfDay = date.getHours(); var hourOfDay = date.getHours();

View File

@ -47,8 +47,6 @@ class FrenchDateFormatter extends DateFormatter {
} }
]; ];
} }
name(){return "French";}
shortName(){return "fr"}
formatDate(date){ formatDate(date){
var hours = frenchHoursToText(date.getHours()); var hours = frenchHoursToText(date.getHours());
var heures = frenchHeures(date.getHours()); var heures = frenchHeures(date.getHours());

View File

@ -28,16 +28,16 @@ const japaneseMinuteStr = [ ["", "PUN"],
function japaneseHoursToText(hours){ function japaneseHoursToText(hours){
hours = hours % 12; hours = hours % 12;
if(hours == 0){ if(hours === 0){
hours = 12; hours = 12;
} }
return japaneseHourStr[hours]; return japaneseHourStr[hours];
} }
function japaneseMinsToText(mins){ function japaneseMinsToText(mins){
if(mins == 0){ if(mins === 0){
return ["",""]; return ["",""];
} else if(mins == 30) } else if(mins === 30)
return ["HAN",""]; return ["HAN",""];
else { else {
var units = mins % 10; var units = mins % 10;
@ -77,8 +77,6 @@ class JapaneseDateFormatter extends DateFormatter {
} }
]; ];
} }
name(){return "Japanese (Romanji)";}
shortName(){return "jp"}
formatDate(date){ formatDate(date){
var hours_txt = japaneseHoursToText(date.getHours()); var hours_txt = japaneseHoursToText(date.getHours());
var mins_txt = japaneseMinsToText(date.getMinutes()); var mins_txt = japaneseMinsToText(date.getMinutes());

View File

@ -8,13 +8,85 @@
} }
console.log("loaded:" + JSON.stringify(settings)); console.log("loaded:" + JSON.stringify(settings));
var locale_mappings = { var locale_mappings = {
'English Time':'en', 'en' : { date_format: 'en' },
'English Date + Time': 'en3', 'en patchwork': {
'English Time (Trad)': 'en2', date_format: 'en patchwork',
'French': 'fr', date_formatter: 'en',
'German': 'de', row_types: {
'Spanish': 'es', large:{
'Japanese': 'jp', angle_to_horizontal: 90
}
},
row_defs: [
{
type: 'large',
init_coords: [0.05,0.95],
row_direction: [1.0,0.0],
rows: 1
},
{
type: 'medium',
init_coords: [0.3,0.1],
row_direction: [0.0,1.0],
rows: 2
},
{
type: 'small',
init_coords: [0.3,0.9],
row_direction: [0.0,1.0],
rows: 1
}
]
},
'en2': { date_format: 'en2' },
'en2 patchwork': { date_format: 'en2 patchwork',
date_formatter: 'en2',
row_types: {
vsmall: {
scroll_off: ['right'],
scroll_in: ['right'],
angle_to_horizontal: 0
},
large: {
size: 'vlarge',
angle_to_horizontal: 90,
speed: 'slow',
color: 'major',
scroll_off: ['down'],
scroll_in: ['up']
}
},
row_defs: [
{
type: 'large',
init_coords: [0.7,0.9],
row_direction: [0.0,1.0],
rows: 1
},
{
type: 'small',
init_coords: [0.05,0.35],
row_direction: [0.0,1.0],
rows: 3
},
{
type: 'large',
init_coords: [0.7,0.9],
row_direction: [0.0,1.0],
rows: 1
},
{
type: 'vsmall',
init_coords: [0.05,0.1],
row_direction: [0.0,1.0],
rows: 1
},
]
},
'French': { date_format:'fr'},
'German': { date_format: 'de'},
'Spanish': { date_format: 'es'},
'Japanese': { date_format: 'jp'},
} }
var locales = Object.keys(locale_mappings); var locales = Object.keys(locale_mappings);
@ -50,7 +122,7 @@
"" : { "title" : "Sliding Text" }, "" : { "title" : "Sliding Text" },
"< Back" : () => back(), "< Back" : () => back(),
"Colour": stringInSettings("color_scheme", ["white", "black", "red","grey","purple","blue"]), "Colour": stringInSettings("color_scheme", ["white", "black", "red","grey","purple","blue"]),
"Languages": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ), "Style": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ),
"Live Control": { "Live Control": {
value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true), value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true),
format: v => v ? "On" : "Off", format: v => v ? "On" : "Off",