From 381ba5ec65e97b5742e83eeeec37e66dc4ab5060 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Wed, 27 Jul 2022 00:01:56 +0100 Subject: [PATCH 01/69] sliding clock: refactored sliding clock so that it only loads 1 clock face. The intention being that we can start adding more complexity and individuality to each clock face --- apps/slidingtext/slidingtext.js | 164 ++++++++++++-------------------- 1 file changed, 63 insertions(+), 101 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index ae6571121..f0e4ea913 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -239,7 +239,9 @@ class ShiftText { const CLOCK_TEXT_SPEED_X = 10; // a list of display rows -let row_displays; +var row_displays; + +// y - the height to start displaying from function setRowDisplays(y, heights) { var cols = [ main_color(), other_color(), other_color(), other_color(), main_color() @@ -251,14 +253,17 @@ function setRowDisplays(y, heights) { } } +function init_display(){ + if (bangleVersion()<2) + setRowDisplays(50, [40,30,30,30,40]); + else + setRowDisplays(34, [35,25,25,25,35]); +} + function bangleVersion(){ return (g.getHeight()>200)? 1 : 2; } -if (bangleVersion()<2) - setRowDisplays(50, [40,30,30,30,40]); -else - setRowDisplays(34, [35,25,25,25,35]); function nextColorTheme(){ color_scheme_index += 1; @@ -289,71 +294,6 @@ function setColor(main_color,other_color,bg_color){ g.fillRect(0,24, g.getWidth(), g.getHeight()); } -// load the date formats and laguages required -LANGUAGES_FILE = "slidingtext.languages.json"; -var LANGUAGES_DEFAULT = ["en","en2"]; -var locales = null; -try{ - locales = require("Storage").readJSON(LANGUAGES_FILE); - if(locales != null){ - console.log("loaded languages:" + JSON.stringify(locales)); - } else { - console.log("no languages loaded"); - locales = LANGUAGES_DEFAULT; - } -} 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); -} - -let date_formatters = []; -for(var i=0; i< locales.length; i++){ - console.log("loading locale:" + locales[i]); - var Formatter = require("slidingtext.locale." + locales[i] + ".js"); - date_formatters.push(new Formatter()); -} - -// current index of the date formatter to display -let date_formatter_idx = 0; -let date_formatter = date_formatters[date_formatter_idx]; - -function changeFormatter(){ - date_formatter_idx += 1; - if(date_formatter_idx >= date_formatters.length){ - date_formatter_idx = 0; - } - console.log("changing to formatter " + date_formatter_idx); - date_formatter = date_formatters[date_formatter_idx]; - reset_clock(true); - draw_clock(); - command_stack_high_priority.unshift( - function() { - //console.log("move in new:" + txt); - // first select the top or bottom to display the formatter name - // We choose the first spare row without text - var format_name_display = row_displays[row_displays.length - 1]; - if (format_name_display.txt != '') { - format_name_display = row_displays[0]; - } - if (format_name_display.txt != ''){ - return; - } - format_name_display.speed_x = 3; - format_name_display.onFinished(function(){ - format_name_display.speed_x = CLOCK_TEXT_SPEED_X; - console.log("return speed to:" + format_name_display.speed_x) - next_command(); - }); - format_name_display.setTextXPosition(date_formatter.name(),220); - format_name_display.moveToX(-date_formatter.name().length * format_name_display.font_size); - } - ); - -} - var DISPLAY_TEXT_X = 20; function reset_clock(hard_reset){ console.log("reset_clock hard_reset:" + hard_reset); @@ -431,7 +371,7 @@ function draw_clock(){ display_row(display,txt); } // If the dateformatter has not returned enough - // rows then treat the reamining rows as empty + // rows then treat the remaining rows as empty for (var j = i; j < row_displays.length; j++) { display = row_displays[j]; //console.log(i + "->''(empty)"); @@ -447,8 +387,8 @@ function display_row(display,txt){ return; } - if(display.txt == null || display.txt == ''){ - if(txt != '') { + if(display.txt == null || display.txt === ''){ + if(txt !== '') { command_stack_high_priority.unshift( function () { //console.log("move in new:" + txt); @@ -458,7 +398,7 @@ function display_row(display,txt){ } ); } - } else if(txt != display.txt && display.txt != null){ + } else if(txt !== display.txt && display.txt != null){ command_stack_high_priority.push( function(){ //console.log("move out:" + txt); @@ -492,7 +432,7 @@ function display_row(display,txt){ function set_colorscheme(colorscheme_name){ console.log("setting color scheme:" + colorscheme_name); for (var i=0; i < color_schemes.length; i++) { - if(color_schemes[i].name == colorscheme_name){ + if(color_schemes[i].name === colorscheme_name){ color_scheme_index = i; console.log("match"); setColorScheme(color_schemes[color_scheme_index]); @@ -501,14 +441,39 @@ function set_colorscheme(colorscheme_name){ } } -function set_dateformat(dateformat_name){ - console.log("setting date format:" + dateformat_name); - for (var i=0; i < date_formatters.length; i++) { - if(date_formatters[i].shortName() == dateformat_name){ - date_formatter_idx = i; - date_formatter = date_formatters[date_formatter_idx]; - console.log("match"); +const Locale = require('locale'); +class DigitDateTimeFormatter { + name(){return "Digital";} + shortName(){return "digit";} + + format00(num){ + var value = (num | 0); + if(value > 99 || value < 0) + throw "must be between in range 0-99"; + if(value < 10) + return "0" + value.toString(); + else + return value.toString(); + } + + formatDate(now){ + var hours = now.getHours() ; + + var time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); + var date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); + return [time_txt,date_txt]; + } +} + +var date_formatter = new DigitDateTimeFormatter(); +function set_dateformat(shortname){ + console.log("setting date format:" + shortname); + try { + if (date_formatter == null || date_formatter.shortName() !== shortname) { + date_formatter = require("slidingtext.locale." + shortname + ".js"); } + } catch(e){ + console.log("Failed to load " + shortname); } } @@ -517,20 +482,21 @@ const PREFERENCE_FILE = "slidingtext.settings.json"; /** * Called on startup to set the watch to the last preference settings */ -function load_settings(){ +function load_settings() { var setScheme = false; - try{ + try { var settings = require("Storage").readJSON(PREFERENCE_FILE); - if(settings != null){ + if (settings != null) { console.log("loaded:" + JSON.stringify(settings)); - if(settings.color_scheme != null){ + if (settings.date_format != null) { + set_dateformat(settings.date_format); + init_display(); + } + if (settings.color_scheme != null) { set_colorscheme(settings.color_scheme); setScheme = true; } - if(settings.date_format != null){ - set_dateformat(settings.date_format); - } - if(settings.enable_live_controls == null){ + if (settings.enable_live_controls == null) { settings.enable_live_controls = (bangleVersion() <= 1); } enable_live_controls = settings.enable_live_controls; @@ -539,12 +505,17 @@ function load_settings(){ enable_live_controls = (bangleVersion() <= 1); } console.log("enable_live_controls=" + enable_live_controls); - } catch(e){ + } catch (e) { console.log("failed to load settings:" + e); } + if(row_displays == null){ + init_display(); + } // just set up as default - if (!setScheme) + if (!setScheme) { + init_display(); setColorScheme(color_schemes[color_scheme_index]); + } } /** @@ -560,14 +531,6 @@ function save_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) { @@ -653,6 +616,5 @@ Bangle.drawWidgets(); startTimers(); // Show launcher when button pressed Bangle.setUI("clockupdown", d=>{ - if (d<0) button1pressed(); if (d>0) button3pressed(); }); From 245e083ee0467e03c6f3381bb38d4cf838637984 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Wed, 27 Jul 2022 23:37:55 +0100 Subject: [PATCH 02/69] sliding clock: refactored to initialize the sliding rows from functions rather than data so styling can be introduced --- apps/slidingtext/slidingtext.js | 43 ++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index f0e4ea913..025847967 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -237,27 +237,46 @@ class ShiftText { } } + const CLOCK_TEXT_SPEED_X = 10; // a list of display rows var row_displays; // y - the height to start displaying from -function setRowDisplays(y, heights) { - var cols = [ - main_color(), other_color(), other_color(), other_color(), main_color() - ]; +// heights function (row_no, no_rows) +// colour function (row_no, no_rows) +function setRowDisplays(y, heights, fg_color) { row_displays = []; - for (var i=0;irow === 0 || row >= no_rows -1? main_color(): other_color(); + var major_row_size = (bangleVersion()<2)? 40 : 30; + var minor_row_size = (bangleVersion()<2)? 35 : 25; + var y_init = (bangleVersion()<2)? 34 : 50; + + setRowDisplays(y_init, + (row,no_rows)=>row === 0 || row >= Math.max(no_rows -1,2)? major_row_size: minor_row_size, + color_func + ); } function bangleVersion(){ @@ -497,7 +516,7 @@ function load_settings() { setScheme = true; } if (settings.enable_live_controls == null) { - settings.enable_live_controls = (bangleVersion() <= 1); + settings.enable_live_controls = (bangleVersion() <= 2); } enable_live_controls = settings.enable_live_controls; } else { From af2b83e64e8949c7a3240a6605c08535c62aaa8f Mon Sep 17 00:00:00 2001 From: lu713691 Date: Fri, 29 Jul 2022 22:49:48 +0100 Subject: [PATCH 03/69] Sliding Clock: Can now slide on and off both left and right --- apps/slidingtext/slidingtext.js | 132 ++++++++++++++++---------------- 1 file changed, 68 insertions(+), 64 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 025847967..b2503a323 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -188,6 +188,20 @@ class ShiftText { this.tgt_y = new_y; this._doMove(); } + scrollInFromLeft(txt,to_x){ + this.setTextXPosition(txt, -txt.length * this.font_size - 2*this.speed_x); + this.moveToX(to_x); + } + scrollInFromRight(txt,to_x){ + this.setTextXPosition(txt, g.getWidth() + 2*this.speed_x); + this.moveToX(to_x); + } + scrollOffToLeft(){ + this.moveToX(-this.txt.length * this.font_size); + } + scrollOffToRight(){ + this.moveToX(g.getWidth() + 2*this.speed_x); + } onFinished(finished_callback){ this.finished_callback = finished_callback; } @@ -237,29 +251,42 @@ class ShiftText { } } +function bangleVersion(){ + return (g.getHeight()>200)? 1 : 2; +} + +var style = { + fg_color: (row,no_rows)=>row === 0 || row >= Math.max(no_rows -1,2)? main_color(): other_color(), + clock_text_speed_x: 10, + y_init: (bangleVersion()<2)? 34 : 50, + row_height: (row,no_rows)=>row === 0 || row >= Math.max(no_rows -1,2)? + (bangleVersion()<2)? 40 : 30: (bangleVersion()<2)? 35 : 25, + scrollIn: (d,txt,to_x)=>d.scrollInFromRight(txt,to_x), + //scrollIn: (d,txt,to_x)=>d.scrollInFromLeft(txt,to_x), + scrollOff: (d)=>d.scrollOffToLeft() + //scrollOff: (d)=>d.scrollOffToRight() +}; + -const CLOCK_TEXT_SPEED_X = 10; // a list of display rows var row_displays; -// y - the height to start displaying from -// heights function (row_no, no_rows) -// colour function (row_no, no_rows) -function setRowDisplays(y, heights, fg_color) { +function init_display() { row_displays = []; - var date_rows = date_formatter.formatDate(new Date()) + y = style.y_init; + var date_rows = date_formatter.formatDate(new Date()); for (var i=0;irow === 0 || row >= no_rows -1? main_color(): other_color(); - var major_row_size = (bangleVersion()<2)? 40 : 30; - var minor_row_size = (bangleVersion()<2)? 35 : 25; - var y_init = (bangleVersion()<2)? 34 : 50; - - setRowDisplays(y_init, - (row,no_rows)=>row === 0 || row >= Math.max(no_rows -1,2)? major_row_size: minor_row_size, - color_func - ); -} - -function bangleVersion(){ - return (g.getHeight()>200)? 1 : 2; -} - function nextColorTheme(){ color_scheme_index += 1; - if(color_scheme_index > row_displays.length){ + if(color_scheme_index >= color_schemes.length){ color_scheme_index = 0; } - setColorScheme(color_schemes[color_scheme_index]); + //console.log("changing color scheme to " + color_schemes[color_scheme_index].name) + updateColorScheme(); reset_clock(true); draw_clock(); } -function setColorScheme(color_scheme){ - setColor(color_scheme.main_bar, - color_scheme.other_bars, - color_scheme.background); -} - -function setColor(main_color,other_color,bg_color){ - row_displays[0].setColor(main_color); - row_displays[0].setBgColor(bg_color); - for(var i=1; i { - if (!shouldRedraw()) { - console.log("draw clock callback - skipped redraw"); - } else { - console.log("draw clock callback"); - draw_clock() - } - }, 60 * 1000 + if (!shouldRedraw()) { + console.log("draw clock callback - skipped redraw"); + } else { + console.log("draw clock callback"); + draw_clock(); + } + }, 60 * 1000 ); if (shouldRedraw()) { From 36096d76c3030ce42d907dc0bda6ded0a8887c19 Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sat, 30 Jul 2022 10:53:21 +0100 Subject: [PATCH 04/69] Sliding Clock: Add row context to display row object so row properties can be stored/used for styling --- apps/slidingtext/slidingtext.dtfmt.js | 1 + apps/slidingtext/slidingtext.js | 31 +++++++++++++++++++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/apps/slidingtext/slidingtext.dtfmt.js b/apps/slidingtext/slidingtext.dtfmt.js index 266ed0b35..58898264e 100644 --- a/apps/slidingtext/slidingtext.dtfmt.js +++ b/apps/slidingtext/slidingtext.dtfmt.js @@ -11,6 +11,7 @@ class DateFormatter { formatDate(date){ return ["no","date","defined"]; } + rowProperties(row_no){ return {} } } module.exports = DateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index b2503a323..6350a9ad8 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -102,7 +102,8 @@ class ShiftText { constructor(x,y,txt,font_name, font_size,speed_x,speed_y,freq_millis, color, - bg_color){ + bg_color, + row_context){ this.x = x; this.tgt_x = x; this.init_x = x; @@ -118,9 +119,11 @@ class ShiftText { this.freq_millis = freq_millis; this.color = color; this.bg_color = bg_color; + this.row_context = row_context; this.finished_callback=null; this.timeoutId = null; } + getRowContext(){ return this.row_context;} setColor(color){ this.color = color; } @@ -256,10 +259,10 @@ function bangleVersion(){ } var style = { - fg_color: (row,no_rows)=>row === 0 || row >= Math.max(no_rows -1,2)? main_color(): other_color(), + fg_color: (row_props)=>(row_props.major_minor == 'major')? main_color(): other_color(), clock_text_speed_x: 10, y_init: (bangleVersion()<2)? 34 : 50, - row_height: (row,no_rows)=>row === 0 || row >= Math.max(no_rows -1,2)? + row_height: (row_props)=>(row_props.major_minor == 'major')? (bangleVersion()<2)? 40 : 30: (bangleVersion()<2)? 35 : 25, scrollIn: (d,txt,to_x)=>d.scrollInFromRight(txt,to_x), //scrollIn: (d,txt,to_x)=>d.scrollInFromLeft(txt,to_x), @@ -276,7 +279,10 @@ function init_display() { y = style.y_init; var date_rows = date_formatter.formatDate(new Date()); for (var i=0;i Date: Sat, 30 Jul 2022 11:59:43 +0100 Subject: [PATCH 05/69] Sliding Clock: Now adding styling hooks so that rows can be placed as well as follow on from previous rows --- apps/slidingtext/slidingtext.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 6350a9ad8..41b489d00 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -259,18 +259,18 @@ function bangleVersion(){ } var style = { - fg_color: (row_props)=>(row_props.major_minor == 'major')? main_color(): other_color(), + fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), clock_text_speed_x: 10, y_init: (bangleVersion()<2)? 34 : 50, - row_height: (row_props)=>(row_props.major_minor == 'major')? - (bangleVersion()<2)? 40 : 30: (bangleVersion()<2)? 35 : 25, + //row_height: (row_props)=>(row_props.major_minor == 'major')? (bangleVersion()<2)? 40 : 30: (bangleVersion()<2)? 35 : 25, + row_height: (row_props)=>(row_props.major_minor === 'major')? (bangleVersion()<2)? 40 : 50: (bangleVersion()<2)? 35 : 15, + row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? g.getHeight() - 2*row_height : last_y, scrollIn: (d,txt,to_x)=>d.scrollInFromRight(txt,to_x), //scrollIn: (d,txt,to_x)=>d.scrollInFromLeft(txt,to_x), scrollOff: (d)=>d.scrollOffToLeft() //scrollOff: (d)=>d.scrollOffToRight() }; - // a list of display rows var row_displays; @@ -282,6 +282,7 @@ function init_display() { var row_props = date_formatter.rowProperties(i); console.log("row info[" + i + "]=" + row_props.major_minor) var row_height = style.row_height(row_props); + y = style.row_y(row_props,y,row_height); var color = style.fg_color(row_props); row_displays.push( new ShiftText(g.getWidth(), @@ -474,8 +475,8 @@ const Locale = require('locale'); class DigitDateTimeFormatter { constructor() { this.row_props =[ - {major_minor: 'major', info: 'time'}, - {major_minor: 'minor', info: 'date'}, + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'date'}, ] } name(){return "Digital";} From f69b9744fc271cbc9e16edd1d60403dc0d8aba9f Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sat, 30 Jul 2022 16:08:43 +0100 Subject: [PATCH 06/69] Sliding Clock: BUGFIX: Sliding off to the bottom and sliding new time from side was resulting in a blank row --- apps/slidingtext/slidingtext.js | 108 +++++++++++++++++++++++++------- 1 file changed, 87 insertions(+), 21 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 41b489d00..44a60b8d0 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -164,12 +164,14 @@ class ShiftText { this.x = x; this.y = y; this.txt = txt; + //console.log("setTextPosition: (" + x + "," + y + ") " + txt); this.show(); } setTextXPosition(txt,x){ this.hide(); this.x = x; this.txt = txt; + //console.log("setTextXPosition: (" + x + ") " + txt); this.show(); } setTextYPosition(txt,y){ @@ -181,6 +183,7 @@ class ShiftText { moveTo(new_x,new_y){ this.tgt_x = new_x; this.tgt_y = new_y; + //console.log("moveTo: (" + this.tgt_x + "," + this.tgt_y + ") "); this._doMove(); } moveToX(new_x){ @@ -191,19 +194,41 @@ class ShiftText { this.tgt_y = new_y; this._doMove(); } + scrollInFromBottom(txt,to_y){ + if(to_y == null) + to_y = this.init_y; + + //console.log("scrollInFromBottom y:" + this.y + "->" + to_y + " -> " + txt) + this.setTextPosition(txt, this.init_x, g.getHeight() - 2*this.speed_x); + this.moveTo(this.init_x,to_y); + } scrollInFromLeft(txt,to_x){ - this.setTextXPosition(txt, -txt.length * this.font_size - 2*this.speed_x); - this.moveToX(to_x); + if(to_x == null) + to_x = this.init_x; + + //console.log("scrollInFromLeft x:" + this.x + "->" + to_x + " -> " + txt) + this.setTextPosition(txt, -txt.length * this.font_size - this.font_size, this.init_y); + this.moveTo(to_x,this.init_y); } scrollInFromRight(txt,to_x){ - this.setTextXPosition(txt, g.getWidth() + 2*this.speed_x); - this.moveToX(to_x); + if(to_x == null) + to_x = this.init_x; + + //console.log("scrollInFromRight x:" + this.x + "->" + to_x + " -> " + txt) + this.setTextPosition(txt, g.getWidth() + this.font_size, this.init_y); + this.moveTo(to_x,this.init_y); } scrollOffToLeft(){ - this.moveToX(-this.txt.length * this.font_size); + //console.log("scrollOffToLeft"); + this.moveTo(-this.txt.length * this.font_size, this.init_y); } scrollOffToRight(){ - this.moveToX(g.getWidth() + 2*this.speed_x); + //console.log("scrollOffToRight"); + this.moveTo(g.getWidth() + this.font_size, this.init_y); + } + scrollOffToBottom(){ + //console.log("scrollOffToBottom"); + this.moveTo(this.init_x,g.getHeight() + this.font_size); } onFinished(finished_callback){ this.finished_callback = finished_callback; @@ -257,17 +282,58 @@ class ShiftText { function bangleVersion(){ return (g.getHeight()>200)? 1 : 2; } +var DISPLAY_TEXT_X = 20; var style = { fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), - clock_text_speed_x: 10, + clock_text_speed: 5, y_init: (bangleVersion()<2)? 34 : 50, //row_height: (row_props)=>(row_props.major_minor == 'major')? (bangleVersion()<2)? 40 : 30: (bangleVersion()<2)? 35 : 25, row_height: (row_props)=>(row_props.major_minor === 'major')? (bangleVersion()<2)? 40 : 50: (bangleVersion()<2)? 35 : 15, - row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? g.getHeight() - 2*row_height : last_y, - scrollIn: (d,txt,to_x)=>d.scrollInFromRight(txt,to_x), + //row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? g.getHeight() - 2*row_height : last_y, + row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? 34 : last_y + 20, + row_x: (row_props, last_x) => row_props.info_type === 'date'? 60 : last_x, + // random + scrollIn: (d,txt)=> { + var random = Math.random(); + if (d.getRowContext().info_type === 'date') { + if (random > 0.5) + d.scrollInFromRight(txt); + else + d.scrollInFromLeft(txt); + } else { + if (random < 0.33) { + d.scrollInFromRight(txt); + } else if (random < 0.66) { + d.scrollInFromLeft(txt); + } else { + d.scrollInFromBottom(txt); + } + } + }, + //scrollIn: (d,txt)=>(d.getRowContext().info_type === 'date')? d.scrollInFromRight(txt) : d.scrollInFromBottom(txt), + + //scrollIn: (d,txt)=>d.scrollInFromRight(txt), //scrollIn: (d,txt,to_x)=>d.scrollInFromLeft(txt,to_x), - scrollOff: (d)=>d.scrollOffToLeft() + scrollOff: (d)=>{ + var random = Math.random(); + if (d.getRowContext().info_type === 'date') { + if (random > 0.5) + d.scrollOffToRight(); + else + d.scrollOffToLeft(); + } else { + if (random < 0.33) { + d.scrollOffToRight(); + } else if (random < 0.66) { + d.scrollOffToLeft(); + } else { + d.scrollOffToBottom(); + } + } + } + //scrollOff: (d)=>(d.getRowContext().info_type === 'date')? d.scrollOffToLeft() : d.scrollOffToBottom() + //scrollOff: (d)=>d.scrollOffToLeft() //scrollOff: (d)=>d.scrollOffToRight() }; @@ -276,22 +342,23 @@ var row_displays; function init_display() { row_displays = []; - y = style.y_init; + var y = style.y_init; var date_rows = date_formatter.formatDate(new Date()); for (var i=0;i Date: Sat, 30 Jul 2022 19:24:44 +0100 Subject: [PATCH 07/69] Sliding Clock: Added Text moving in a different rotation --- apps/slidingtext/slidingtext.js | 50 +++++++++++++++------------------ 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 44a60b8d0..2e4fc6771 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -103,7 +103,8 @@ class ShiftText { font_size,speed_x,speed_y,freq_millis, color, bg_color, - row_context){ + row_context, + rotation){ this.x = x; this.tgt_x = x; this.init_x = x; @@ -120,6 +121,7 @@ class ShiftText { this.color = color; this.bg_color = bg_color; this.row_context = row_context; + this.rotation = rotation; this.finished_callback=null; this.timeoutId = null; } @@ -144,13 +146,13 @@ class ShiftText { } } show() { - g.setFontAlign(-1,-1,0); + g.setFontAlign(-1,-1,this.rotation); g.setFont(this.font_name,this.font_size); g.setColor(this.color[0],this.color[1],this.color[2]); g.drawString(this.txt, this.x, this.y); } hide(){ - g.setFontAlign(-1,-1,0); + g.setFontAlign(-1,-1,this.rotation); g.setFont(this.font_name,this.font_size); //console.log("bgcolor:" + this.bg_color); g.setColor(this.bg_color[0],this.bg_color[1],this.bg_color[2]); @@ -198,8 +200,8 @@ class ShiftText { if(to_y == null) to_y = this.init_y; - //console.log("scrollInFromBottom y:" + this.y + "->" + to_y + " -> " + txt) - this.setTextPosition(txt, this.init_x, g.getHeight() - 2*this.speed_x); + this.setTextPosition(txt, this.init_x, g.getHeight() + 2*this.font_size); + console.log("scrollInFromBottom y:" + this.y + "->" + to_y + " -> " + txt) this.moveTo(this.init_x,to_y); } scrollInFromLeft(txt,to_x){ @@ -286,22 +288,20 @@ var DISPLAY_TEXT_X = 20; var style = { fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), - clock_text_speed: 5, y_init: (bangleVersion()<2)? 34 : 50, //row_height: (row_props)=>(row_props.major_minor == 'major')? (bangleVersion()<2)? 40 : 30: (bangleVersion()<2)? 35 : 25, row_height: (row_props)=>(row_props.major_minor === 'major')? (bangleVersion()<2)? 40 : 50: (bangleVersion()<2)? 35 : 15, //row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? g.getHeight() - 2*row_height : last_y, - row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? 34 : last_y + 20, - row_x: (row_props, last_x) => row_props.info_type === 'date'? 60 : last_x, + row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? 160 : last_y + 20, + row_x: (row_props, last_x) => row_props.info_type === 'date'? 160 : last_x, + row_speed: (row_props) => row_props.info_type === 'date'? 1 : 5, + row_rotation: (row_props) => row_props.info_type === 'date'? 3 : 0, // random scrollIn: (d,txt)=> { - var random = Math.random(); if (d.getRowContext().info_type === 'date') { - if (random > 0.5) - d.scrollInFromRight(txt); - else - d.scrollInFromLeft(txt); + d.scrollInFromBottom(txt); } else { + var random = Math.random(); if (random < 0.33) { d.scrollInFromRight(txt); } else if (random < 0.66) { @@ -316,13 +316,10 @@ var style = { //scrollIn: (d,txt)=>d.scrollInFromRight(txt), //scrollIn: (d,txt,to_x)=>d.scrollInFromLeft(txt,to_x), scrollOff: (d)=>{ - var random = Math.random(); if (d.getRowContext().info_type === 'date') { - if (random > 0.5) - d.scrollOffToRight(); - else - d.scrollOffToLeft(); + d.scrollOffToBottom(); } else { + var random = Math.random(); if (random < 0.33) { d.scrollOffToRight(); } else if (random < 0.66) { @@ -348,21 +345,20 @@ function init_display() { var row_props = date_formatter.rowProperties(i); console.log("row info[" + i + "]=" + row_props.major_minor) var row_height = style.row_height(row_props); - y = style.row_y(row_props,y,row_height); - var x = style.row_x(row_props,DISPLAY_TEXT_X); - var color = style.fg_color(row_props); + var row_speed = style.row_speed(row_props); row_displays.push( - new ShiftText(x, - y, + new ShiftText(style.row_x(row_props,DISPLAY_TEXT_X), + style.row_y(row_props,y,row_height), '', "Vector", row_height, - style.clock_text_speed, - style.clock_text_speed, + row_speed, + row_speed, 10, - color, + style.fg_color(row_props), bg_color(), - row_props + row_props, + style.row_rotation(row_props) ) ); y += row_height; From 99adaa5ab61a6eb062c1781528bef3bc203c3832 Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sat, 30 Jul 2022 19:31:04 +0100 Subject: [PATCH 08/69] Sliding Clock: BUGFIX: variable clock speed being overwritten --- apps/slidingtext/slidingtext.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 2e4fc6771..909543afd 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -405,7 +405,6 @@ function reset_clock(hard_reset){ var rows = date_formatter.formatDate(reset_time); for (var i = 0; i < rows.length; i++) { row_displays[i].hide(); - row_displays[i].speed_x = style.clock_text_speed; row_displays[i].x = row_displays[i].init_x; row_displays[i].y = row_displays[i].init_y; if(row_displays[i].timeoutId != null){ @@ -417,7 +416,6 @@ function reset_clock(hard_reset){ } else { // do a hard reset and clear everything out for (var i = 0; i < row_displays.length; i++) { - row_displays[i].speed_x = style.clock_text_speed; row_displays[i].reset(hard_reset); } } From 395d7ac62faa96970ecd55a7977e49966d319e30 Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sat, 30 Jul 2022 22:47:21 +0100 Subject: [PATCH 09/69] Sliding Clock: sliding clock can now be styled using styling properties --- apps/slidingtext/slidingtext.dtfmt.js | 3 +- apps/slidingtext/slidingtext.js | 143 ++++++++++++++++++++------ 2 files changed, 111 insertions(+), 35 deletions(-) diff --git a/apps/slidingtext/slidingtext.dtfmt.js b/apps/slidingtext/slidingtext.dtfmt.js index 58898264e..091cbe287 100644 --- a/apps/slidingtext/slidingtext.dtfmt.js +++ b/apps/slidingtext/slidingtext.dtfmt.js @@ -11,7 +11,8 @@ class DateFormatter { formatDate(date){ return ["no","date","defined"]; } - rowProperties(row_no){ return {} } + rowProperties(row_no){ return {} }; + formatProperties(){ return {}; } } module.exports = DateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 909543afd..d3459e69e 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -286,21 +286,62 @@ function bangleVersion(){ } var DISPLAY_TEXT_X = 20; -var style = { - fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), - y_init: (bangleVersion()<2)? 34 : 50, - //row_height: (row_props)=>(row_props.major_minor == 'major')? (bangleVersion()<2)? 40 : 30: (bangleVersion()<2)? 35 : 25, - row_height: (row_props)=>(row_props.major_minor === 'major')? (bangleVersion()<2)? 40 : 50: (bangleVersion()<2)? 35 : 15, - //row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? g.getHeight() - 2*row_height : last_y, - row_y: (row_props, last_y, row_height) => row_props.info_type === 'date'? 160 : last_y + 20, - row_x: (row_props, last_x) => row_props.info_type === 'date'? 160 : last_x, - row_speed: (row_props) => row_props.info_type === 'date'? 1 : 5, - row_rotation: (row_props) => row_props.info_type === 'date'? 3 : 0, - // random - scrollIn: (d,txt)=> { - if (d.getRowContext().info_type === 'date') { - d.scrollInFromBottom(txt); - } else { +var style; + +/** + * style strings + * timespeed.slow - + * date.right.up - + * time.slide.random - + * minor.small - + * major.large - + * y_init.middle - + */ +var style_name; +function init_style() { + if(style_name == null){ + style_name = date_formatter.formatProperties().default_style; + } + if(style_name == null){ + style_name = ''; + } + var time_speed = 10; + if(style_name.includes('timespeed.slow')) { + time_speed = 5; + } else if(style_name.includes('timespeed.superslow')){ + time_speed = 1; + } + var date_speed = 10; + if(style_name.includes('datespeed.slow')){ + date_speed = 5; + } else if(style_name.includes('datespeed.superslow')){ + date_speed = 1; + } + + var row_y_calc = (row_props, last_y, row_height) => last_y; + var row_x_calc = (row_props, last_x) => last_x; + + var date_coords; + var date_rotation = 0; + var date_scroll_in = (d,txt)=> d.scrollInFromRight(txt); + var date_scroll_out = (d)=> d.scrollOffToLeft(); + if(style_name.includes('date.right.up')) { + date_coords = [160, 160]; + date_rotation = 3; + date_scroll_in = (d,txt)=> d.scrollInFromBottom(txt); + date_scroll_out = (d) => d.scrollOffToBottom(); + + } + + if(date_coords != null){ + row_y_calc = (row_props, last_y, row_height) => (row_props.info_type === 'date')? date_coords[1] : last_y + row_x_calc = (row_props, last_x) => row_props.info_type === 'date'? date_coords[0] : last_x; + } + + var time_scroll_in = (d,txt)=> d.scrollInFromRight(txt); + var time_scroll_out = (d)=> d.scrollOffToLeft(); + if(style_name.includes('time.slide.random')) { + time_scroll_in = (d,txt)=> { var random = Math.random(); if (random < 0.33) { d.scrollInFromRight(txt); @@ -310,34 +351,55 @@ var style = { d.scrollInFromBottom(txt); } } - }, - //scrollIn: (d,txt)=>(d.getRowContext().info_type === 'date')? d.scrollInFromRight(txt) : d.scrollInFromBottom(txt), + } - //scrollIn: (d,txt)=>d.scrollInFromRight(txt), - //scrollIn: (d,txt,to_x)=>d.scrollInFromLeft(txt,to_x), - scrollOff: (d)=>{ - if (d.getRowContext().info_type === 'date') { - d.scrollOffToBottom(); - } else { - var random = Math.random(); - if (random < 0.33) { - d.scrollOffToRight(); - } else if (random < 0.66) { - d.scrollOffToLeft(); + var major_height=[40,30]; + var minor_height=[35,25]; + if(style_name.includes('minor.small')) { + minor_height = [25,14]; + } + if(style_name.includes('major.large')) { + major_height = [60,50]; + } + var row_heights = {major: major_height, minor: minor_height}; + + var y_start = [34,24]; + if(style_name.includes('y_init.middle')){ + y_start = [80,70] + } + + var version = bangleVersion() - 1; + style = { + fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), + y_init: y_start[version], + row_height: (row_props)=> row_heights[row_props.major_minor][version], + row_y: (row_props, last_y, row_height) => row_y_calc(row_props,last_y,row_height), + row_x: (row_props, last_x) => row_x_calc(row_props, last_x), + row_speed: (row_props) => row_props.info_type === 'date'? 1 : time_speed, + row_rotation: (row_props) => row_props.info_type === 'date'? date_rotation : 0, + scrollIn: (d,txt)=> { + if (d.getRowContext().info_type === 'date') { + date_scroll_in(d,txt); } else { - d.scrollOffToBottom(); + time_scroll_in(d,txt); + } + }, + scrollOff: (d)=> { + if (d.getRowContext().info_type === 'date') { + date_scroll_out(d) + } else { + time_scroll_out(d) } } } - //scrollOff: (d)=>(d.getRowContext().info_type === 'date')? d.scrollOffToLeft() : d.scrollOffToBottom() - //scrollOff: (d)=>d.scrollOffToLeft() - //scrollOff: (d)=>d.scrollOffToRight() + }; // a list of display rows var row_displays; function init_display() { + init_style(); row_displays = []; var y = style.y_init; var date_rows = date_formatter.formatDate(new Date()); @@ -537,7 +599,11 @@ class DigitDateTimeFormatter { this.row_props =[ {major_minor: 'major', info_type: 'time'}, {major_minor: 'minor', info_type: 'date'}, - ] + ]; + this.format_props = { + default_style: 'timespeed.slow,datespeed.superslow,date.right.up,time.slide.random,minor.small,major.large,y_init.middle' + //default_style: '' + }; } name(){return "Digital";} shortName(){return "digit";} @@ -557,7 +623,11 @@ class DigitDateTimeFormatter { var time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); var date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); - return [time_txt,date_txt]; + return [time_txt, date_txt]; + } + + formatProperties(){ + return this.format_props; } rowProperties(row_no) { @@ -588,8 +658,13 @@ function load_settings() { var settings = require("Storage").readJSON(PREFERENCE_FILE); if (settings != null) { console.log("loaded:" + JSON.stringify(settings)); + + if (settings.date_format != null) { set_dateformat(settings.date_format); + if (settings.style_name != null) { + style_name = settings.style_name; + } init_display(); } if (settings.color_scheme != null) { From 1fc4dcde62f4c8fde12b0f9bccd4b9b99047b79f Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sun, 31 Jul 2022 00:17:24 +0100 Subject: [PATCH 10/69] Sliding Clock: BUGIFX: build failure due to semi colons --- apps/slidingtext/slidingtext.dtfmt.js | 10 ++++------ apps/slidingtext/slidingtext.js | 5 ++--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/apps/slidingtext/slidingtext.dtfmt.js b/apps/slidingtext/slidingtext.dtfmt.js index 091cbe287..b8d7f1a70 100644 --- a/apps/slidingtext/slidingtext.dtfmt.js +++ b/apps/slidingtext/slidingtext.dtfmt.js @@ -6,12 +6,10 @@ class DateFormatter { * and the date formatDate methid will return the time formated * to the lines of text on the screen */ - name(){return "no name";} - shortName(){return "no short name"} - formatDate(date){ - return ["no","date","defined"]; - } - rowProperties(row_no){ return {} }; + name(){ return "no name";} + shortName(){ return "no short name" } + formatDate(date){ return ["no","date","defined"]; } + rowProperties(row_no){ return {}; } formatProperties(){ return {}; } } diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index d3459e69e..d71c294a8 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -201,7 +201,7 @@ class ShiftText { to_y = this.init_y; this.setTextPosition(txt, this.init_x, g.getHeight() + 2*this.font_size); - console.log("scrollInFromBottom y:" + this.y + "->" + to_y + " -> " + txt) + //console.log("scrollInFromBottom y:" + this.y + "->" + to_y + " -> " + txt) this.moveTo(this.init_x,to_y); } scrollInFromLeft(txt,to_x){ @@ -392,8 +392,7 @@ function init_style() { } } } - -}; +} // a list of display rows var row_displays; From 74b5dc94410638fde66a303d6b2a70d2738943bd Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Sun, 31 Jul 2022 16:17:24 +0100 Subject: [PATCH 11/69] sliding clock: changed styling properties to map based. - Added english formatter with date --- apps/slidingtext/slidingtext.dtfmt.js | 8 ++- apps/slidingtext/slidingtext.js | 76 ++++++++++++++-------- apps/slidingtext/slidingtext.locale.en3.js | 31 +++++++++ apps/slidingtext/slidingtext.utils.en.js | 11 +++- 4 files changed, 96 insertions(+), 30 deletions(-) create mode 100644 apps/slidingtext/slidingtext.locale.en3.js diff --git a/apps/slidingtext/slidingtext.dtfmt.js b/apps/slidingtext/slidingtext.dtfmt.js index b8d7f1a70..2dd0d09b4 100644 --- a/apps/slidingtext/slidingtext.dtfmt.js +++ b/apps/slidingtext/slidingtext.dtfmt.js @@ -3,13 +3,17 @@ class DateFormatter { * A pure virtual class which all the other date formatters will * inherit from. * The name will be used to declare the date format when selected - * and the date formatDate methid will return the time formated + * and the date formatDate method will return the time formated * to the lines of text on the screen */ name(){ return "no name";} shortName(){ return "no short name" } formatDate(date){ return ["no","date","defined"]; } - rowProperties(row_no){ return {}; } + rowProperties(row_no){ + return (row_no === 0)? + {major_minor: 'major', info_type: 'time'} : + {major_minor: 'minor', info_type: 'time'}; + } formatProperties(){ return {}; } } diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index d71c294a8..01485f589 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -289,32 +289,34 @@ var DISPLAY_TEXT_X = 20; var style; /** - * style strings - * timespeed.slow - - * date.right.up - - * time.slide.random - - * minor.small - - * major.large - - * y_init.middle - + * time_speed: 'slow' + * date_speed: 'superslow', + * date_placing: 'right.up', + * time_slide: 'random', + * minor_text_size: 'small', + * major_text_size: 'large', + * y_init: 'middle' */ -var style_name; +var style_settings; function init_style() { - if(style_name == null){ - style_name = date_formatter.formatProperties().default_style; + if(style_settings == null){ + style_settings = date_formatter.formatProperties().default_style; } - if(style_name == null){ - style_name = ''; + if(style_settings == null){ + style_settings = {}; } var time_speed = 10; - if(style_name.includes('timespeed.slow')) { + var time_speed_setting = style_settings.time_speed; + if(time_speed_setting === 'slow') { time_speed = 5; - } else if(style_name.includes('timespeed.superslow')){ + } else if(time_speed_setting === 'superslow'){ time_speed = 1; } var date_speed = 10; - if(style_name.includes('datespeed.slow')){ + var date_speed_setting = style_settings.date_speed; + if(date_speed_setting === 'slow'){ date_speed = 5; - } else if(style_name.includes('datespeed.superslow')){ + } else if(date_speed_setting === 'superslow'){ date_speed = 1; } @@ -325,12 +327,12 @@ function init_style() { var date_rotation = 0; var date_scroll_in = (d,txt)=> d.scrollInFromRight(txt); var date_scroll_out = (d)=> d.scrollOffToLeft(); - if(style_name.includes('date.right.up')) { + var date_placing_setting = style_settings.date_placing; + if(date_placing_setting === 'right.up') { date_coords = [160, 160]; date_rotation = 3; date_scroll_in = (d,txt)=> d.scrollInFromBottom(txt); date_scroll_out = (d) => d.scrollOffToBottom(); - } if(date_coords != null){ @@ -340,7 +342,8 @@ function init_style() { var time_scroll_in = (d,txt)=> d.scrollInFromRight(txt); var time_scroll_out = (d)=> d.scrollOffToLeft(); - if(style_name.includes('time.slide.random')) { + var time_slide_setting = style_settings.time_slide; + if(time_slide_setting === 'random') { time_scroll_in = (d,txt)=> { var random = Math.random(); if (random < 0.33) { @@ -351,20 +354,33 @@ function init_style() { d.scrollInFromBottom(txt); } } + time_scroll_out = (d)=> { + var random = Math.random(); + if (random < 0.33) { + d.scrollOffToRight(); + } else if (random < 0.66) { + d.scrollOffToLeft(); + } else { + d.scrollOffToBottom(); + } + } } var major_height=[40,30]; var minor_height=[35,25]; - if(style_name.includes('minor.small')) { + var minor_size_setting = style_settings.minor_text_size; + if(minor_size_setting === 'small') { minor_height = [25,14]; } - if(style_name.includes('major.large')) { + var major_size_setting = style_settings.major_text_size; + if(major_size_setting === 'large') { major_height = [60,50]; } var row_heights = {major: major_height, minor: minor_height}; var y_start = [34,24]; - if(style_name.includes('y_init.middle')){ + var y_init_setting = style_settings.y_init; + if(y_init_setting === 'middle'){ y_start = [80,70] } @@ -375,7 +391,7 @@ function init_style() { row_height: (row_props)=> row_heights[row_props.major_minor][version], row_y: (row_props, last_y, row_height) => row_y_calc(row_props,last_y,row_height), row_x: (row_props, last_x) => row_x_calc(row_props, last_x), - row_speed: (row_props) => row_props.info_type === 'date'? 1 : time_speed, + row_speed: (row_props) => row_props.info_type === 'date'? date_speed : time_speed, row_rotation: (row_props) => row_props.info_type === 'date'? date_rotation : 0, scrollIn: (d,txt)=> { if (d.getRowContext().info_type === 'date') { @@ -600,7 +616,15 @@ class DigitDateTimeFormatter { {major_minor: 'minor', info_type: 'date'}, ]; this.format_props = { - default_style: 'timespeed.slow,datespeed.superslow,date.right.up,time.slide.random,minor.small,major.large,y_init.middle' + default_style: { + time_speed: 'slow', + date_speed: 'superslow', + date_placing: 'right.up', + time_slide: 'random', + minor_text_size: 'small', + major_text_size: 'large', + y_init: 'middle' + } //default_style: '' }; } @@ -661,8 +685,8 @@ function load_settings() { if (settings.date_format != null) { set_dateformat(settings.date_format); - if (settings.style_name != null) { - style_name = settings.style_name; + if (settings.style_settings != null) { + style_settings = settings.style_settings; } init_display(); } diff --git a/apps/slidingtext/slidingtext.locale.en3.js b/apps/slidingtext/slidingtext.locale.en3.js new file mode 100644 index 000000000..bc02665ab --- /dev/null +++ b/apps/slidingtext/slidingtext.locale.en3.js @@ -0,0 +1,31 @@ +var DateFormatter = require("slidingtext.dtfmt.js"); +const hoursToText = require("slidingtext.utils.en.js").hoursToText; +const numberToText = require("slidingtext.utils.en.js").numberToText; +const monthToText = require("slidingtext.utils.en.js").monthToText; + +class EnglishDateFormatter extends DateFormatter { + constructor() { + super(); + this.row_props =[ + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'date'}, + ]; + } + name(){return "English";} + shortName(){return "en"} + formatDate(date){ + var hours_txt = hoursToText(date.getHours()); + var mins_txt = numberToText(date.getMinutes()); + var date_txt = monthToText(date.getMonth() + 1) + ' ' + numberToText(date.getDate()); + return [hours_txt,mins_txt[0],mins_txt[1],date_txt]; + } + rowProperties(row_no) { + return this.row_props[row_no]; + } + + +} + +module.exports = EnglishDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.utils.en.js b/apps/slidingtext/slidingtext.utils.en.js index a91fcbd16..d0eb0a6b6 100644 --- a/apps/slidingtext/slidingtext.utils.en.js +++ b/apps/slidingtext/slidingtext.utils.en.js @@ -3,9 +3,15 @@ const numberStr = ["ZERO","ONE", "TWO", "THREE", "FOUR", "FIVE", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN", "TWENTY"]; -const tensStr = ["ZERO", "TEN", "TWENTY", "THIRTY", "FOURTY", - "FIFTY"]; +const tensStr = ["ZERO", "TEN", "TWENTY", "THIRTY", "FOURTY", "FIFTY"]; +const monthStr = [ + "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JULY", + "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" +] +const monthToText = (month)=>{ + return monthStr[month - 1]; +} const hoursToText = (hours)=>{ hours = hours % 12; if(hours == 0){ @@ -30,5 +36,6 @@ const numberToText = (value)=> { return [word1,word2]; } +exports.monthToText = monthToText; exports.hoursToText = hoursToText; exports.numberToText = numberToText; \ No newline at end of file From b95360232f26887be4b6c6d4d3a72f963605934e Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Sun, 31 Jul 2022 23:42:09 +0100 Subject: [PATCH 12/69] sliding clock: testing with current english clock --- apps/slidingtext/custom.html | 71 ------------------------ apps/slidingtext/metadata.json | 1 - apps/slidingtext/slidingtext.dtfmt.js | 6 +- apps/slidingtext/slidingtext.js | 14 +++-- apps/slidingtext/slidingtext.settings.js | 28 +++++----- 5 files changed, 28 insertions(+), 92 deletions(-) delete mode 100644 apps/slidingtext/custom.html diff --git a/apps/slidingtext/custom.html b/apps/slidingtext/custom.html deleted file mode 100644 index 5e89e230b..000000000 --- a/apps/slidingtext/custom.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - -

Please select watch languages (Max 3, only the first 3 selected will be loaded)

- - - - - - -
EnabledName
- -

Click

- - - - - - diff --git a/apps/slidingtext/metadata.json b/apps/slidingtext/metadata.json index 15707c1ad..0e36f61b8 100644 --- a/apps/slidingtext/metadata.json +++ b/apps/slidingtext/metadata.json @@ -8,7 +8,6 @@ "tags": "clock", "supports": ["BANGLEJS","BANGLEJS2"], "readme": "README.md", - "custom": "custom.html", "allow_emulator": false, "storage": [ {"name":"slidingtext.app.js","url":"slidingtext.js"}, diff --git a/apps/slidingtext/slidingtext.dtfmt.js b/apps/slidingtext/slidingtext.dtfmt.js index 2dd0d09b4..352804c28 100644 --- a/apps/slidingtext/slidingtext.dtfmt.js +++ b/apps/slidingtext/slidingtext.dtfmt.js @@ -14,7 +14,11 @@ class DateFormatter { {major_minor: 'major', info_type: 'time'} : {major_minor: 'minor', info_type: 'time'}; } - formatProperties(){ return {}; } + formatProperties(){ + return { + default_style: {} + }; + } } module.exports = DateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 01485f589..20ebc48fb 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -300,7 +300,10 @@ var style; var style_settings; function init_style() { if(style_settings == null){ - style_settings = date_formatter.formatProperties().default_style; + var formatProps = date_formatter.formatProperties(); + if(formatProps != null){ + style_settings = formatProps.default_style; + } } if(style_settings == null){ style_settings = {}; @@ -658,16 +661,20 @@ class DigitDateTimeFormatter { } } -var date_formatter = new DigitDateTimeFormatter(); +var date_formatter; function set_dateformat(shortname){ console.log("setting date format:" + shortname); try { if (date_formatter == null || date_formatter.shortName() !== shortname) { - date_formatter = require("slidingtext.locale." + shortname + ".js"); + var date_formatter_class = require("slidingtext.locale." + shortname + ".js"); + date_formatter = new date_formatter_class(); } } catch(e){ console.log("Failed to load " + shortname); } + if(date_formatter == null){ + date_formatter = new DigitDateTimeFormatter(); + } } var enable_live_controls = false; @@ -682,7 +689,6 @@ function load_settings() { if (settings != null) { console.log("loaded:" + JSON.stringify(settings)); - if (settings.date_format != null) { set_dateformat(settings.date_format); if (settings.style_settings != null) { diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index d1006990e..d87dfce26 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -7,19 +7,16 @@ settings.enable_live_controls = (g.getHeight()> 200); } 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); + var locale_mappings = { + 'English Time':'en', + 'English Date + Time': 'en3', + 'English Time (Trad)': 'en2', + 'French': 'fr', + 'German': 'de', + 'Spanish': 'es', + 'Japanese': 'jp', } + var locales = Object.keys(locale_mappings); function writeSettings() { console.log("saving:" + JSON.stringify(settings)); @@ -27,7 +24,7 @@ } // Helper method which uses int-based menu item for set of string values - function stringItems(startvalue, writer, values) { + function stringItems(startvalue, writer, values, value_mapping) { return { value: (startvalue === undefined ? 0 : values.indexOf(startvalue)), format: v => values[v], @@ -36,7 +33,8 @@ wrap: true, step: 1, onchange: v => { - writer(values[v]); + var write_value = (value_mapping == null)? values[v] : value_mapping(values[v]); + writer(write_value); writeSettings(); } }; @@ -52,7 +50,7 @@ "" : { "title" : "Sliding Text" }, "< Back" : () => back(), "Colour": stringInSettings("color_scheme", ["white", "black", "red","grey","purple","blue"]), - "Languages": stringInSettings("date_format", locales), + "Languages": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ), "Live Control": { value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true), format: v => v ? "On" : "Off", From c3ce292289a947297bb41ed4fb4ee2defe4cbb8e Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Mon, 1 Aug 2022 20:41:42 +0100 Subject: [PATCH 13/69] sliding clock: testing with current clock faces - added left side date style --- apps/slidingtext/slidingtext.js | 35 +++++++++++++++++++--- apps/slidingtext/slidingtext.locale.en2.js | 25 +++++++++++++--- apps/slidingtext/slidingtext.locale.en3.js | 20 +++++++++---- apps/slidingtext/slidingtext.locale.es.js | 30 +++++++++++++++---- apps/slidingtext/slidingtext.utils.en.js | 6 ++-- 5 files changed, 94 insertions(+), 22 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 20ebc48fb..971c87488 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -295,6 +295,7 @@ var style; * time_slide: 'random', * minor_text_size: 'small', * major_text_size: 'large', + * date_text_size: 'vsmall' * y_init: 'middle' */ var style_settings; @@ -336,6 +337,11 @@ function init_style() { date_rotation = 3; date_scroll_in = (d,txt)=> d.scrollInFromBottom(txt); date_scroll_out = (d) => d.scrollOffToBottom(); + } else if(date_placing_setting === 'left.up'){ + date_coords = [5, 160]; + date_rotation = 3; + date_scroll_in = (d,txt)=> d.scrollInFromBottom(txt); + date_scroll_out = (d) => d.scrollOffToBottom(); } if(date_coords != null){ @@ -346,7 +352,11 @@ function init_style() { var time_scroll_in = (d,txt)=> d.scrollInFromRight(txt); var time_scroll_out = (d)=> d.scrollOffToLeft(); var time_slide_setting = style_settings.time_slide; - if(time_slide_setting === 'random') { + if(time_slide_setting === `in_left_out_left`) { + time_scroll_in = (d, txt) => d.scrollInFromLeft(txt); + } else if(time_slide_setting === `in_right_out_right`){ + time_scroll_out = (d)=> d.scrollOffToRight(); + } else if(time_slide_setting === 'random') { time_scroll_in = (d,txt)=> { var random = Math.random(); if (random < 0.33) { @@ -379,7 +389,22 @@ function init_style() { if(major_size_setting === 'large') { major_height = [60,50]; } - var row_heights = {major: major_height, minor: minor_height}; + var date_size_setting = style_settings.date_text_size; + var date_height_major = major_height; + var date_height_minor = minor_height; + + if(date_size_setting === 'small'){ + date_height_major = [25,14]; + date_height_minor = [25,14] + } else if(date_size_setting === 'vsmall'){ + date_height_major = [20,10]; + date_height_minor = [20,10]; + } + + var row_heights ={ + time: {major: major_height, minor: minor_height}, + date: {major: date_height_major, minor: date_height_minor} + }; var y_start = [34,24]; var y_init_setting = style_settings.y_init; @@ -391,7 +416,9 @@ function init_style() { style = { fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), y_init: y_start[version], - row_height: (row_props)=> row_heights[row_props.major_minor][version], + row_height: (row_props)=> + row_heights[row_props.info_type][row_props.major_minor][version] + , row_y: (row_props, last_y, row_height) => row_y_calc(row_props,last_y,row_height), row_x: (row_props, last_x) => row_x_calc(row_props, last_x), row_speed: (row_props) => row_props.info_type === 'date'? date_speed : time_speed, @@ -624,7 +651,7 @@ class DigitDateTimeFormatter { date_speed: 'superslow', date_placing: 'right.up', time_slide: 'random', - minor_text_size: 'small', + date_text_size: 'vsmall', major_text_size: 'large', y_init: 'middle' } diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index d7d7ff6a8..c4c642661 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -5,6 +5,17 @@ const numberToText = require("slidingtext.utils.en.js").numberToText; class EnglishTraditionalDateFormatter extends DateFormatter { constructor() { super(); + this.row_props = [ + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'major', info_type: 'time'} + ]; + this.format_props = { + default_style: { + } + } } name(){return "English (Traditional)";} shortName(){return "en2"} @@ -16,13 +27,13 @@ class EnglishTraditionalDateFormatter extends DateFormatter { } var hours = hoursToText(hourOfDay); // Deal with the special times first - if(mins == 0){ + if(mins === 0){ return [hours,"", "O'","CLOCK"]; - } else if(mins == 30){ + } else if(mins === 30){ return ["","HALF", "PAST", "", hours]; - } else if(mins == 15){ + } else if(mins === 15){ return ["","QUARTER", "PAST", "", hours]; - } else if(mins == 45) { + } else if(mins === 45) { return ["", "QUARTER", "TO", "", hours]; } var mins_txt; @@ -49,6 +60,12 @@ class EnglishTraditionalDateFormatter extends DateFormatter { } } } + rowProperties(row_no) { + return this.row_props[row_no]; + } + formatProperties(){ + return this.format_props; + } } module.exports = EnglishTraditionalDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.en3.js b/apps/slidingtext/slidingtext.locale.en3.js index bc02665ab..c861384f9 100644 --- a/apps/slidingtext/slidingtext.locale.en3.js +++ b/apps/slidingtext/slidingtext.locale.en3.js @@ -6,26 +6,36 @@ const monthToText = require("slidingtext.utils.en.js").monthToText; class EnglishDateFormatter extends DateFormatter { constructor() { super(); - this.row_props =[ + this.row_props = [ {major_minor: 'major', info_type: 'time'}, {major_minor: 'minor', info_type: 'time'}, {major_minor: 'minor', info_type: 'time'}, {major_minor: 'minor', info_type: 'date'}, ]; + this.format_props = { + default_style: { + time_slide: 'in_right_out_right', + time_speed: 'slow', + date_speed: 'superslow', + date_placing: 'left.up', + date_text_size: 'vsmall' + } + } } name(){return "English";} - shortName(){return "en"} + shortName(){return "en3"} formatDate(date){ var hours_txt = hoursToText(date.getHours()); var mins_txt = numberToText(date.getMinutes()); - var date_txt = monthToText(date.getMonth() + 1) + ' ' + numberToText(date.getDate()); + var date_txt = monthToText(date.getMonth()) + ' ' + numberToText(date.getDate()); return [hours_txt,mins_txt[0],mins_txt[1],date_txt]; } rowProperties(row_no) { return this.row_props[row_no]; } - - + formatProperties(){ + return this.format_props; + } } module.exports = EnglishDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.es.js b/apps/slidingtext/slidingtext.locale.es.js index 62c68b64d..3e53f8567 100644 --- a/apps/slidingtext/slidingtext.locale.es.js +++ b/apps/slidingtext/slidingtext.locale.es.js @@ -34,7 +34,7 @@ const spanishNumberStr = [ ["ZERO"], // 0 function spanishHoursToText(hours){ hours = hours % 12; - if(hours == 0){ + if(hours === 0){ hours = 12; } return spanishNumberStr[hours][0]; @@ -45,7 +45,19 @@ function spanishMinsToText(mins){ } class SpanishDateFormatter extends DateFormatter { - constructor() { super();} + constructor() { + super(); + this.row_props = [ + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'date'}, + ]; + this.format_props = { + default_style: { + } + } + } name(){return "Spanish";} shortName(){return "es"} formatDate(date){ @@ -57,13 +69,13 @@ class SpanishDateFormatter extends DateFormatter { var hours = spanishHoursToText(hourOfDay); //console.log('hourOfDay->' + hourOfDay + ' hours text->' + hours) // Deal with the special times first - if(mins == 0){ + if(mins === 0){ return [hours,"", "","",""]; - } else if(mins == 30){ + } else if(mins === 30){ return [hours, "Y", "MEDIA",""]; - } else if(mins == 15){ + } else if(mins === 15){ return [hours, "Y", "CUARTO",""]; - } else if(mins == 45) { + } else if(mins === 45) { return [hours, "MENOS", "CUARTO",""]; } else if(mins > 30){ var mins_txt = spanishMinsToText(60-mins); @@ -73,6 +85,12 @@ class SpanishDateFormatter extends DateFormatter { return [hours, "Y", mins_txt[0],mins_txt[1]]; } } + rowProperties(row_no) { + return this.row_props[row_no]; + } + formatProperties(){ + return this.format_props; + } } module.exports = SpanishDateFormatter; diff --git a/apps/slidingtext/slidingtext.utils.en.js b/apps/slidingtext/slidingtext.utils.en.js index d0eb0a6b6..c3cead9b6 100644 --- a/apps/slidingtext/slidingtext.utils.en.js +++ b/apps/slidingtext/slidingtext.utils.en.js @@ -5,8 +5,8 @@ const numberStr = ["ZERO","ONE", "TWO", "THREE", "FOUR", "FIVE", "NINETEEN", "TWENTY"]; const tensStr = ["ZERO", "TEN", "TWENTY", "THIRTY", "FOURTY", "FIFTY"]; const monthStr = [ - "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JULY", - "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" + "JAN", "FEB", "MAR", "APR", "MAY", "JULY", + "AUG", "SEPT", "OCT", "NOV", "DEC" ] const monthToText = (month)=>{ @@ -14,7 +14,7 @@ const monthToText = (month)=>{ } const hoursToText = (hours)=>{ hours = hours % 12; - if(hours == 0){ + if(hours === 0){ hours = 12; } return numberStr[hours]; From 4e3c8552c171dda03603203e950fa870bc11b5c7 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Sat, 6 Aug 2022 02:18:25 +0100 Subject: [PATCH 14/69] sliding clock: All watch faces working again after refactoring --- apps/slidingtext/slidingtext.js | 10 +++++++--- apps/slidingtext/slidingtext.locale.de.js | 23 ++++++++++++++++++++-- apps/slidingtext/slidingtext.locale.en.js | 20 ++++++++++++++++++- apps/slidingtext/slidingtext.locale.en3.js | 1 + apps/slidingtext/slidingtext.locale.es.js | 2 +- apps/slidingtext/slidingtext.locale.fr.js | 22 ++++++++++++++++++++- apps/slidingtext/slidingtext.locale.jp.js | 21 +++++++++++++++++++- 7 files changed, 90 insertions(+), 9 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 971c87488..a5a734fd7 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -383,7 +383,9 @@ function init_style() { var minor_height=[35,25]; var minor_size_setting = style_settings.minor_text_size; if(minor_size_setting === 'small') { - minor_height = [25,14]; + minor_height = [25,20]; + } else if(minor_size_setting === 'vsmall'){ + minor_height = [20,15]; } var major_size_setting = style_settings.major_text_size; if(major_size_setting === 'large') { @@ -408,8 +410,10 @@ function init_style() { var y_start = [34,24]; var y_init_setting = style_settings.y_init; - if(y_init_setting === 'middle'){ - y_start = [80,70] + if(y_init_setting === 'q1'){ + y_start = [60,50]; + } else if(y_init_setting === 'middle'){ + y_start = [80,70]; } var version = bangleVersion() - 1; diff --git a/apps/slidingtext/slidingtext.locale.de.js b/apps/slidingtext/slidingtext.locale.de.js index da5c2f01d..c690edb61 100644 --- a/apps/slidingtext/slidingtext.locale.de.js +++ b/apps/slidingtext/slidingtext.locale.de.js @@ -45,7 +45,7 @@ const germanUnit = ["",//0 function germanHoursToText(hours){ hours = hours % 12; - if(hours == 0){ + if(hours === 0){ hours = 12; } return germanNumberStr[hours][0]; @@ -64,7 +64,20 @@ function germanMinsToText(mins) { } class GermanDateFormatter extends DateFormatter { - constructor() { super();} + constructor() { + super(); + this.row_props = [ + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + ]; + this.format_props = { + default_style: { + y_init: 'q1' + } + } + } name(){return "German";} shortName(){return "de"} formatDate(date){ @@ -90,6 +103,12 @@ class GermanDateFormatter extends DateFormatter { return [hours, "UHR", mins_txt[0],mins_txt[1]]; } } + rowProperties(row_no) { + return this.row_props[row_no]; + } + formatProperties(){ + return this.format_props; + } } module.exports = GermanDateFormatter; diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 6414ef7a9..467d18148 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -3,7 +3,19 @@ const hoursToText = require("slidingtext.utils.en.js").hoursToText; const numberToText = require("slidingtext.utils.en.js").numberToText; class EnglishDateFormatter extends DateFormatter { - constructor() { super();} + constructor() { + super(); + this.row_props = [ + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'} + ]; + this.format_props = { + default_style: { + y_init: 'q1', + } + } + } name(){return "English";} shortName(){return "en"} formatDate(date){ @@ -11,6 +23,12 @@ class EnglishDateFormatter extends DateFormatter { var mins_txt = numberToText(date.getMinutes()); return [hours_txt,mins_txt[0],mins_txt[1]]; } + rowProperties(row_no) { + return this.row_props[row_no]; + } + formatProperties(){ + return this.format_props; + } } module.exports = EnglishDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.en3.js b/apps/slidingtext/slidingtext.locale.en3.js index c861384f9..24feee7a8 100644 --- a/apps/slidingtext/slidingtext.locale.en3.js +++ b/apps/slidingtext/slidingtext.locale.en3.js @@ -14,6 +14,7 @@ class EnglishDateFormatter extends DateFormatter { ]; this.format_props = { default_style: { + y_init: 'q1', time_slide: 'in_right_out_right', time_speed: 'slow', date_speed: 'superslow', diff --git a/apps/slidingtext/slidingtext.locale.es.js b/apps/slidingtext/slidingtext.locale.es.js index 3e53f8567..8aec466cf 100644 --- a/apps/slidingtext/slidingtext.locale.es.js +++ b/apps/slidingtext/slidingtext.locale.es.js @@ -51,7 +51,7 @@ class SpanishDateFormatter extends DateFormatter { {major_minor: 'major', info_type: 'time'}, {major_minor: 'minor', info_type: 'time'}, {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'date'}, + {major_minor: 'minor', info_type: 'time'}, ]; this.format_props = { default_style: { diff --git a/apps/slidingtext/slidingtext.locale.fr.js b/apps/slidingtext/slidingtext.locale.fr.js index d4c1dc9d6..165b64045 100644 --- a/apps/slidingtext/slidingtext.locale.fr.js +++ b/apps/slidingtext/slidingtext.locale.fr.js @@ -29,7 +29,21 @@ function frenchHeures(hours){ } class FrenchDateFormatter extends DateFormatter { - constructor() { super(); } + constructor() { + super(); + this.row_props = [ + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + ]; + this.format_props = { + default_style: { + y_init: 'q1', + minor_text_size: 'small' + } + } + } name(){return "French";} shortName(){return "fr"} formatDate(date){ @@ -66,6 +80,12 @@ class FrenchDateFormatter extends DateFormatter { return [ hours, heures , mins_txt ]; } } + rowProperties(row_no) { + return this.row_props[row_no]; + } + formatProperties(){ + return this.format_props; + } } module.exports = FrenchDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.jp.js b/apps/slidingtext/slidingtext.locale.jp.js index 0f6e46a21..692e64886 100644 --- a/apps/slidingtext/slidingtext.locale.jp.js +++ b/apps/slidingtext/slidingtext.locale.jp.js @@ -59,7 +59,20 @@ function japaneseMinsToText(mins){ } class JapaneseDateFormatter extends DateFormatter { - constructor() { super(); } + constructor() { + super(); + this.row_props = [ + {major_minor: 'major', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + {major_minor: 'minor', info_type: 'time'}, + ]; + this.format_props = { + default_style: { + y_init: 'q1' + } + } + } name(){return "Japanese (Romanji)";} shortName(){return "jp"} formatDate(date){ @@ -67,6 +80,12 @@ class JapaneseDateFormatter extends DateFormatter { var mins_txt = japaneseMinsToText(date.getMinutes()); return [hours_txt,"JI", mins_txt[0], mins_txt[1] ]; } + rowProperties(row_no) { + return this.row_props[row_no]; + } + formatProperties(){ + return this.format_props; + } } module.exports = JapaneseDateFormatter; \ No newline at end of file From 5d50e0a9a76637f9fbe770146c3c73edfff33931 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Sun, 7 Aug 2022 23:17:39 +0100 Subject: [PATCH 15/69] sliding clock: Corrected the German One o'clock - should be Ein not Eins --- apps/slidingtext/slidingtext.locale.de.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/slidingtext/slidingtext.locale.de.js b/apps/slidingtext/slidingtext.locale.de.js index c690edb61..d66c150a6 100644 --- a/apps/slidingtext/slidingtext.locale.de.js +++ b/apps/slidingtext/slidingtext.locale.de.js @@ -48,7 +48,11 @@ function germanHoursToText(hours){ if(hours === 0){ hours = 12; } - return germanNumberStr[hours][0]; + if(hours === 1){ + return "EIN" + } else { + return germanNumberStr[hours][0]; + } } function germanMinsToText(mins) { @@ -86,7 +90,7 @@ class GermanDateFormatter extends DateFormatter { var hours = germanHoursToText(hourOfDay); //console.log('hourOfDay->' + hourOfDay + ' hours text->' + hours) // Deal with the special times first - if(mins == 0){ + if(mins === 0){ var hours = germanHoursToText(hourOfDay); return [hours,"UHR", "","",""]; } /*else if(mins == 30){ From 936d4132bcf77fdd9a3f442550ffe93707e3d724 Mon Sep 17 00:00:00 2001 From: awkirk Date: Wed, 10 Aug 2022 19:52:42 +0100 Subject: [PATCH 16/69] SLiding Clock: Now start with no config --- apps/slidingtext/slidingtext.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index a5a734fd7..312a19207 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -743,14 +743,15 @@ function load_settings() { } catch (e) { console.log("failed to load settings:" + e); } - if(row_displays == null){ - init_display(); - } // just set up as default if (!setScheme) { + set_dateformat("default") init_display(); updateColorScheme(); } + if(row_displays == null){ + init_display(); + } enable_live_controls = true } From 07e6eee44fc323256b9b66e273b7e36908b9c721 Mon Sep 17 00:00:00 2001 From: awkirk Date: Thu, 11 Aug 2022 00:53:05 +0100 Subject: [PATCH 17/69] SLiding Clock: Straight and angled date --- apps/slidingtext/slidingtext.js | 81 +++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 19 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 312a19207..ddba13c08 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -324,8 +324,8 @@ function init_style() { date_speed = 1; } - var row_y_calc = (row_props, last_y, row_height) => last_y; - var row_x_calc = (row_props, last_x) => last_x; + var row_y_calc = (row_props, last_y, row_height, row_rotation, row_counts) => (row_counts.row_count > 0)? last_y + row_height : last_y; + var row_x_calc = (row_props, last_x, row_height, row_rotation, row_counts) => last_x; var date_coords; var date_rotation = 0; @@ -333,7 +333,7 @@ function init_style() { var date_scroll_out = (d)=> d.scrollOffToLeft(); var date_placing_setting = style_settings.date_placing; if(date_placing_setting === 'right.up') { - date_coords = [160, 160]; + date_coords = [155, 160]; date_rotation = 3; date_scroll_in = (d,txt)=> d.scrollInFromBottom(txt); date_scroll_out = (d) => d.scrollOffToBottom(); @@ -344,11 +344,6 @@ function init_style() { date_scroll_out = (d) => d.scrollOffToBottom(); } - if(date_coords != null){ - row_y_calc = (row_props, last_y, row_height) => (row_props.info_type === 'date')? date_coords[1] : last_y - row_x_calc = (row_props, last_x) => row_props.info_type === 'date'? date_coords[0] : last_x; - } - var time_scroll_in = (d,txt)=> d.scrollInFromRight(txt); var time_scroll_out = (d)=> d.scrollOffToLeft(); var time_slide_setting = style_settings.time_slide; @@ -403,6 +398,31 @@ function init_style() { date_height_minor = [20,10]; } + if(date_coords != null){ + row_y_calc = (row_props, last_y, row_height,row_rotation, row_counts) =>{ + if (row_props.info_type === 'date'){ + if(row_rotation === 0) { + return date_coords[1] + row_height*(row_counts.date - 1) + } else { + return date_coords[1]; + } + } else { + return (row_counts.row_count > 0)? last_y + row_height : last_y; + } + } + row_x_calc = (row_props, last_x, row_height,row_rotation, row_counts) => { + if(row_props.info_type === 'date'){ + if(row_rotation === 3){ + return date_coords[0] + row_height*(row_counts.date - 1) + } else { + return date_coords[0]; + } + } else { + return last_x; + } + } + } + var row_heights ={ time: {major: major_height, minor: minor_height}, date: {major: date_height_major, minor: date_height_minor} @@ -421,12 +441,11 @@ function init_style() { fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), y_init: y_start[version], row_height: (row_props)=> - row_heights[row_props.info_type][row_props.major_minor][version] - , - row_y: (row_props, last_y, row_height) => row_y_calc(row_props,last_y,row_height), - row_x: (row_props, last_x) => row_x_calc(row_props, last_x), + row_heights[row_props.info_type][row_props.major_minor][version], row_speed: (row_props) => row_props.info_type === 'date'? date_speed : time_speed, row_rotation: (row_props) => row_props.info_type === 'date'? date_rotation : 0, + row_y: (row_props, last_y, row_height, row_rotation, row_counts) => row_y_calc(row_props,last_y,row_height, row_rotation, row_counts), + row_x: (row_props, last_x, row_height, row_rotation, row_counts) => row_x_calc(row_props, last_x, row_height,row_rotation, row_counts), scrollIn: (d,txt)=> { if (d.getRowContext().info_type === 'date') { date_scroll_in(d,txt); @@ -451,15 +470,38 @@ function init_display() { init_style(); row_displays = []; var y = style.y_init; + var x = DISPLAY_TEXT_X; var date_rows = date_formatter.formatDate(new Date()); + var major_count = 0; + var minor_count = 0; + var date_count = 0; + var prev_height = 0; for (var i=0;i Date: Thu, 29 Sep 2022 19:05:44 +0100 Subject: [PATCH 18/69] Sliding Clock: Refactored the styling system --- apps/slidingtext/slidingtext.dtfmt.js | 20 +- apps/slidingtext/slidingtext.js | 476 +++++++++------------ apps/slidingtext/slidingtext.locale.de.js | 33 +- apps/slidingtext/slidingtext.locale.en.js | 74 +++- apps/slidingtext/slidingtext.locale.en2.js | 123 +++++- apps/slidingtext/slidingtext.locale.en3.js | 42 -- apps/slidingtext/slidingtext.locale.es.js | 32 +- apps/slidingtext/slidingtext.locale.fr.js | 34 +- apps/slidingtext/slidingtext.locale.jp.js | 33 +- 9 files changed, 452 insertions(+), 415 deletions(-) delete mode 100644 apps/slidingtext/slidingtext.locale.en3.js diff --git a/apps/slidingtext/slidingtext.dtfmt.js b/apps/slidingtext/slidingtext.dtfmt.js index 352804c28..582d5f1a5 100644 --- a/apps/slidingtext/slidingtext.dtfmt.js +++ b/apps/slidingtext/slidingtext.dtfmt.js @@ -9,16 +9,16 @@ class DateFormatter { name(){ return "no name";} shortName(){ return "no short name" } formatDate(date){ return ["no","date","defined"]; } - rowProperties(row_no){ - return (row_no === 0)? - {major_minor: 'major', info_type: 'time'} : - {major_minor: 'minor', info_type: 'time'}; - } - formatProperties(){ - return { - default_style: {} - }; - } + + /** + * returns a map of the different row types + */ + defaultRowTypes(){} + + /** + * returns a list of row definitions (1 definition can cover m + */ + defaultRowDefs(){ return [];} } module.exports = DateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index b53372fdd..7b68f3bae 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -126,12 +126,8 @@ class ShiftText { this.timeoutId = null; } getRowContext(){ return this.row_context;} - setColor(color){ - this.color = color; - } - setBgColor(bg_color){ - this.bg_color = bg_color; - } + setColor(color){ this.color = color; } + setBgColor(bg_color){ this.bg_color = bg_color; } reset(hard_reset) { //console.log("reset"); this.hide(); @@ -284,238 +280,189 @@ class ShiftText { function bangleVersion(){ return (g.getHeight()>200)? 1 : 2; } -var DISPLAY_TEXT_X = 20; -var style; +const row_types = { + large: { + color: 'major', + speed: 'medium', + angle_to_horizontal: 0, + scroll_off: ['left'], + scroll_in: ['right'], + size: 'large' + }, + medium: { + color: 'minor', + speed: 'slow', + angle_to_horizontal: 0, + scroll_off: ['left'], + scroll_in: ['right'], + size: 'medium' + }, + small: { + color: 'minor', + speed: 'superslow', + angle_to_horizontal: 0, + scroll_off: ['left'], + scroll_in: ['right'], + size: 'small' + } +}; -/** - * time_speed: 'slow' - * date_speed: 'superslow', - * date_placing: 'right.up', - * time_slide: 'random', - * minor_text_size: 'small', - * major_text_size: 'large', - * date_text_size: 'vsmall' - * y_init: 'middle' - */ -var style_settings; -function init_style() { - if(style_settings == null){ - var formatProps = date_formatter.formatProperties(); - if(formatProps != null){ - style_settings = formatProps.default_style; - } +var row_defs; +var row_displays; +function init_display() { + row_type_overide = date_formatter.defaultRowTypes(); + mergeMaps(row_types,row_type_overide); + console.log("row_types:"+ JSON.stringify(row_types) ); + if(row_defs == null){ + row_defs = date_formatter.defaultRowDefs(); } - if(style_settings == null){ - style_settings = {}; - } - var time_speed = 10; - var time_speed_setting = style_settings.time_speed; - if(time_speed_setting === 'slow') { - time_speed = 5; - } else if(time_speed_setting === 'superslow'){ - time_speed = 1; - } - var date_speed = 10; - var date_speed_setting = style_settings.date_speed; - if(date_speed_setting === 'slow'){ - date_speed = 5; - } else if(date_speed_setting === 'superslow'){ - date_speed = 1; - } - - var row_y_calc = (row_props, last_y, row_height, row_rotation, row_counts) => (row_counts.row_count > 0)? last_y + row_height : last_y; - var row_x_calc = (row_props, last_x, row_height, row_rotation, row_counts) => last_x; - - var date_coords; - var date_rotation = 0; - var date_scroll_in = (d,txt)=> d.scrollInFromRight(txt); - var date_scroll_out = (d)=> d.scrollOffToLeft(); - var date_placing_setting = style_settings.date_placing; - if(date_placing_setting === 'right.up') { - date_coords = [155, 160]; - date_rotation = 3; - date_scroll_in = (d,txt)=> d.scrollInFromBottom(txt); - date_scroll_out = (d) => d.scrollOffToBottom(); - } else if(date_placing_setting === 'left.up'){ - date_coords = [5, 160]; - date_rotation = 3; - date_scroll_in = (d,txt)=> d.scrollInFromBottom(txt); - date_scroll_out = (d) => d.scrollOffToBottom(); - } - - var time_scroll_in = (d,txt)=> d.scrollInFromRight(txt); - var time_scroll_out = (d)=> d.scrollOffToLeft(); - var time_slide_setting = style_settings.time_slide; - if(time_slide_setting === `in_left_out_left`) { - time_scroll_in = (d, txt) => d.scrollInFromLeft(txt); - } else if(time_slide_setting === `in_right_out_right`){ - time_scroll_out = (d)=> d.scrollOffToRight(); - } else if(time_slide_setting === 'random') { - time_scroll_in = (d,txt)=> { - var random = Math.random(); - if (random < 0.33) { - d.scrollInFromRight(txt); - } else if (random < 0.66) { - d.scrollInFromLeft(txt); - } else { - d.scrollInFromBottom(txt); - } - } - time_scroll_out = (d)=> { - var random = Math.random(); - if (random < 0.33) { - d.scrollOffToRight(); - } else if (random < 0.66) { - d.scrollOffToLeft(); - } else { - d.scrollOffToBottom(); - } - } - } - - var major_height=[40,30]; - var minor_height=[35,25]; - var minor_size_setting = style_settings.minor_text_size; - if(minor_size_setting === 'small') { - minor_height = [25,20]; - } else if(minor_size_setting === 'vsmall'){ - minor_height = [20,15]; - } - var major_size_setting = style_settings.major_text_size; - if(major_size_setting === 'large') { - major_height = [60,50]; - } - var date_size_setting = style_settings.date_text_size; - var date_height_major = major_height; - var date_height_minor = minor_height; - - if(date_size_setting === 'small'){ - date_height_major = [25,14]; - date_height_minor = [25,14] - } else if(date_size_setting === 'vsmall'){ - date_height_major = [20,10]; - date_height_minor = [20,10]; - } - - if(date_coords != null){ - row_y_calc = (row_props, last_y, row_height,row_rotation, row_counts) =>{ - if (row_props.info_type === 'date'){ - if(row_rotation === 0) { - return date_coords[1] + row_height*(row_counts.date - 1) - } else { - return date_coords[1]; - } - } else { - return (row_counts.row_count > 0)? last_y + row_height : last_y; - } - } - row_x_calc = (row_props, last_x, row_height,row_rotation, row_counts) => { - if(row_props.info_type === 'date'){ - if(row_rotation === 3){ - return date_coords[0] + row_height*(row_counts.date - 1) - } else { - return date_coords[0]; - } - } else { - return last_x; - } - } - } - - var row_heights ={ - time: {major: major_height, minor: minor_height}, - date: {major: date_height_major, minor: date_height_minor} - }; - - var y_start = [34,24]; - var y_init_setting = style_settings.y_init; - if(y_init_setting === 'q1'){ - y_start = [60,50]; - } else if(y_init_setting === 'middle'){ - y_start = [80,70]; - } - - var version = bangleVersion() - 1; - style = { - fg_color: (row_props)=>(row_props.major_minor === 'major')? main_color(): other_color(), - y_init: y_start[version], - row_height: (row_props)=> - row_heights[row_props.info_type][row_props.major_minor][version], - row_speed: (row_props) => row_props.info_type === 'date'? date_speed : time_speed, - row_rotation: (row_props) => row_props.info_type === 'date'? date_rotation : 0, - row_y: (row_props, last_y, row_height, row_rotation, row_counts) => row_y_calc(row_props,last_y,row_height, row_rotation, row_counts), - row_x: (row_props, last_x, row_height, row_rotation, row_counts) => row_x_calc(row_props, last_x, row_height,row_rotation, row_counts), - scrollIn: (d,txt)=> { - if (d.getRowContext().info_type === 'date') { - date_scroll_in(d,txt); - } else { - time_scroll_in(d,txt); - } - }, - scrollOff: (d)=> { - if (d.getRowContext().info_type === 'date') { - date_scroll_out(d) - } else { - time_scroll_out(d) - } + row_displays = []; + for(var i=0; i< row_defs.length; i++){ + var row_def = row_defs[i]; + console.log("row_def:"+ JSON.stringify(row_def) ); + var row_type_val = row_types[row_def.type]; + console.log("row_type_val:"+ JSON.stringify(row_type_val) ); + var row_type = create_row_type(row_type_val,row_def); + // we now create the number of row specified of that type + for(var j=0; j { + if(map1.hasOwnProperty(key)){ + map1[key] = mergeObjects(map1[key], map2[key]); + } else { + map1[key] = map2[key]; + } + }); +} -function init_display() { - init_style(); - row_displays = []; - var y = style.y_init; - var x = DISPLAY_TEXT_X; - var date_rows = date_formatter.formatDate(new Date()); - var major_count = 0; - var minor_count = 0; - var date_count = 0; - var prev_height = 0; - for (var i=0;i result[key] = (obj2.hasOwnProperty(key))? obj2[key] : obj1[key]); + return result; +} - var row_height = style.row_height(row_props); - var row_speed = style.row_speed(row_props); - var row_rotation = style.row_rotation(row_props); - x = style.row_x(row_props,x, prev_height,row_rotation, row_counts); - y = style.row_y(row_props,y,prev_height,row_rotation, row_counts); - console.log("row info[" + i + "]=" + row_props.major_minor + " x= " + x + " y=" + y + " height=" + row_height); - row_displays.push( - new ShiftText(x, - y, - '', - "Vector", - row_height, - row_speed, - row_speed, - 10, - style.fg_color(row_props), - bg_color(), - row_props, - row_rotation - ) - ); - prev_height = row_height; + + +const heights = { + vsmall: [15,10], + small: [25,20], + medium: [40,25], + large: [50,40], + vlarge: [60,50] +}; + +const rotations = { + 0: 0, + 90: 3, + 180: 2, + 270: 1, +}; + +const speeds = { + fast: 20, + medium: 10, + slow: 5, + vslow: 2, + superslow: 1 +}; + +const Y_RESERVED = 20; +/** + * takes a json definition for a row type and creates an instance + */ +function create_row_type(row_type, row_def){ + console.log("create_row_def:"+ JSON.stringify(row_def) ); + console.log("create_row_type:"+ JSON.stringify(row_type) ); + var speed = speeds[row_type.speed]; + console.log("speed:"+ speed ); + var rotation = rotations[row_type.angle_to_horizontal]; + console.log("rotation:"+ rotation); + var height = heights[row_type.size]; + console.log("height:"+ height); + var scroll_ins = []; + if(row_type.scroll_in.includes('left')){ + console.log("scroll in left"); + scroll_ins.push((row_display,txt)=> row_display.scrollInFromLeft(txt)); } + if(row_type.scroll_in.includes('right')){ + console.log("scroll in right"); + scroll_ins.push((row_display,txt)=> row_display.scrollInFromRight(txt)); + } + if(row_type.scroll_in.includes('up')){ + console.log("scroll in up"); + scroll_ins.push((row_display,txt)=> row_display.scrollInFromBottom(txt)); + } + var scroll_in; + if(scroll_ins.length === 0){ + scroll_in = (row_display,txt)=> row_display.scrollInFromLeft(txt); + } else if(scroll_ins.length === 1){ + scroll_in = scroll_ins[0]; + } else { + scroll_in = (row_display,txt) =>{ + var idx = (Math.random() * scroll_ins.length) | 0; + return scroll_ins[idx](row_display,txt); + }; + } + + var scroll_offs = []; + if(row_type.scroll_off.includes('left')){ + console.log("scroll off left"); + scroll_offs.push((row_display)=> row_display.scrollOffToLeft()); + } + if(row_type.scroll_off.includes('right')){ + console.log("scroll off right"); + scroll_offs.push((row_display)=> row_display.scrollOffToRight()); + } + if(row_type.scroll_off.includes('down')){ + console.log("scroll off down"); + scroll_offs.push((row_display)=> row_display.scrollOffToBottom()); + } + var scroll_off; + if(scroll_offs.size === 0){ + scroll_off = (row_display)=> row_display.scrollOffToLeft(); + } else if(scroll_offs.size === 1){ + scroll_off = scroll_offs[0]; + } else { + scroll_off = (row_display) =>{ + var idx = (Math.random() * scroll_off.size) | 0; + return scroll_offs[idx](row_display); + }; + } + var version = bangleVersion() - 1; + console.log("color:" + row_type.color); + return { + row_speed: speed, + row_height: height[version], + row_rotation: rotation, + x: (row_no) => row_def.init_coords[0] * g.getWidth() + row_def.row_direction[0] * height[version] * row_no, + y: (row_no) => Y_RESERVED + row_def.init_coords[1] * (g.getHeight() - Y_RESERVED) + row_def.row_direction[1] * height[version] * row_no, + scroll_in: scroll_in, + scroll_off: scroll_off, + fg_color: () => (row_type.color === 'major')? main_color(): other_color() + }; +} + +function create_row(row_type, row_no){ + return new ShiftText(row_type.x(row_no), + row_type.y(row_no), + '', + "Vector", + row_type.row_height, + row_type.row_speed, + row_type.row_speed, + 10, + row_type.fg_color(), + bg_color(), + row_type, + row_type.row_rotation + ); } @@ -533,7 +480,7 @@ function nextColorTheme(){ function updateColorScheme(){ var bgcolor = bg_color(); for(var i=0; i 30){ @@ -28,7 +111,7 @@ class EnglishTraditionalDateFormatter extends DateFormatter { var hours = hoursToText(hourOfDay); // Deal with the special times first if(mins === 0){ - return [hours,"", "O'","CLOCK"]; + return [hours,"", "O'","CLOCK", date_txt]; } else if(mins === 30){ return ["","HALF", "PAST", "", hours]; } else if(mins === 15){ @@ -48,24 +131,22 @@ class EnglishTraditionalDateFormatter extends DateFormatter { from_to = "PAST"; mins_txt = numberToText(mins_value); } + if(mins_txt[1] != '') { - return ['', mins_txt[0], mins_txt[1], from_to, hours]; + return ['', mins_txt[0], mins_txt[1], from_to, hours, date_txt]; } else { if(mins_value % 5 == 0) { - return ['', mins_txt[0], from_to, '', hours]; + return ['', mins_txt[0], from_to, '', hours, date_txt]; } else if(mins_value == 1){ - return ['', mins_txt[0], 'MINUTE', from_to, hours]; + return ['', mins_txt[0], 'MINUTE', from_to, hours, date_txt]; } else { - return ['', mins_txt[0], 'MINUTES', from_to, hours]; + return ['', mins_txt[0], 'MINUTES', from_to, hours, date_txt]; } } } - rowProperties(row_no) { - return this.row_props[row_no]; - } - formatProperties(){ - return this.format_props; - } + defaultRowTypes(){ return this.row_types;} + + defaultRowDefs(){ return this.row_defs; } } module.exports = EnglishTraditionalDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.en3.js b/apps/slidingtext/slidingtext.locale.en3.js deleted file mode 100644 index 24feee7a8..000000000 --- a/apps/slidingtext/slidingtext.locale.en3.js +++ /dev/null @@ -1,42 +0,0 @@ -var DateFormatter = require("slidingtext.dtfmt.js"); -const hoursToText = require("slidingtext.utils.en.js").hoursToText; -const numberToText = require("slidingtext.utils.en.js").numberToText; -const monthToText = require("slidingtext.utils.en.js").monthToText; - -class EnglishDateFormatter extends DateFormatter { - constructor() { - super(); - this.row_props = [ - {major_minor: 'major', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'date'}, - ]; - this.format_props = { - default_style: { - y_init: 'q1', - time_slide: 'in_right_out_right', - time_speed: 'slow', - date_speed: 'superslow', - date_placing: 'left.up', - date_text_size: 'vsmall' - } - } - } - name(){return "English";} - shortName(){return "en3"} - formatDate(date){ - var hours_txt = hoursToText(date.getHours()); - var mins_txt = numberToText(date.getMinutes()); - var date_txt = monthToText(date.getMonth()) + ' ' + numberToText(date.getDate()); - return [hours_txt,mins_txt[0],mins_txt[1],date_txt]; - } - rowProperties(row_no) { - return this.row_props[row_no]; - } - formatProperties(){ - return this.format_props; - } -} - -module.exports = EnglishDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.es.js b/apps/slidingtext/slidingtext.locale.es.js index 8aec466cf..6354021fa 100644 --- a/apps/slidingtext/slidingtext.locale.es.js +++ b/apps/slidingtext/slidingtext.locale.es.js @@ -47,16 +47,21 @@ function spanishMinsToText(mins){ class SpanishDateFormatter extends DateFormatter { constructor() { super(); - this.row_props = [ - {major_minor: 'major', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - ]; - this.format_props = { - default_style: { + this.row_types = { }; + this.row_defs = [ + { + type: 'large', + init_coords: [0.05,0.1], + row_direction: [0.0,1.0], + rows: 1 + }, + { + type: 'medium', + init_coords: [0.05,0.4], + row_direction: [0.0,1.0], + rows: 3 } - } + ]; } name(){return "Spanish";} shortName(){return "es"} @@ -85,12 +90,9 @@ class SpanishDateFormatter extends DateFormatter { return [hours, "Y", mins_txt[0],mins_txt[1]]; } } - rowProperties(row_no) { - return this.row_props[row_no]; - } - formatProperties(){ - return this.format_props; - } + defaultRowTypes(){ return this.row_types;} + + defaultRowDefs(){ return this.row_defs; } } module.exports = SpanishDateFormatter; diff --git a/apps/slidingtext/slidingtext.locale.fr.js b/apps/slidingtext/slidingtext.locale.fr.js index 165b64045..7bc6b2ce8 100644 --- a/apps/slidingtext/slidingtext.locale.fr.js +++ b/apps/slidingtext/slidingtext.locale.fr.js @@ -31,18 +31,21 @@ function frenchHeures(hours){ class FrenchDateFormatter extends DateFormatter { constructor() { super(); - this.row_props = [ - {major_minor: 'major', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - ]; - this.format_props = { - default_style: { - y_init: 'q1', - minor_text_size: 'small' + this.row_types = { }; + this.row_defs = [ + { + type: 'large', + init_coords: [0.05,0.1], + row_direction: [0.0,1.0], + rows: 1 + }, + { + type: 'medium', + init_coords: [0.05,0.4], + row_direction: [0.0,1.0], + rows: 3 } - } + ]; } name(){return "French";} shortName(){return "fr"} @@ -80,12 +83,9 @@ class FrenchDateFormatter extends DateFormatter { return [ hours, heures , mins_txt ]; } } - rowProperties(row_no) { - return this.row_props[row_no]; - } - formatProperties(){ - return this.format_props; - } + defaultRowTypes(){ return this.row_types;} + + defaultRowDefs(){ return this.row_defs; } } module.exports = FrenchDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.jp.js b/apps/slidingtext/slidingtext.locale.jp.js index 692e64886..8432c1a16 100644 --- a/apps/slidingtext/slidingtext.locale.jp.js +++ b/apps/slidingtext/slidingtext.locale.jp.js @@ -61,17 +61,21 @@ function japaneseMinsToText(mins){ class JapaneseDateFormatter extends DateFormatter { constructor() { super(); - this.row_props = [ - {major_minor: 'major', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - {major_minor: 'minor', info_type: 'time'}, - ]; - this.format_props = { - default_style: { - y_init: 'q1' + this.row_types = { }; + this.row_defs = [ + { + type: 'large', + init_coords: [0.05,0.1], + row_direction: [0.0,1.0], + rows: 1 + }, + { + type: 'medium', + init_coords: [0.05,0.4], + row_direction: [0.0,1.0], + rows: 3 } - } + ]; } name(){return "Japanese (Romanji)";} shortName(){return "jp"} @@ -80,12 +84,9 @@ class JapaneseDateFormatter extends DateFormatter { var mins_txt = japaneseMinsToText(date.getMinutes()); return [hours_txt,"JI", mins_txt[0], mins_txt[1] ]; } - rowProperties(row_no) { - return this.row_props[row_no]; - } - formatProperties(){ - return this.format_props; - } + defaultRowTypes(){ return this.row_types;} + + defaultRowDefs(){ return this.row_defs; } } module.exports = JapaneseDateFormatter; \ No newline at end of file From bcce8fdf89aede9584a4a8fe2c80fb9f432f6297 Mon Sep 17 00:00:00 2001 From: lu713691 Date: Thu, 29 Sep 2022 19:10:26 +0100 Subject: [PATCH 19/69] Sliding Clock: Refactored the styling system --- apps/slidingtext/slidingtext.js | 55 +++++++++++++-------------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 7b68f3bae..8f8e1b711 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -308,21 +308,23 @@ const row_types = { } }; -var row_defs; -var row_displays; -function init_display() { +let row_displays; +function init_display(settings) { + if(row_displays != null){ + return; + } + if(settings == null){ + settings = {}; + } row_type_overide = date_formatter.defaultRowTypes(); mergeMaps(row_types,row_type_overide); - console.log("row_types:"+ JSON.stringify(row_types) ); - if(row_defs == null){ - row_defs = date_formatter.defaultRowDefs(); - } + mergeMaps(row_types,settings.row_types); + var row_defs = (settings.row_defs != null)? settings.row_defs : date_formatter.defaultRowDefs(); row_displays = []; + for(var i=0; i< row_defs.length; i++){ var row_def = row_defs[i]; - console.log("row_def:"+ JSON.stringify(row_def) ); var row_type_val = row_types[row_def.type]; - console.log("row_type_val:"+ JSON.stringify(row_type_val) ); var row_type = create_row_type(row_type_val,row_def); // we now create the number of row specified of that type for(var j=0; j { if(map1.hasOwnProperty(key)){ map1[key] = mergeObjects(map1[key], map2[key]); @@ -378,25 +383,17 @@ const Y_RESERVED = 20; * takes a json definition for a row type and creates an instance */ function create_row_type(row_type, row_def){ - console.log("create_row_def:"+ JSON.stringify(row_def) ); - console.log("create_row_type:"+ JSON.stringify(row_type) ); var speed = speeds[row_type.speed]; - console.log("speed:"+ speed ); var rotation = rotations[row_type.angle_to_horizontal]; - console.log("rotation:"+ rotation); var height = heights[row_type.size]; - console.log("height:"+ height); var scroll_ins = []; if(row_type.scroll_in.includes('left')){ - console.log("scroll in left"); scroll_ins.push((row_display,txt)=> row_display.scrollInFromLeft(txt)); } if(row_type.scroll_in.includes('right')){ - console.log("scroll in right"); scroll_ins.push((row_display,txt)=> row_display.scrollInFromRight(txt)); } if(row_type.scroll_in.includes('up')){ - console.log("scroll in up"); scroll_ins.push((row_display,txt)=> row_display.scrollInFromBottom(txt)); } var scroll_in; @@ -413,15 +410,12 @@ function create_row_type(row_type, row_def){ var scroll_offs = []; if(row_type.scroll_off.includes('left')){ - console.log("scroll off left"); scroll_offs.push((row_display)=> row_display.scrollOffToLeft()); } if(row_type.scroll_off.includes('right')){ - console.log("scroll off right"); scroll_offs.push((row_display)=> row_display.scrollOffToRight()); } if(row_type.scroll_off.includes('down')){ - console.log("scroll off down"); scroll_offs.push((row_display)=> row_display.scrollOffToBottom()); } var scroll_off; @@ -436,7 +430,6 @@ function create_row_type(row_type, row_def){ }; } var version = bangleVersion() - 1; - console.log("color:" + row_type.color); return { row_speed: speed, row_height: height[version], @@ -515,9 +508,7 @@ function reset_clock(hard_reset){ } } else { // do a hard reset and clear everything out - for (var i = 0; i < row_displays.length; i++) { - row_displays[i].reset(hard_reset); - } + row_displays.forEach(row_display => row_display.reset(hard_reset)); } reset_commands(); } @@ -711,16 +702,13 @@ function load_settings() { var setScheme = false; try { var settings = require("Storage").readJSON(PREFERENCE_FILE); - settings = { date_format: 'en' }; + settings = { date_format: 'dgt'}; if (settings != null) { - console.log("loaded:" + JSON.stringify(settings)); + console.log("loaded settings:" + JSON.stringify(settings)); if (settings.date_format != null) { set_dateformat(settings.date_format); - //if (settings.style_settings != null) { - // style_settings = settings.style_settings; - //} - init_display(); + init_display(settings); } if (settings.color_scheme != null) { set_colorscheme(settings.color_scheme); @@ -739,14 +727,13 @@ function load_settings() { console.log("failed to load settings:" + e); } // just set up as default + console.log("set_schema:" + setScheme); if (!setScheme) { set_dateformat("default"); init_display(); updateColorScheme(); } - if(row_displays == null){ - init_display(); - } + init_display(); enable_live_controls = true; } From fd636155e8e260e01971da358593a91cab2934df Mon Sep 17 00:00:00 2001 From: lu713691 Date: Thu, 29 Sep 2022 23:37:42 +0100 Subject: [PATCH 20/69] Sliding Clock: Updated settings for new styling --- apps/slidingtext/slidingtext.dtfmt.js | 2 - apps/slidingtext/slidingtext.js | 68 +++++++---------- apps/slidingtext/slidingtext.locale.de.js | 2 - apps/slidingtext/slidingtext.locale.en.js | 2 - apps/slidingtext/slidingtext.locale.en2.js | 2 - apps/slidingtext/slidingtext.locale.es.js | 2 - apps/slidingtext/slidingtext.locale.fr.js | 2 - apps/slidingtext/slidingtext.locale.jp.js | 8 +- apps/slidingtext/slidingtext.settings.js | 88 ++++++++++++++++++++-- 9 files changed, 109 insertions(+), 67 deletions(-) diff --git a/apps/slidingtext/slidingtext.dtfmt.js b/apps/slidingtext/slidingtext.dtfmt.js index 582d5f1a5..2543610c1 100644 --- a/apps/slidingtext/slidingtext.dtfmt.js +++ b/apps/slidingtext/slidingtext.dtfmt.js @@ -6,8 +6,6 @@ class DateFormatter { * and the date formatDate method will return the time formated * to the lines of text on the screen */ - name(){ return "no name";} - shortName(){ return "no short name" } formatDate(date){ return ["no","date","defined"]; } /** diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 8f8e1b711..8ad045335 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -309,7 +309,7 @@ const row_types = { }; let row_displays; -function init_display(settings) { +function initDisplay(settings) { if(row_displays != null){ return; } @@ -466,8 +466,8 @@ function nextColorTheme(){ } //console.log("changing color scheme to " + color_schemes[color_scheme_index].name) updateColorScheme(); - reset_clock(true); - draw_clock(); + resetClock(true); + drawClock(); } function updateColorScheme(){ @@ -480,7 +480,7 @@ function updateColorScheme(){ 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); updateColorScheme(); @@ -525,7 +525,7 @@ function display_time(date){ } } -function draw_clock(){ +function drawClock(){ var date = new Date(); // 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 * set the color scheme to named value */ -function set_colorscheme(colorscheme_name){ +function setColorScheme(colorscheme_name){ console.log("setting color scheme:" + colorscheme_name); for (var i=0; i < color_schemes.length; i++) { if(color_schemes[i].name === colorscheme_name){ @@ -651,8 +651,6 @@ class DigitDateTimeFormatter { } ]; } - name(){return "Digital";} - shortName(){return "digit";} format00(num){ var value = (num | 0); @@ -678,7 +676,7 @@ class DigitDateTimeFormatter { } var date_formatter; -function set_dateformat(shortname){ +function setDateformat(shortname){ console.log("setting date format:" + shortname); try { 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 */ -function load_settings() { - var setScheme = false; +function loadSettings() { try { var settings = require("Storage").readJSON(PREFERENCE_FILE); - settings = { date_format: 'dgt'}; if (settings != null) { console.log("loaded settings:" + JSON.stringify(settings)); if (settings.date_format != null) { - set_dateformat(settings.date_format); - init_display(settings); + var format = setting.date_format; + if(settings.date_formatter != null) + format = settings.date_format; + + setDateformat(format); + initDisplay(settings); } if (settings.color_scheme != null) { - set_colorscheme(settings.color_scheme); - setScheme = true; + setColorScheme(settings.color_scheme); } if (settings.enable_live_controls == null) { settings.enable_live_controls = (bangleVersion() <= 1); @@ -727,36 +726,21 @@ function load_settings() { console.log("failed to load settings:" + e); } // just set up as default - console.log("set_schema:" + setScheme); - if (!setScheme) { - set_dateformat("default"); - init_display(); + if (row_displays === undefined) { + setDateformat("default"); + initDisplay(); updateColorScheme(); } - init_display(); 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() { console.log("button3pressed enable_live_controls=" + enable_live_controls); if (enable_live_controls) { nextColorTheme(); - reset_clock(true); - draw_clock(); - save_settings(); + resetClock(true); + drawClock(); } } @@ -776,7 +760,7 @@ function startTimers(){ var nextMinuteStart = 60 - secs; //console.log("scheduling clock draw in " + nextMinuteStart + " seconds"); setTimeout(scheduleDrawClock,nextMinuteStart * 1000); - draw_clock(); + drawClock(); } /** @@ -799,13 +783,13 @@ function scheduleDrawClock(){ console.log("draw clock callback - skipped redraw"); } else { console.log("draw clock callback"); - draw_clock(); + drawClock(); } }, 60 * 1000 ); if (shouldRedraw()) { - draw_clock(); + drawClock(); } else { console.log("scheduleDrawClock - skipped redraw"); } @@ -818,17 +802,17 @@ Bangle.on('lcdPower', (on) => { if (on) { console.log("lcdPower: on"); Bangle.drawWidgets(); - reset_clock(false); + resetClock(false); startTimers(); } else { console.log("lcdPower: off"); - reset_clock(false); + resetClock(false); clearTimers(); } }); g.clear(); -load_settings(); +loadSettings(); // Show launcher when button pressed Bangle.setUI("clockupdown", d=>{ if (d>0) button3pressed(); diff --git a/apps/slidingtext/slidingtext.locale.de.js b/apps/slidingtext/slidingtext.locale.de.js index 29b70889e..abd917ec0 100644 --- a/apps/slidingtext/slidingtext.locale.de.js +++ b/apps/slidingtext/slidingtext.locale.de.js @@ -86,8 +86,6 @@ class GermanDateFormatter extends DateFormatter { } ]; } - name(){return "German";} - shortName(){return "de"} formatDate(date){ var mins = date.getMinutes(); var hourOfDay = date.getHours(); diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index bb1636d16..4a05f4f96 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -60,8 +60,6 @@ class EnglishDateFormatter extends DateFormatter { } ]; } - name(){return "English";} - shortName(){return "en"} formatDate(date){ var hours_txt = hoursToText(date.getHours()); var mins_txt = numberToText(date.getMinutes()); diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index 92134bef2..3b64df6a5 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -99,8 +99,6 @@ class EnglishTraditionalDateFormatter extends DateFormatter { }, ]; } - name(){return "English (Traditional)";} - shortName(){return "en2"} formatDate(date){ var date_txt = Locale.dow(date,1).toUpperCase() + " " + numberToText(date.getDate()); var mins = date.getMinutes(); diff --git a/apps/slidingtext/slidingtext.locale.es.js b/apps/slidingtext/slidingtext.locale.es.js index 6354021fa..e320f6e8e 100644 --- a/apps/slidingtext/slidingtext.locale.es.js +++ b/apps/slidingtext/slidingtext.locale.es.js @@ -63,8 +63,6 @@ class SpanishDateFormatter extends DateFormatter { } ]; } - name(){return "Spanish";} - shortName(){return "es"} formatDate(date){ var mins = date.getMinutes(); var hourOfDay = date.getHours(); diff --git a/apps/slidingtext/slidingtext.locale.fr.js b/apps/slidingtext/slidingtext.locale.fr.js index 7bc6b2ce8..c0098bb55 100644 --- a/apps/slidingtext/slidingtext.locale.fr.js +++ b/apps/slidingtext/slidingtext.locale.fr.js @@ -47,8 +47,6 @@ class FrenchDateFormatter extends DateFormatter { } ]; } - name(){return "French";} - shortName(){return "fr"} formatDate(date){ var hours = frenchHoursToText(date.getHours()); var heures = frenchHeures(date.getHours()); diff --git a/apps/slidingtext/slidingtext.locale.jp.js b/apps/slidingtext/slidingtext.locale.jp.js index 8432c1a16..164f285fd 100644 --- a/apps/slidingtext/slidingtext.locale.jp.js +++ b/apps/slidingtext/slidingtext.locale.jp.js @@ -28,16 +28,16 @@ const japaneseMinuteStr = [ ["", "PUN"], function japaneseHoursToText(hours){ hours = hours % 12; - if(hours == 0){ + if(hours === 0){ hours = 12; } return japaneseHourStr[hours]; } function japaneseMinsToText(mins){ - if(mins == 0){ + if(mins === 0){ return ["",""]; - } else if(mins == 30) + } else if(mins === 30) return ["HAN",""]; else { var units = mins % 10; @@ -77,8 +77,6 @@ class JapaneseDateFormatter extends DateFormatter { } ]; } - name(){return "Japanese (Romanji)";} - shortName(){return "jp"} formatDate(date){ var hours_txt = japaneseHoursToText(date.getHours()); var mins_txt = japaneseMinsToText(date.getMinutes()); diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index d87dfce26..caced6868 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -8,13 +8,85 @@ } console.log("loaded:" + JSON.stringify(settings)); var locale_mappings = { - 'English Time':'en', - 'English Date + Time': 'en3', - 'English Time (Trad)': 'en2', - 'French': 'fr', - 'German': 'de', - 'Spanish': 'es', - 'Japanese': 'jp', + 'en' : { date_format: 'en' }, + 'en patchwork': { + date_format: 'en patchwork', + date_formatter: 'en', + row_types: { + large:{ + 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); @@ -50,7 +122,7 @@ "" : { "title" : "Sliding Text" }, "< Back" : () => back(), "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": { value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true), format: v => v ? "On" : "Off", From 6b05043b01c7acfa366e238cf2b54be51c7b75bb Mon Sep 17 00:00:00 2001 From: lu713691 Date: Fri, 30 Sep 2022 00:05:46 +0100 Subject: [PATCH 21/69] Sliding Clock: updated version number --- apps/slidingtext/ChangeLog | 1 + apps/slidingtext/metadata.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/slidingtext/ChangeLog b/apps/slidingtext/ChangeLog index 1b45c36cb..5c4a9fa75 100644 --- a/apps/slidingtext/ChangeLog +++ b/apps/slidingtext/ChangeLog @@ -8,3 +8,4 @@ 0.08: Removed "wake LCD on face-up"-feature: A watch-face should not set things like "wake LCD on face-up". 0.09: Added button control toggle and other live controls to new settings screen. 0.10: Tell clock widgets to hide. +0.11: Added new styling and watch faces diff --git a/apps/slidingtext/metadata.json b/apps/slidingtext/metadata.json index 7b5378f0e..e94fd4a48 100644 --- a/apps/slidingtext/metadata.json +++ b/apps/slidingtext/metadata.json @@ -1,7 +1,7 @@ { "id": "slidingtext", "name": "Sliding Clock", - "version": "0.10", + "version": "0.11", "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", From bd2fad743dd0c5835dbf69ab52031dbe7c2b985f Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Fri, 30 Sep 2022 01:34:40 +0100 Subject: [PATCH 22/69] sliding text clock: BUGFIX -settings not writing styling info --- apps/slidingtext/slidingtext.js | 33 +++++++++--------------- apps/slidingtext/slidingtext.settings.js | 33 +++++++++++++++++------- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 8ad045335..024842c8f 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -699,28 +699,19 @@ const PREFERENCE_FILE = "slidingtext.settings.json"; function loadSettings() { try { var settings = require("Storage").readJSON(PREFERENCE_FILE); - if (settings != null) { - console.log("loaded settings:" + JSON.stringify(settings)); - - if (settings.date_format != null) { - var format = setting.date_format; - if(settings.date_formatter != null) - format = settings.date_format; - - setDateformat(format); - initDisplay(settings); - } - if (settings.color_scheme != null) { - setColorScheme(settings.color_scheme); - } - 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"); - enable_live_controls = (bangleVersion() <= 1); + if (settings == null || settings.date_formatter == null) { + settings.date_formatter = "en" } + console.log("loaded settings:" + JSON.stringify(settings)); + setDateformat(settings.date_formatter); + initDisplay(settings); + if (settings.color_scheme != null) { + setColorScheme(settings.color_scheme); + } + if (settings.enable_live_controls == null) { + settings.enable_live_controls = (bangleVersion() <= 1); + } + enable_live_controls = settings.enable_live_controls; console.log("enable_live_controls=" + enable_live_controls); } catch (e) { console.log("failed to load settings:" + e); diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index caced6868..f9b425649 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -8,9 +8,8 @@ } console.log("loaded:" + JSON.stringify(settings)); var locale_mappings = { - 'en' : { date_format: 'en' }, + 'en' : { date_formatter: 'en' }, 'en patchwork': { - date_format: 'en patchwork', date_formatter: 'en', row_types: { large:{ @@ -38,9 +37,8 @@ } ] }, - 'en2': { date_format: 'en2' }, - 'en2 patchwork': { date_format: 'en2 patchwork', - date_formatter: 'en2', + 'en2': { date_formatter: 'en2' }, + 'en2 patchwork': { date_formatter: 'en2', row_types: { vsmall: { scroll_off: ['right'], @@ -83,15 +81,32 @@ }, ] }, - 'French': { date_format:'fr'}, - 'German': { date_format: 'de'}, - 'Spanish': { date_format: 'es'}, - 'Japanese': { date_format: 'jp'}, + 'French': { date_formatter:'fr'}, + 'German': { date_formatter: 'de'}, + 'Spanish': { date_formatter: 'es'}, + 'Japanese': { date_formatter: 'jp'}, } var locales = Object.keys(locale_mappings); function writeSettings() { + if(settings.date_format == null){ + settings.date_format = 'en'; + } + var styling = locale_mappings[settings.date_format]; + settings.remove("date_formatter"); + if(styling.date_formatter != null) + settings.date_formatter = styling.date_formatter; + + settings.remove("row_types"); + if(styling.row_types != null) + settings.row_types = styling.row_types; + + settings.remove("row_defs"); + if(styling.row_defs != null) + settings.row_defs = styling.row_defs; + console.log("saving:" + JSON.stringify(settings)); + require('Storage').writeJSON(PREFERENCE_FILE, settings); } From 267709fc7b90e089238f4f4e9561699326b3504c Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Fri, 30 Sep 2022 09:13:58 +0100 Subject: [PATCH 23/69] sliding text clock: BUGFIX - settings unresponsive --- apps/slidingtext/slidingtext.js | 12 +++++++++--- apps/slidingtext/slidingtext.locale.en.js | 2 +- apps/slidingtext/slidingtext.settings.js | 12 ++++++------ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 024842c8f..d0e8771b4 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -698,9 +698,15 @@ const PREFERENCE_FILE = "slidingtext.settings.json"; */ function loadSettings() { try { - var settings = require("Storage").readJSON(PREFERENCE_FILE); - if (settings == null || settings.date_formatter == null) { - settings.date_formatter = "en" + var settings = Object.assign({}, + require('Storage').readJSON(PREFERENCE_FILE, true) || {}); + if (settings.date_formatter == null) { + // for backward compatibility + if(settings.date_format != null){ + settings.date_formatter = settings.date_format; + } else { + settings.date_formatter = "en"; + } } console.log("loaded settings:" + JSON.stringify(settings)); setDateformat(settings.date_formatter); diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 4a05f4f96..9ba5150e2 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -37,7 +37,7 @@ class EnglishDateFormatter extends DateFormatter { constructor() { super(); this.row_types = { - small: {size: 'vsmall'} + small: {size: 'small'} }; this.row_defs = [ { diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index f9b425649..92b16ac1d 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -9,7 +9,7 @@ console.log("loaded:" + JSON.stringify(settings)); var locale_mappings = { 'en' : { date_formatter: 'en' }, - 'en patchwork': { + 'en p': { date_formatter: 'en', row_types: { large:{ @@ -38,7 +38,7 @@ ] }, 'en2': { date_formatter: 'en2' }, - 'en2 patchwork': { date_formatter: 'en2', + 'en2 p': { date_formatter: 'en2', row_types: { vsmall: { scroll_off: ['right'], @@ -81,10 +81,10 @@ }, ] }, - 'French': { date_formatter:'fr'}, - 'German': { date_formatter: 'de'}, - 'Spanish': { date_formatter: 'es'}, - 'Japanese': { date_formatter: 'jp'}, + 'fr': { date_formatter:'fr'}, + 'de': { date_formatter: 'de'}, + 'es': { date_formatter: 'es'}, + 'jp': { date_formatter: 'jp'}, } var locales = Object.keys(locale_mappings); From 9e1ca8c88e8973096f879db853aeae283d95915e Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Fri, 30 Sep 2022 09:33:01 +0100 Subject: [PATCH 24/69] sliding text clock: BUGFIX - settings still not working --- apps/slidingtext/slidingtext.settings.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 92b16ac1d..59ab9774b 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -93,15 +93,14 @@ settings.date_format = 'en'; } var styling = locale_mappings[settings.date_format]; - settings.remove("date_formatter"); if(styling.date_formatter != null) settings.date_formatter = styling.date_formatter; - settings.remove("row_types"); + settings.row_types = {}; if(styling.row_types != null) settings.row_types = styling.row_types; - settings.remove("row_defs"); + settings.row_defs = {}; if(styling.row_defs != null) settings.row_defs = styling.row_defs; From dbda3be396f07741f4ad14f6c72ac0c92abc1448 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Fri, 30 Sep 2022 10:37:29 +0100 Subject: [PATCH 25/69] sliding text clock: BUGFIX - clock is blancj after 2nd settings update --- apps/slidingtext/slidingtext.js | 10 ++++++---- apps/slidingtext/slidingtext.settings.js | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index d0e8771b4..f7597ba6f 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -316,12 +316,13 @@ function initDisplay(settings) { if(settings == null){ settings = {}; } - row_type_overide = date_formatter.defaultRowTypes(); + var row_type_overide = date_formatter.defaultRowTypes(); mergeMaps(row_types,row_type_overide); mergeMaps(row_types,settings.row_types); - var row_defs = (settings.row_defs != null)? settings.row_defs : date_formatter.defaultRowDefs(); - row_displays = []; + var row_defs = (settings.row_defs != null && !settings.row_defs.isEmpty())? + settings.row_defs : date_formatter.defaultRowDefs(); + row_displays = []; for(var i=0; i< row_defs.length; i++){ var row_def = row_defs[i]; var row_type_val = row_types[row_def.type]; @@ -356,8 +357,9 @@ function mergeObjects(obj1, obj2){ const heights = { - vsmall: [15,10], + vsmall: [20,15], small: [25,20], + msmall: [30,22], medium: [40,25], large: [50,40], vlarge: [60,50] diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 59ab9774b..4a26a6218 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -14,6 +14,9 @@ row_types: { large:{ angle_to_horizontal: 90 + }, + medium: { + size: 'msmall' } }, row_defs: [ @@ -100,7 +103,7 @@ if(styling.row_types != null) settings.row_types = styling.row_types; - settings.row_defs = {}; + settings.delete("row_defs"); if(styling.row_defs != null) settings.row_defs = styling.row_defs; From cc551b64964cd13a561481a3c717d6ff4ecc0f59 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Fri, 30 Sep 2022 10:46:32 +0100 Subject: [PATCH 26/69] sliding text clock: BUGFIX - settings not working map remove not supported --- apps/slidingtext/slidingtext.settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 4a26a6218..9ed16150d 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -103,7 +103,7 @@ if(styling.row_types != null) settings.row_types = styling.row_types; - settings.delete("row_defs"); + settings.row_defs = []; if(styling.row_defs != null) settings.row_defs = styling.row_defs; From 643b0b92dc8d4e40e266aabfafceeb57925d64d5 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Fri, 30 Sep 2022 11:55:02 +0100 Subject: [PATCH 27/69] sliding text clock: BUGFIX - rows defintions skipping out on unsupported isEmpty call --- apps/slidingtext/slidingtext.js | 16 +++++++++------- apps/slidingtext/slidingtext.locale.en.js | 2 +- apps/slidingtext/slidingtext.settings.js | 5 +++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index f7597ba6f..c6a8f0813 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -319,8 +319,9 @@ function initDisplay(settings) { var row_type_overide = date_formatter.defaultRowTypes(); mergeMaps(row_types,row_type_overide); mergeMaps(row_types,settings.row_types); - var row_defs = (settings.row_defs != null && !settings.row_defs.isEmpty())? + var row_defs = (settings.row_defs != null && settings.row_defs.length > 0)? settings.row_defs : date_formatter.defaultRowDefs(); + console.log("row_defs " + JSON.stringify(row_defs)); row_displays = []; for(var i=0; i< row_defs.length; i++){ @@ -357,7 +358,8 @@ function mergeObjects(obj1, obj2){ const heights = { - vsmall: [20,15], + vvsmall: [20,15], + vsmall: [23,18], small: [25,20], msmall: [30,22], medium: [40,25], @@ -421,13 +423,13 @@ function create_row_type(row_type, row_def){ scroll_offs.push((row_display)=> row_display.scrollOffToBottom()); } var scroll_off; - if(scroll_offs.size === 0){ + if(scroll_offs.length === 0){ scroll_off = (row_display)=> row_display.scrollOffToLeft(); - } else if(scroll_offs.size === 1){ + } else if(scroll_offs.length === 1){ scroll_off = scroll_offs[0]; } else { scroll_off = (row_display) =>{ - var idx = (Math.random() * scroll_off.size) | 0; + var idx = (Math.random() * scroll_off.length) | 0; return scroll_offs[idx](row_display); }; } @@ -714,10 +716,10 @@ function loadSettings() { setDateformat(settings.date_formatter); initDisplay(settings); if (settings.color_scheme != null) { - setColorScheme(settings.color_scheme); + setColorScheme(settings.color_scheme); } if (settings.enable_live_controls == null) { - settings.enable_live_controls = (bangleVersion() <= 1); + settings.enable_live_controls = (bangleVersion() <= 1); } enable_live_controls = settings.enable_live_controls; console.log("enable_live_controls=" + enable_live_controls); diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 9ba5150e2..4a05f4f96 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -37,7 +37,7 @@ class EnglishDateFormatter extends DateFormatter { constructor() { super(); this.row_types = { - small: {size: 'small'} + small: {size: 'vsmall'} }; this.row_defs = [ { diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 9ed16150d..f9f4ee730 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -13,7 +13,9 @@ date_formatter: 'en', row_types: { large:{ - angle_to_horizontal: 90 + angle_to_horizontal: 90, + scroll_off: ['down'], + scroll_in: ['up'], }, medium: { size: 'msmall' @@ -49,7 +51,6 @@ angle_to_horizontal: 0 }, large: { - size: 'vlarge', angle_to_horizontal: 90, speed: 'slow', color: 'major', From bc407c57e7030e50539b6f63d532c27fd9efd402 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Fri, 30 Sep 2022 14:07:43 +0100 Subject: [PATCH 28/69] sliding text clock: Updated the colour schemes to make blue and black more interesting --- apps/slidingtext/slidingtext.js | 61 +++++----------------- apps/slidingtext/slidingtext.locale.en2.js | 14 ++--- apps/slidingtext/slidingtext.settings.js | 1 + 3 files changed, 21 insertions(+), 55 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index c6a8f0813..1e271d2b1 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -14,7 +14,7 @@ const color_schemes = [ { name: "black", background : [0.0,0.0,0.0], - main_bar: [1.0,1.0,1.0], + main_bar: [1.0,0.0,0.0], other_bars: [0.9,0.9,0.9], }, { @@ -37,8 +37,8 @@ const color_schemes = [ }, { name: "blue", - background : [0.4,0.7,1.0], - main_bar: [1.0,1.0,1.0], + background : [0.1,0.2,1.0], + main_bar: [1.0,1.0,0.0], other_bars: [0.9,0.9,0.9] } ]; @@ -66,17 +66,12 @@ let command_stack_high_priority = []; let command_stack_low_priority = []; function next_command(){ - command = command_stack_high_priority.pop(); + var command = command_stack_high_priority.pop(); if(command == null){ - //console.log("Low priority command"); command = command_stack_low_priority.pop(); - } else { - //console.log("High priority command"); } if(command != null){ command.call(); - } else { - //console.log("no command"); } } @@ -129,7 +124,6 @@ class ShiftText { setColor(color){ this.color = color; } setBgColor(bg_color){ this.bg_color = bg_color; } reset(hard_reset) { - //console.log("reset"); this.hide(); this.x = this.init_x; this.y = this.init_y; @@ -162,14 +156,12 @@ class ShiftText { this.x = x; this.y = y; this.txt = txt; - //console.log("setTextPosition: (" + x + "," + y + ") " + txt); this.show(); } setTextXPosition(txt,x){ this.hide(); this.x = x; this.txt = txt; - //console.log("setTextXPosition: (" + x + ") " + txt); this.show(); } setTextYPosition(txt,y){ @@ -181,7 +173,6 @@ class ShiftText { moveTo(new_x,new_y){ this.tgt_x = new_x; this.tgt_y = new_y; - //console.log("moveTo: (" + this.tgt_x + "," + this.tgt_y + ") "); this._doMove(); } moveToX(new_x){ @@ -197,14 +188,12 @@ class ShiftText { to_y = this.init_y; this.setTextPosition(txt, this.init_x, g.getHeight() + 2*this.font_size); - //console.log("scrollInFromBottom y:" + this.y + "->" + to_y + " -> " + txt) this.moveTo(this.init_x,to_y); } scrollInFromLeft(txt,to_x){ if(to_x == null) to_x = this.init_x; - //console.log("scrollInFromLeft x:" + this.x + "->" + to_x + " -> " + txt) this.setTextPosition(txt, -txt.length * this.font_size - this.font_size, this.init_y); this.moveTo(to_x,this.init_y); } @@ -212,20 +201,16 @@ class ShiftText { if(to_x == null) to_x = this.init_x; - //console.log("scrollInFromRight x:" + this.x + "->" + to_x + " -> " + txt) this.setTextPosition(txt, g.getWidth() + this.font_size, this.init_y); this.moveTo(to_x,this.init_y); } scrollOffToLeft(){ - //console.log("scrollOffToLeft"); this.moveTo(-this.txt.length * this.font_size, this.init_y); } scrollOffToRight(){ - //console.log("scrollOffToRight"); this.moveTo(g.getWidth() + this.font_size, this.init_y); } scrollOffToBottom(){ - //console.log("scrollOffToBottom"); this.moveTo(this.init_x,g.getHeight() + this.font_size); } onFinished(finished_callback){ @@ -270,7 +255,6 @@ class ShiftText { if(!finished){ this.timeoutId = setTimeout(this._doMove.bind(this), this.freq_millis); } else if(this.finished_callback != null){ - //console.log("finished - calling:" + this.finished_callback); this.finished_callback.call(); this.finished_callback = null; } @@ -321,18 +305,15 @@ function initDisplay(settings) { mergeMaps(row_types,settings.row_types); var row_defs = (settings.row_defs != null && settings.row_defs.length > 0)? settings.row_defs : date_formatter.defaultRowDefs(); - console.log("row_defs " + JSON.stringify(row_defs)); row_displays = []; - for(var i=0; i< row_defs.length; i++){ - var row_def = row_defs[i]; - var row_type_val = row_types[row_def.type]; - var row_type = create_row_type(row_type_val,row_def); - // we now create the number of row specified of that type + row_defs.forEach(row_def =>{ + var row_type = create_row_type(row_types[row_def.type],row_def); + // we now create the number of rows specified of that type for(var j=0; j= color_schemes.length){ color_scheme_index = 0; } - //console.log("changing color scheme to " + color_schemes[color_scheme_index].name) updateColorScheme(); resetClock(true); drawClock(); @@ -551,55 +531,43 @@ function drawClock(){ for (var i = 0; i < rows.length; i++) { display = row_displays[i]; var txt = rows[i]; - //console.log(i + "->" + txt); display_row(display,txt); } // If the dateformatter has not returned enough // rows then treat the remaining rows as empty for (var j = i; j < row_displays.length; j++) { display = row_displays[j]; - //console.log(i + "->''(empty)"); display_row(display,''); } next_command(); - //console.log(date); } function display_row(display,txt){ if(display == null) { - console.log("no display for text:" + txt); return; } if(display.txt == null || display.txt === ''){ if(txt !== '') { - command_stack_high_priority.unshift( - function () { - //console.log("move in new:" + txt); + command_stack_high_priority.unshift(()=>{ display.onFinished(next_command); display.getRowContext().scroll_in(display,txt); } ); } } else if(txt !== display.txt && display.txt != null){ - command_stack_high_priority.push( - function(){ - //console.log("move out:" + txt); + command_stack_high_priority.push(()=>{ display.onFinished(next_command); display.getRowContext().scroll_off(display); } ); - command_stack_low_priority.push( - function(){ - //console.log("move in:" + txt); + command_stack_low_priority.push(() => { display.onFinished(next_command); display.getRowContext().scroll_in(display,txt); } ); } else { - command_stack_high_priority.push( - function(){ - //console.log("move in2:" + txt); + command_stack_high_priority.push(() => { display.setTextPosition(txt,display.init_x, display.init_y); next_command(); } @@ -735,9 +703,7 @@ function loadSettings() { enable_live_controls = true; } - function button3pressed() { - console.log("button3pressed enable_live_controls=" + enable_live_controls); if (enable_live_controls) { nextColorTheme(); resetClock(true); @@ -759,7 +725,6 @@ function startTimers(){ var date = new Date(); var secs = date.getSeconds(); var nextMinuteStart = 60 - secs; - //console.log("scheduling clock draw in " + nextMinuteStart + " seconds"); setTimeout(scheduleDrawClock,nextMinuteStart * 1000); drawClock(); } diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index 3b64df6a5..2baf1de68 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -109,13 +109,13 @@ class EnglishTraditionalDateFormatter extends DateFormatter { var hours = hoursToText(hourOfDay); // Deal with the special times first if(mins === 0){ - return [hours,"", "O'","CLOCK", date_txt]; + return [hours,"", "O'","CLOCK","", date_txt]; } else if(mins === 30){ - return ["","HALF", "PAST", "", hours]; + return ["","HALF", "PAST", "", hours, date_txt]; } else if(mins === 15){ - return ["","QUARTER", "PAST", "", hours]; + return ["","QUARTER", "PAST", "", hours, date_txt]; } else if(mins === 45) { - return ["", "QUARTER", "TO", "", hours]; + return ["", "QUARTER", "TO", "", hours, date_txt]; } var mins_txt; var from_to; @@ -130,12 +130,12 @@ class EnglishTraditionalDateFormatter extends DateFormatter { mins_txt = numberToText(mins_value); } - if(mins_txt[1] != '') { + if(mins_txt[1] !== '') { return ['', mins_txt[0], mins_txt[1], from_to, hours, date_txt]; } else { - if(mins_value % 5 == 0) { + if(mins_value % 5 === 0) { return ['', mins_txt[0], from_to, '', hours, date_txt]; - } else if(mins_value == 1){ + } else if(mins_value === 1){ return ['', mins_txt[0], 'MINUTE', from_to, hours, date_txt]; } else { return ['', mins_txt[0], 'MINUTES', from_to, hours, date_txt]; diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index f9f4ee730..d405afbc6 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -13,6 +13,7 @@ date_formatter: 'en', row_types: { large:{ + size: 'medium', angle_to_horizontal: 90, scroll_off: ['down'], scroll_in: ['up'], From d71bf76dd1ec2cc7344e5b88e9a107964d671dc4 Mon Sep 17 00:00:00 2001 From: awkirk Date: Sun, 2 Oct 2022 01:05:17 +0100 Subject: [PATCH 29/69] SLiding Clock: Added digital clock --- apps/slidingtext/slidingtext.js | 14 ++++-- apps/slidingtext/slidingtext.locale.dgt.js | 57 ++++++++++++++++++++++ apps/slidingtext/slidingtext.locale.en2.js | 3 +- apps/slidingtext/slidingtext.settings.js | 5 +- 4 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 apps/slidingtext/slidingtext.locale.dgt.js diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 1e271d2b1..5169a0b53 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -339,11 +339,12 @@ function mergeObjects(obj1, obj2){ const heights = { - vvsmall: [20,15], - vsmall: [22,17], + vvsmall: [15,13], + vsmall: [20,15], small: [25,20], msmall: [30,22], medium: [40,25], + mlarge: [45,35], large: [50,40], vlarge: [60,50] }; @@ -511,6 +512,7 @@ function display_time(date){ function drawClock(){ var date = new Date(); + date.setHours(12); // we don't want the time to be displayed // and then immediately be trigger another time @@ -652,8 +654,12 @@ function setDateformat(shortname){ console.log("setting date format:" + shortname); try { if (date_formatter == null || date_formatter.shortName() !== shortname) { - var date_formatter_class = require("slidingtext.locale." + shortname + ".js"); - date_formatter = new date_formatter_class(); + if(shortname === "default"){ + date_formatter = new DigitDateTimeFormatter(); + } else { + var date_formatter_class = require("slidingtext.locale." + shortname + ".js"); + date_formatter = new date_formatter_class(); + } } } catch(e){ console.log("Failed to load " + shortname); diff --git a/apps/slidingtext/slidingtext.locale.dgt.js b/apps/slidingtext/slidingtext.locale.dgt.js new file mode 100644 index 000000000..6c2c56f92 --- /dev/null +++ b/apps/slidingtext/slidingtext.locale.dgt.js @@ -0,0 +1,57 @@ +const Locale = require('locale'); + +class DigitDateTimeFormatter { + constructor() { + this.row_types = { + large: { + scroll_off: ['down'], + scroll_in: ['up'], + size: 'large', + speed: 'vslow' + }, + small: { + angle_to_horizontal: 0, + scroll_off: ['left'], + scroll_in: ['right'], + } + }; + + this.row_defs = [ + { + type: 'large', + row_direction: [0.8,0.0], + init_coords: [0.1,0.35], + rows: 5 + }, + { + type: 'small', + row_direction: [0.0,1.0], + init_coords: [0.1,0.05], + rows: 1 + } + ]; + } + + format00(num){ + var value = (num | 0); + if(value > 99 || value < 0) + throw "must be between in range 0-99"; + if(value < 10) + return "0" + value.toString(); + else + return value.toString(); + } + + formatDate(now){ + var hours = now.getHours() ; + var time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); + var date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); + return [time_txt[0], time_txt[1],time_txt[2], time_txt[3],time_txt[4],date_txt]; + } + + defaultRowTypes(){ return this.row_types; } + + defaultRowDefs() { return this.row_defs; } +} + +module.exports = DigitDateTimeFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index 2baf1de68..f3d5ad5a3 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -56,7 +56,7 @@ class EnglishTraditionalDateFormatter extends DateFormatter { speed: 'superslow', scroll_off: ['down'], scroll_in: ['up'], - size: 'vsmall', + size: 'vvsmall', angle_to_horizontal: 90 }, small: { @@ -69,6 +69,7 @@ class EnglishTraditionalDateFormatter extends DateFormatter { color: 'major', scroll_off: ['left'], scroll_in: ['left'], + size: 'mlarge', angle_to_horizontal: 0 } }; diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index d405afbc6..d8562ccb0 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -13,7 +13,7 @@ date_formatter: 'en', row_types: { large:{ - size: 'medium', + size: 'mlarge', angle_to_horizontal: 90, scroll_off: ['down'], scroll_in: ['up'], @@ -25,7 +25,7 @@ row_defs: [ { type: 'large', - init_coords: [0.05,0.95], + init_coords: [0.05,0.99], row_direction: [1.0,0.0], rows: 1 }, @@ -90,6 +90,7 @@ 'de': { date_formatter: 'de'}, 'es': { date_formatter: 'es'}, 'jp': { date_formatter: 'jp'}, + 'dgt': { date_formatter: 'dgt'}, } var locales = Object.keys(locale_mappings); From 91a917630834dafa31333495cad50377c94cf99b Mon Sep 17 00:00:00 2001 From: awkirk Date: Sun, 2 Oct 2022 01:07:05 +0100 Subject: [PATCH 30/69] SLiding Clock: Added digital clock --- apps/slidingtext/slidingtext.js | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 5169a0b53..1f0a2d0d6 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -512,7 +512,6 @@ function display_time(date){ function drawClock(){ var date = new Date(); - date.setHours(12); // we don't want the time to be displayed // and then immediately be trigger another time From b698c60a417f5333e785eeb018e338c7524b8474 Mon Sep 17 00:00:00 2001 From: awkirk Date: Sun, 2 Oct 2022 01:26:11 +0100 Subject: [PATCH 31/69] SLiding Clock: BUGFIX - didn't change metadata for digital face --- apps/slidingtext/metadata.json | 1 + apps/slidingtext/slidingtext.settings.js | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/slidingtext/metadata.json b/apps/slidingtext/metadata.json index e94fd4a48..8d52d6723 100644 --- a/apps/slidingtext/metadata.json +++ b/apps/slidingtext/metadata.json @@ -20,6 +20,7 @@ {"name":"slidingtext.locale.fr.js","url":"slidingtext.locale.fr.js"}, {"name":"slidingtext.locale.jp.js","url":"slidingtext.locale.jp.js"}, {"name":"slidingtext.locale.de.js","url":"slidingtext.locale.de.js"}, + {"name":"slidingtext.locale.dgt.js","url":"slidingtext.locale.dgt.js"}, {"name":"slidingtext.dtfmt.js","url":"slidingtext.dtfmt.js"} ], "data": [{"name": "slidingtext.settings.json"}] diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index d8562ccb0..7057845ab 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -19,7 +19,9 @@ scroll_in: ['up'], }, medium: { - size: 'msmall' + size: 'msmall', + scroll_off: ['right'], + scroll_in: ['right'], } }, row_defs: [ @@ -31,13 +33,13 @@ }, { type: 'medium', - init_coords: [0.3,0.1], + init_coords: [0.29,0.1], row_direction: [0.0,1.0], rows: 2 }, { type: 'small', - init_coords: [0.3,0.9], + init_coords: [0.29,0.9], row_direction: [0.0,1.0], rows: 1 } @@ -74,7 +76,7 @@ }, { type: 'large', - init_coords: [0.7,0.9], + init_coords: [0.7,0.99], row_direction: [0.0,1.0], rows: 1 }, From 08715650e3726faf356a2cb317e70a0e7e9457cd Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sun, 2 Oct 2022 20:45:30 +0100 Subject: [PATCH 32/69] Sliding Clock: Adding aligment to row definitions. --- apps/slidingtext/slidingtext.js | 27 ++++++++++--- apps/slidingtext/slidingtext.locale.dgt.js | 14 +++++-- apps/slidingtext/slidingtext.locale.en.js | 31 --------------- apps/slidingtext/slidingtext.locale.en2.js | 45 ---------------------- apps/slidingtext/slidingtext.settings.js | 10 +++-- 5 files changed, 39 insertions(+), 88 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 1f0a2d0d6..56511ba5b 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -365,6 +365,7 @@ const speeds = { }; const Y_RESERVED = 20; +const SPACES = ' '; /** * takes a json definition for a row type and creates an instance */ @@ -415,6 +416,21 @@ function create_row_type(row_type, row_def){ return scroll_offs[idx](row_display); }; } + + var text_formatter = (txt)=>txt; + if(row_def.hasOwnProperty("alignment")){ + var alignment = row_def.alignment; + if(alignment.startsWith("centre")){ + const padding = parseInt(alignment.split("-")[1]); + if(padding > 0){ + text_formatter = (txt) => { + const front_spaces = (padding - txt.length)/2 | 0; + return front_spaces > 0? SPACES.substring(0,front_spaces + 1) + txt : txt; + }; + } + } + } + var version = bangleVersion() - 1; return { row_speed: speed, @@ -424,7 +440,8 @@ function create_row_type(row_type, row_def){ y: (row_no) => Y_RESERVED + row_def.init_coords[1] * (g.getHeight() - Y_RESERVED) + row_def.row_direction[1] * height[version] * row_no, scroll_in: scroll_in, scroll_off: scroll_off, - fg_color: () => (row_type.color === 'major')? main_color(): other_color() + fg_color: () => (row_type.color === 'major')? main_color(): other_color(), + row_text_formatter : text_formatter }; } @@ -531,7 +548,7 @@ function drawClock(){ var display; for (var i = 0; i < rows.length; i++) { display = row_displays[i]; - var txt = rows[i]; + var txt = display.getRowContext().row_text_formatter(rows[i]); display_row(display,txt); } // If the dateformatter has not returned enough @@ -605,7 +622,7 @@ class DigitDateTimeFormatter { angle_to_horizontal: 90, scroll_off: ['down'], scroll_in: ['up'], - size: 'vsmall' + size: 'vvsmall' } }; @@ -613,13 +630,13 @@ class DigitDateTimeFormatter { { type: 'large', row_direction: [0.0,1.0], - init_coords: [0.15,0.4], + init_coords: [0.1,0.35], rows: 1 }, { type: 'small', row_direction: [1.0,0], - init_coords: [0.9,0.95], + init_coords: [0.85,0.99], rows: 2 } ]; diff --git a/apps/slidingtext/slidingtext.locale.dgt.js b/apps/slidingtext/slidingtext.locale.dgt.js index 6c2c56f92..c68a04a57 100644 --- a/apps/slidingtext/slidingtext.locale.dgt.js +++ b/apps/slidingtext/slidingtext.locale.dgt.js @@ -7,7 +7,7 @@ class DigitDateTimeFormatter { scroll_off: ['down'], scroll_in: ['up'], size: 'large', - speed: 'vslow' + speed: 'slow' }, small: { angle_to_horizontal: 0, @@ -19,9 +19,15 @@ class DigitDateTimeFormatter { this.row_defs = [ { type: 'large', - row_direction: [0.8,0.0], - init_coords: [0.1,0.35], - rows: 5 + row_direction: [0.7,0.0], + init_coords: [0.15,0.35], + rows: 3 + }, + { + type: 'large', + row_direction: [0.7,0.0], + init_coords: [0.55,0.35], + rows: 2 }, { type: 'small', diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 4a05f4f96..5dbb4411c 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -2,37 +2,6 @@ var DateFormatter = require("slidingtext.dtfmt.js"); const hoursToText = require("slidingtext.utils.en.js").hoursToText; const numberToText = require("slidingtext.utils.en.js").numberToText; -/** - * Alternative layouts - * - { - row_types: { - large:{ - 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 - } - ] - } - */ class EnglishDateFormatter extends DateFormatter { constructor() { super(); diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index f3d5ad5a3..784a7a56a 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -2,51 +2,6 @@ var DateFormatter = require("slidingtext.dtfmt.js"); const hoursToText = require("slidingtext.utils.en.js").hoursToText; const numberToText = require("slidingtext.utils.en.js").numberToText; -/** - alternatives: - 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 - }, - ] - - */ class EnglishTraditionalDateFormatter extends DateFormatter { constructor() { super(); diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 7057845ab..64d44534b 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -29,17 +29,18 @@ type: 'large', init_coords: [0.05,0.99], row_direction: [1.0,0.0], + alignment: 'centre-6', rows: 1 }, { type: 'medium', - init_coords: [0.29,0.1], + init_coords: [0.27,0.1], row_direction: [0.0,1.0], rows: 2 }, { type: 'small', - init_coords: [0.29,0.9], + init_coords: [0.27,0.9], row_direction: [0.0,1.0], rows: 1 } @@ -64,8 +65,9 @@ row_defs: [ { type: 'large', - init_coords: [0.7,0.9], + init_coords: [0.7,0.99], row_direction: [0.0,1.0], + alignment: 'centre-6', rows: 1 }, { @@ -78,6 +80,7 @@ type: 'large', init_coords: [0.7,0.99], row_direction: [0.0,1.0], + alignment: 'centre-6', rows: 1 }, { @@ -93,6 +96,7 @@ 'es': { date_formatter: 'es'}, 'jp': { date_formatter: 'jp'}, 'dgt': { date_formatter: 'dgt'}, + 'dgt2': { date_formatter: 'default'}, } var locales = Object.keys(locale_mappings); From cbb045274ee5b538afaf5b8dea50ac668cfae66e Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sun, 2 Oct 2022 20:59:05 +0100 Subject: [PATCH 33/69] Sliding Clock: BUGFIX: en2 patchwork has to come in from left --- apps/slidingtext/slidingtext.settings.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 64d44534b..09604a9eb 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -50,8 +50,8 @@ 'en2 p': { date_formatter: 'en2', row_types: { vsmall: { - scroll_off: ['right'], - scroll_in: ['right'], + scroll_off: ['left'], + scroll_in: ['left'], angle_to_horizontal: 0 }, large: { From 482a1b96c122a28c7654ffcb573e4e3aa6e12ed0 Mon Sep 17 00:00:00 2001 From: lu713691 Date: Mon, 3 Oct 2022 12:35:01 +0100 Subject: [PATCH 34/69] Sliding Clock: BUGFIX: en2 patchwork has to come in furhter to the left --- apps/slidingtext/slidingtext.settings.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 09604a9eb..b839141ca 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -34,13 +34,13 @@ }, { type: 'medium', - init_coords: [0.27,0.1], + init_coords: [0.26,0.1], row_direction: [0.0,1.0], rows: 2 }, { type: 'small', - init_coords: [0.27,0.9], + init_coords: [0.26,0.9], row_direction: [0.0,1.0], rows: 1 } @@ -96,7 +96,6 @@ 'es': { date_formatter: 'es'}, 'jp': { date_formatter: 'jp'}, 'dgt': { date_formatter: 'dgt'}, - 'dgt2': { date_formatter: 'default'}, } var locales = Object.keys(locale_mappings); From 44cddcd963a12b7c165e1c966607b79480843b83 Mon Sep 17 00:00:00 2001 From: lu713691 Date: Tue, 4 Oct 2022 01:11:49 +0100 Subject: [PATCH 35/69] Sliding Clock: BUGFIX: scroll down/up re-appearing in the middle of no where --- apps/slidingtext/slidingtext.js | 4 ++-- apps/slidingtext/slidingtext.settings.js | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 56511ba5b..5c35489eb 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -187,7 +187,7 @@ class ShiftText { if(to_y == null) to_y = this.init_y; - this.setTextPosition(txt, this.init_x, g.getHeight() + 2*this.font_size); + this.setTextPosition(txt, this.init_x, g.getHeight()*2); this.moveTo(this.init_x,to_y); } scrollInFromLeft(txt,to_x){ @@ -211,7 +211,7 @@ class ShiftText { this.moveTo(g.getWidth() + this.font_size, this.init_y); } scrollOffToBottom(){ - this.moveTo(this.init_x,g.getHeight() + this.font_size); + this.moveTo(this.init_x,g.getHeight()*2); } onFinished(finished_callback){ this.finished_callback = finished_callback; diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index b839141ca..e54313095 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -17,6 +17,7 @@ angle_to_horizontal: 90, scroll_off: ['down'], scroll_in: ['up'], + speed: 'vslow' }, medium: { size: 'msmall', @@ -56,7 +57,7 @@ }, large: { angle_to_horizontal: 90, - speed: 'slow', + speed: 'vslow', color: 'major', scroll_off: ['down'], scroll_in: ['up'] @@ -65,7 +66,7 @@ row_defs: [ { type: 'large', - init_coords: [0.7,0.99], + init_coords: [0.8,0.99], row_direction: [0.0,1.0], alignment: 'centre-6', rows: 1 @@ -78,7 +79,7 @@ }, { type: 'large', - init_coords: [0.7,0.99], + init_coords: [0.8,0.99], row_direction: [0.0,1.0], alignment: 'centre-6', rows: 1 From 80ddde97188e93f6555c57f51d84fc7a63a2e1c6 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Wed, 5 Oct 2022 16:28:33 +0100 Subject: [PATCH 36/69] sliding clock: Added Date in text --- apps/slidingtext/slidingtext.js | 21 ++++++--- apps/slidingtext/slidingtext.locale.dgt.js | 8 ++-- apps/slidingtext/slidingtext.locale.en.js | 23 ++++++---- apps/slidingtext/slidingtext.locale.en2.js | 53 ++++++++-------------- apps/slidingtext/slidingtext.settings.js | 18 ++++++-- apps/slidingtext/slidingtext.utils.en.js | 47 +++++++++++++++---- 6 files changed, 103 insertions(+), 67 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 5c35489eb..ee25ebef3 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -339,6 +339,7 @@ function mergeObjects(obj1, obj2){ const heights = { + vvvsmall: [14,11], vvsmall: [15,13], vsmall: [20,15], small: [25,20], @@ -533,7 +534,7 @@ function drawClock(){ // we don't want the time to be displayed // and then immediately be trigger another time if(last_draw_time != null && - Date.now() - last_draw_time.getTime() < next_minute_boundary_secs * 1000 && + date.getTime() - last_draw_time.getTime() < next_minute_boundary_secs * 1000 && has_commands() ){ console.log("skipping draw clock"); return; @@ -544,17 +545,18 @@ function drawClock(){ date = display_time(date); console.log("draw_clock:" + last_draw_time.toISOString() + " display:" + date.toISOString()); - var rows = date_formatter.formatDate(date); - var display; + const rows = date_formatter.formatDate(date); for (var i = 0; i < rows.length; i++) { - display = row_displays[i]; - var txt = display.getRowContext().row_text_formatter(rows[i]); - display_row(display,txt); + const display = row_displays[i]; + if(display != null){ + const txt = display.getRowContext().row_text_formatter(rows[i]); + display_row(display,txt); + } } // If the dateformatter has not returned enough // rows then treat the remaining rows as empty for (var j = i; j < row_displays.length; j++) { - display = row_displays[j]; + const display = row_displays[j]; display_row(display,''); } next_command(); @@ -610,6 +612,11 @@ function setColorScheme(colorscheme_name){ } const Locale = require('locale'); + +/** + * Demonstration Date formatter so that we can see the + * clock working in the emulator + */ class DigitDateTimeFormatter { constructor() { this.row_types = { diff --git a/apps/slidingtext/slidingtext.locale.dgt.js b/apps/slidingtext/slidingtext.locale.dgt.js index c68a04a57..12dc7bf11 100644 --- a/apps/slidingtext/slidingtext.locale.dgt.js +++ b/apps/slidingtext/slidingtext.locale.dgt.js @@ -6,8 +6,8 @@ class DigitDateTimeFormatter { large: { scroll_off: ['down'], scroll_in: ['up'], - size: 'large', - speed: 'slow' + size: 'vlarge', + speed: 'medium' }, small: { angle_to_horizontal: 0, @@ -20,13 +20,13 @@ class DigitDateTimeFormatter { { type: 'large', row_direction: [0.7,0.0], - init_coords: [0.15,0.35], + init_coords: [0.1,0.35], rows: 3 }, { type: 'large', row_direction: [0.7,0.0], - init_coords: [0.55,0.35], + init_coords: [0.6,0.35], rows: 2 }, { diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 5dbb4411c..4f5d44ab1 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -1,39 +1,44 @@ var DateFormatter = require("slidingtext.dtfmt.js"); const hoursToText = require("slidingtext.utils.en.js").hoursToText; const numberToText = require("slidingtext.utils.en.js").numberToText; +const dayOfWeek = require("slidingtext.utils.en.js").dayOfWeek; +const numberToDayNumberText = require("slidingtext.utils.en.js").numberToDayNumberText; +const monthToText = require("slidingtext.utils.en.js").monthToText; class EnglishDateFormatter extends DateFormatter { constructor() { super(); this.row_types = { - small: {size: 'vsmall'} + small: {size: 'vvsmall'} }; this.row_defs = [ { type: 'large', - init_coords: [0.05,0.1], + init_coords: [0.05,0.07], row_direction: [0.0,1.0], rows: 1 }, { type: 'medium', - init_coords: [0.05,0.4], + init_coords: [0.05,0.31], row_direction: [0.0,1.0], rows: 2 }, { type: 'small', - init_coords: [0.05,0.9], + init_coords: [0.05,0.8], row_direction: [0.0,1.0], - rows: 1 + rows: 2 } ]; } formatDate(date){ - var hours_txt = hoursToText(date.getHours()); - var mins_txt = numberToText(date.getMinutes()); - var date_txt = Locale.dow(date,1).toUpperCase() + " " + numberToText(date.getDate()); - return [hours_txt,mins_txt[0],mins_txt[1],date_txt]; + const hours_txt = hoursToText(date.getHours()); + const mins_txt = numberToText(date.getMinutes()); + const day_of_week = dayOfWeek(date); + const date_txt = numberToDayNumberText(date.getDate()-1).join(' '); + const month = monthToText(date); + return [hours_txt,mins_txt[0],mins_txt[1],day_of_week,date_txt,month]; } defaultRowTypes(){ return this.row_types;} diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index 784a7a56a..da97597aa 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -1,4 +1,6 @@ -var DateFormatter = require("slidingtext.dtfmt.js"); +const DateFormatter = require("slidingtext.dtfmt.js"); +const dayOfWeekShort = require("slidingtext.utils.en.js").dayOfWeekShort; +const numberToDayNumberText = require("slidingtext.utils.en.js").numberToDayNumberText; const hoursToText = require("slidingtext.utils.en.js").hoursToText; const numberToText = require("slidingtext.utils.en.js").numberToText; @@ -6,26 +8,16 @@ class EnglishTraditionalDateFormatter extends DateFormatter { constructor() { super(); this.row_types = { - vsmall: { - color: 'minor', - speed: 'superslow', - scroll_off: ['down'], - scroll_in: ['up'], - size: 'vvsmall', - angle_to_horizontal: 90 - }, small: { speed: 'medium', - scroll_off: ['left'], - scroll_in: ['left'], + scroll_off: ['left','right'], + scroll_in: ['left','right'], }, large: { speed: 'medium', color: 'major', - scroll_off: ['left'], - scroll_in: ['left'], - size: 'mlarge', - angle_to_horizontal: 0 + scroll_off: ['left','right'], + scroll_in: ['left','right'] } }; this.row_defs = [ @@ -46,32 +38,27 @@ class EnglishTraditionalDateFormatter extends DateFormatter { init_coords: [0.05,0.75], row_direction: [0.0,1.0], rows: 1 - }, - { - type: 'vsmall', - init_coords: [0.9,0.9], - row_direction: [0.0,1.0], - rows: 1 - }, + } ]; } formatDate(date){ - var date_txt = Locale.dow(date,1).toUpperCase() + " " + numberToText(date.getDate()); - var mins = date.getMinutes(); + const day_of_week = dayOfWeekShort(date); + const date_txt = numberToDayNumberText(date.getDate()-1).join(' '); + const mins = date.getMinutes(); var hourOfDay = date.getHours(); if(mins > 30){ hourOfDay += 1; } - var hours = hoursToText(hourOfDay); + const hours = hoursToText(hourOfDay); // Deal with the special times first if(mins === 0){ - return [hours,"", "O'","CLOCK","", date_txt]; + return [hours,"", "O'","CLOCK","", day_of_week, date_txt]; } else if(mins === 30){ - return ["","HALF", "PAST", "", hours, date_txt]; + return ["","HALF", "PAST", "", hours, day_of_week, date_txt]; } else if(mins === 15){ - return ["","QUARTER", "PAST", "", hours, date_txt]; + return ["","QUARTER", "PAST", "", hours, day_of_week, date_txt]; } else if(mins === 45) { - return ["", "QUARTER", "TO", "", hours, date_txt]; + return ["", "QUARTER", "TO", "", hours, day_of_week, date_txt]; } var mins_txt; var from_to; @@ -87,14 +74,14 @@ class EnglishTraditionalDateFormatter extends DateFormatter { } if(mins_txt[1] !== '') { - return ['', mins_txt[0], mins_txt[1], from_to, hours, date_txt]; + return ['', mins_txt[0], mins_txt[1], from_to, hours, day_of_week, date_txt]; } else { if(mins_value % 5 === 0) { - return ['', mins_txt[0], from_to, '', hours, date_txt]; + return ['', mins_txt[0], from_to, '', hours, day_of_week, date_txt]; } else if(mins_value === 1){ - return ['', mins_txt[0], 'MINUTE', from_to, hours, date_txt]; + return ['', mins_txt[0], 'MINUTE', from_to, hours, day_of_week, date_txt]; } else { - return ['', mins_txt[0], 'MINUTES', from_to, hours, date_txt]; + return ['', mins_txt[0], 'MINUTES', from_to, hours, day_of_week, date_txt]; } } } diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index e54313095..f06896b19 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -23,6 +23,11 @@ size: 'msmall', scroll_off: ['right'], scroll_in: ['right'], + }, + small: { + size: 'vvsmall', + scroll_off: ['right'], + scroll_in: ['right'], } }, row_defs: [ @@ -41,9 +46,9 @@ }, { type: 'small', - init_coords: [0.26,0.9], + init_coords: [0.26,0.7], row_direction: [0.0,1.0], - rows: 1 + rows: 3 } ] }, @@ -51,9 +56,12 @@ 'en2 p': { date_formatter: 'en2', row_types: { vsmall: { + color: 'minor', + speed: 'superslow', + angle_to_horizontal: 0, scroll_off: ['left'], scroll_in: ['left'], - angle_to_horizontal: 0 + size: 'vsmall' }, large: { angle_to_horizontal: 90, @@ -73,7 +81,7 @@ }, { type: 'small', - init_coords: [0.05,0.35], + init_coords: [0.05,0.4], row_direction: [0.0,1.0], rows: 3 }, @@ -88,7 +96,7 @@ type: 'vsmall', init_coords: [0.05,0.1], row_direction: [0.0,1.0], - rows: 1 + rows: 2 }, ] }, diff --git a/apps/slidingtext/slidingtext.utils.en.js b/apps/slidingtext/slidingtext.utils.en.js index c3cead9b6..a66ae456c 100644 --- a/apps/slidingtext/slidingtext.utils.en.js +++ b/apps/slidingtext/slidingtext.utils.en.js @@ -3,15 +3,23 @@ const numberStr = ["ZERO","ONE", "TWO", "THREE", "FOUR", "FIVE", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN", "TWENTY"]; -const tensStr = ["ZERO", "TEN", "TWENTY", "THIRTY", "FOURTY", "FIFTY"]; +const tensStr = ["ZERO", "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY"]; +const dayNames = ["SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"]; const monthStr = [ - "JAN", "FEB", "MAR", "APR", "MAY", "JULY", - "AUG", "SEPT", "OCT", "NOV", "DEC" + "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JULY", + "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ] -const monthToText = (month)=>{ - return monthStr[month - 1]; -} +const dateNumberStr = ["ZEROTH", "FIRST", "SECOND", "THIRD", "FORTH", "FIFTH", + "SIXTH","SEVENTH","EIGHTH","NINTH","TENTH","ELEVENTH","TWELFTH","THIRTEENTH", + "FOURTEENTH", "FIFTEENTH", "SIXTEENTH", "SEVENTEENTH", "EIGHTEENTH", "NINETEENTH", + "TWENTIETH" +] + +const dayOfWeek = (date) => dayNames[date.getDay()]; +const dayOfWeekShort = (date) => dayNames[date.getDay()].substring(0,3); +const monthToText = (date)=>monthStr[date.getMonth()-1]; + const hoursToText = (hours)=>{ hours = hours % 12; if(hours === 0){ @@ -24,9 +32,9 @@ const numberToText = (value)=> { var word1 = ''; var word2 = ''; if(value > 20){ - var tens = (value / 10 | 0); + const tens = (value / 10 | 0); word1 = tensStr[tens]; - var remainder = value - tens * 10; + const remainder = value - tens * 10; if(remainder > 0){ word2 = numberStr[remainder]; } @@ -36,6 +44,27 @@ const numberToText = (value)=> { return [word1,word2]; } +const numberToDayNumberText = (value) => { + var word1 = ''; + var word2 = ''; + if(value === 30) { + word1 = "THIRTIETH"; + } else if(value > 20){ + const tens = (value / 10 | 0); + word1 = tensStr[tens]; + const remainder = value - tens * 10; + if(remainder > 0){ + word2 = dateNumberStr[remainder]; + } + } else if(value > 0) { + word1 = dateNumberStr[value]; + } + return [word1,word2]; +} + exports.monthToText = monthToText; exports.hoursToText = hoursToText; -exports.numberToText = numberToText; \ No newline at end of file +exports.numberToText = numberToText; +exports.numberToDayNumberText = numberToDayNumberText; +exports.dayOfWeek = dayOfWeek; +exports.dayOfWeekShort = dayOfWeekShort; \ No newline at end of file From 5be4a4b9294caeba39dc360330047c76ba9dd15e Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Wed, 5 Oct 2022 18:08:00 +0100 Subject: [PATCH 37/69] Sliding Clock: BUGFIX: entrance/exit of time on en2 p on wrong side --- apps/slidingtext/slidingtext.settings.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index e54313095..2a48c9b7b 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -55,6 +55,11 @@ scroll_in: ['left'], angle_to_horizontal: 0 }, + small: { + scroll_off: ['left'], + scroll_in: ['left'], + angle_to_horizontal: 0 + }, large: { angle_to_horizontal: 90, speed: 'vslow', From c098bcb88ffc1286c646093a3195686a7ecce068 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Wed, 5 Oct 2022 23:50:24 +0100 Subject: [PATCH 38/69] sliding clock: Bug fix day no incorrect --- apps/slidingtext/slidingtext.locale.en.js | 2 +- apps/slidingtext/slidingtext.locale.en2.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 4f5d44ab1..06bd10f90 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -36,7 +36,7 @@ class EnglishDateFormatter extends DateFormatter { const hours_txt = hoursToText(date.getHours()); const mins_txt = numberToText(date.getMinutes()); const day_of_week = dayOfWeek(date); - const date_txt = numberToDayNumberText(date.getDate()-1).join(' '); + const date_txt = numberToDayNumberText(date.getDate()).join(' '); const month = monthToText(date); return [hours_txt,mins_txt[0],mins_txt[1],day_of_week,date_txt,month]; } diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index da97597aa..3e06659a7 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -43,7 +43,7 @@ class EnglishTraditionalDateFormatter extends DateFormatter { } formatDate(date){ const day_of_week = dayOfWeekShort(date); - const date_txt = numberToDayNumberText(date.getDate()-1).join(' '); + const date_txt = numberToDayNumberText(date.getDate()).join(' '); const mins = date.getMinutes(); var hourOfDay = date.getHours(); if(mins > 30){ From ea411c1e56d7fe88479f7938317c372d4c57df9d Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Wed, 5 Oct 2022 23:53:08 +0100 Subject: [PATCH 39/69] sliding clock: BUGIX: hour text too large --- apps/slidingtext/slidingtext.settings.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index f06896b19..b2f38fed3 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -64,6 +64,7 @@ size: 'vsmall' }, large: { + size: 'mlarge', angle_to_horizontal: 90, speed: 'vslow', color: 'major', From 4dec4b78280b72a4d765cbdc615a47befa6a5096 Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Thu, 6 Oct 2022 06:40:47 +0100 Subject: [PATCH 40/69] sliding clock: BUGIX: en 2 p clash hour with minutes --- apps/slidingtext/slidingtext.settings.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index b2f38fed3..598873b3c 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -63,6 +63,10 @@ scroll_in: ['left'], size: 'vsmall' }, + small: { + scroll_off: ['left'], + scroll_in: ['left'] + }, large: { size: 'mlarge', angle_to_horizontal: 90, From a0d01c0d2403428eeae53d13bbe17883026b925b Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Thu, 6 Oct 2022 07:26:31 +0100 Subject: [PATCH 41/69] Sliding Clock: merge problem --- apps/slidingtext/slidingtext.settings.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 0b9f31867..598873b3c 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -67,11 +67,6 @@ scroll_off: ['left'], scroll_in: ['left'] }, - small: { - scroll_off: ['left'], - scroll_in: ['left'], - angle_to_horizontal: 0 - }, large: { size: 'mlarge', angle_to_horizontal: 90, From 6ed05fa9ab0dec638d05ae3ddf5d655ecc7f87b4 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Thu, 6 Oct 2022 11:23:26 +0100 Subject: [PATCH 42/69] Sliding Clock: en2 p clock - date needs to be slightly larger to be readable --- apps/slidingtext/slidingtext.js | 3 ++- apps/slidingtext/slidingtext.settings.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index ee25ebef3..ae8e6821b 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -339,9 +339,10 @@ function mergeObjects(obj1, obj2){ const heights = { - vvvsmall: [14,11], + tiny: [14,11], vvsmall: [15,13], vsmall: [20,15], + ssmall: [22,17], small: [25,20], msmall: [30,22], medium: [40,25], diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 598873b3c..16d990294 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -61,7 +61,7 @@ angle_to_horizontal: 0, scroll_off: ['left'], scroll_in: ['left'], - size: 'vsmall' + size: 'ssmall' }, small: { scroll_off: ['left'], @@ -86,7 +86,7 @@ }, { type: 'small', - init_coords: [0.05,0.4], + init_coords: [0.05,0.45], row_direction: [0.0,1.0], rows: 3 }, From 37c720f30caa3a14ab1cbff33967aecf838c7e48 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Thu, 6 Oct 2022 11:38:43 +0100 Subject: [PATCH 43/69] Sliding Clock: french text needs to be smaller to fit on screen --- apps/slidingtext/slidingtext.locale.fr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.locale.fr.js b/apps/slidingtext/slidingtext.locale.fr.js index c0098bb55..033cfc1d3 100644 --- a/apps/slidingtext/slidingtext.locale.fr.js +++ b/apps/slidingtext/slidingtext.locale.fr.js @@ -40,7 +40,7 @@ class FrenchDateFormatter extends DateFormatter { rows: 1 }, { - type: 'medium', + type: 'small', init_coords: [0.05,0.4], row_direction: [0.0,1.0], rows: 3 From 2cc7afe4261bf4483d90eda183ed5a00f0d88cbe Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Thu, 6 Oct 2022 21:20:42 +0100 Subject: [PATCH 44/69] Sliding Clock: french minute text has to move faster across the screen --- apps/slidingtext/slidingtext.js | 49 +++++++++++----------- apps/slidingtext/slidingtext.locale.de.js | 17 ++++---- apps/slidingtext/slidingtext.locale.dgt.js | 8 ++-- apps/slidingtext/slidingtext.locale.en.js | 2 +- apps/slidingtext/slidingtext.locale.es.js | 8 ++-- apps/slidingtext/slidingtext.locale.fr.js | 26 +++++++----- apps/slidingtext/slidingtext.locale.jp.js | 12 +++--- apps/slidingtext/slidingtext.settings.js | 10 ++--- 8 files changed, 67 insertions(+), 65 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index ae8e6821b..309250351 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -300,15 +300,15 @@ function initDisplay(settings) { if(settings == null){ settings = {}; } - var row_type_overide = date_formatter.defaultRowTypes(); + const row_type_overide = date_formatter.defaultRowTypes(); mergeMaps(row_types,row_type_overide); mergeMaps(row_types,settings.row_types); - var row_defs = (settings.row_defs != null && settings.row_defs.length > 0)? + const row_defs = (settings.row_defs != null && settings.row_defs.length > 0)? settings.row_defs : date_formatter.defaultRowDefs(); row_displays = []; row_defs.forEach(row_def =>{ - var row_type = create_row_type(row_types[row_def.type],row_def); + const row_type = create_row_type(row_types[row_def.type],row_def); // we now create the number of rows specified of that type for(var j=0; j row_display.scrollInFromLeft(txt)); } @@ -392,12 +392,12 @@ function create_row_type(row_type, row_def){ scroll_in = scroll_ins[0]; } else { scroll_in = (row_display,txt) =>{ - var idx = (Math.random() * scroll_ins.length) | 0; + const idx = (Math.random() * scroll_ins.length) | 0; return scroll_ins[idx](row_display,txt); }; } - var scroll_offs = []; + const scroll_offs = []; if(row_type.scroll_off.includes('left')){ scroll_offs.push((row_display)=> row_display.scrollOffToLeft()); } @@ -421,7 +421,7 @@ function create_row_type(row_type, row_def){ var text_formatter = (txt)=>txt; if(row_def.hasOwnProperty("alignment")){ - var alignment = row_def.alignment; + const alignment = row_def.alignment; if(alignment.startsWith("centre")){ const padding = parseInt(alignment.split("-")[1]); if(padding > 0){ @@ -433,7 +433,7 @@ function create_row_type(row_type, row_def){ } } - var version = bangleVersion() - 1; + const version = bangleVersion() - 1; return { row_speed: speed, row_height: height[version], @@ -475,7 +475,7 @@ function nextColorTheme(){ } function updateColorScheme(){ - var bgcolor = bg_color(); + const bgcolor = bg_color(); for(var i=0; i 99 || value < 0) throw "must be between in range 0-99"; if(value < 10) @@ -661,10 +661,10 @@ class DigitDateTimeFormatter { } formatDate(now){ - var hours = now.getHours() ; - var time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); - var date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); - var month_txt = Locale.month(now); + const hours = now.getHours() ; + const time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); + const date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); + const month_txt = Locale.month(now); return [time_txt, date_txt, month_txt]; } @@ -681,7 +681,7 @@ function setDateformat(shortname){ if(shortname === "default"){ date_formatter = new DigitDateTimeFormatter(); } else { - var date_formatter_class = require("slidingtext.locale." + shortname + ".js"); + const date_formatter_class = require("slidingtext.locale." + shortname + ".js"); date_formatter = new date_formatter_class(); } } @@ -700,7 +700,7 @@ const PREFERENCE_FILE = "slidingtext.settings.json"; */ function loadSettings() { try { - var settings = Object.assign({}, + const settings = Object.assign({}, require('Storage').readJSON(PREFERENCE_FILE, true) || {}); if (settings.date_formatter == null) { // for backward compatibility @@ -730,7 +730,6 @@ function loadSettings() { initDisplay(); updateColorScheme(); } - enable_live_controls = true; } function button3pressed() { @@ -752,9 +751,9 @@ function clearTimers(){ } function startTimers(){ - var date = new Date(); - var secs = date.getSeconds(); - var nextMinuteStart = 60 - secs; + const date = new Date(); + const secs = date.getSeconds(); + const nextMinuteStart = 60 - secs; setTimeout(scheduleDrawClock,nextMinuteStart * 1000); drawClock(); } diff --git a/apps/slidingtext/slidingtext.locale.de.js b/apps/slidingtext/slidingtext.locale.de.js index abd917ec0..e2b58bdb5 100644 --- a/apps/slidingtext/slidingtext.locale.de.js +++ b/apps/slidingtext/slidingtext.locale.de.js @@ -1,4 +1,4 @@ -var DateFormatter = require("slidingtext.dtfmt.js"); +const DateFormatter = require("slidingtext.dtfmt.js"); const germanNumberStr = [ ["NULL",""], // 0 ["EINS",""], // 1 @@ -59,10 +59,10 @@ function germanMinsToText(mins) { if (mins < 20) { return germanNumberStr[mins]; } else { - var tens = (mins / 10 | 0); - var word1 = germanTensStr[tens]; - var remainder = mins - tens * 10; - var word2 = germanUnit[remainder]; + const tens = (mins / 10 | 0); + const word1 = germanTensStr[tens]; + const remainder = mins - tens * 10; + const word2 = germanUnit[remainder]; return [word2, word1]; } } @@ -87,13 +87,12 @@ class GermanDateFormatter extends DateFormatter { ]; } formatDate(date){ - var mins = date.getMinutes(); - var hourOfDay = date.getHours(); + const mins = date.getMinutes(); + const hourOfDay = date.getHours(); var hours = germanHoursToText(hourOfDay); //console.log('hourOfDay->' + hourOfDay + ' hours text->' + hours) // Deal with the special times first if(mins === 0){ - var hours = germanHoursToText(hourOfDay); return [hours,"UHR", "","",""]; } /*else if(mins == 30){ var hours = germanHoursToText(hourOfDay+1); @@ -105,7 +104,7 @@ class GermanDateFormatter extends DateFormatter { var hours = germanHoursToText(hourOfDay+1); return ["", "", "VIERTEL", "VOR",hours]; } */ else { - var mins_txt = germanMinsToText(mins); + const mins_txt = germanMinsToText(mins); return [hours, "UHR", mins_txt[0],mins_txt[1]]; } } diff --git a/apps/slidingtext/slidingtext.locale.dgt.js b/apps/slidingtext/slidingtext.locale.dgt.js index 12dc7bf11..7946efa4d 100644 --- a/apps/slidingtext/slidingtext.locale.dgt.js +++ b/apps/slidingtext/slidingtext.locale.dgt.js @@ -39,7 +39,7 @@ class DigitDateTimeFormatter { } format00(num){ - var value = (num | 0); + const value = (num | 0); if(value > 99 || value < 0) throw "must be between in range 0-99"; if(value < 10) @@ -49,9 +49,9 @@ class DigitDateTimeFormatter { } formatDate(now){ - var hours = now.getHours() ; - var time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); - var date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); + const hours = now.getHours() ; + const time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); + const date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); return [time_txt[0], time_txt[1],time_txt[2], time_txt[3],time_txt[4],date_txt]; } diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 06bd10f90..b30ee235b 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -1,4 +1,4 @@ -var DateFormatter = require("slidingtext.dtfmt.js"); +const DateFormatter = require("slidingtext.dtfmt.js"); const hoursToText = require("slidingtext.utils.en.js").hoursToText; const numberToText = require("slidingtext.utils.en.js").numberToText; const dayOfWeek = require("slidingtext.utils.en.js").dayOfWeek; diff --git a/apps/slidingtext/slidingtext.locale.es.js b/apps/slidingtext/slidingtext.locale.es.js index e320f6e8e..39e4df288 100644 --- a/apps/slidingtext/slidingtext.locale.es.js +++ b/apps/slidingtext/slidingtext.locale.es.js @@ -64,12 +64,12 @@ class SpanishDateFormatter extends DateFormatter { ]; } formatDate(date){ - var mins = date.getMinutes(); + const mins = date.getMinutes(); var hourOfDay = date.getHours(); if(mins > 30){ hourOfDay += 1; } - var hours = spanishHoursToText(hourOfDay); + const hours = spanishHoursToText(hourOfDay); //console.log('hourOfDay->' + hourOfDay + ' hours text->' + hours) // Deal with the special times first if(mins === 0){ @@ -81,10 +81,10 @@ class SpanishDateFormatter extends DateFormatter { } else if(mins === 45) { return [hours, "MENOS", "CUARTO",""]; } else if(mins > 30){ - var mins_txt = spanishMinsToText(60-mins); + const mins_txt = spanishMinsToText(60-mins); return [hours, "MENOS", mins_txt[0],mins_txt[1]]; } else { - var mins_txt = spanishMinsToText(mins); + const mins_txt = spanishMinsToText(mins); return [hours, "Y", mins_txt[0],mins_txt[1]]; } } diff --git a/apps/slidingtext/slidingtext.locale.fr.js b/apps/slidingtext/slidingtext.locale.fr.js index 033cfc1d3..f239af222 100644 --- a/apps/slidingtext/slidingtext.locale.fr.js +++ b/apps/slidingtext/slidingtext.locale.fr.js @@ -14,14 +14,14 @@ const frenchNumberStr = [ "ZERO", "UNE", "DEUX", "TROIS", "QUATRE", function frenchHoursToText(hours){ hours = hours % 12; - if(hours == 0){ + if(hours === 0){ hours = 12; } return frenchNumberStr[hours]; } function frenchHeures(hours){ - if(hours % 12 == 1){ + if(hours % 12 === 1){ return 'HEURE'; } else { return 'HEURES'; @@ -31,7 +31,11 @@ function frenchHeures(hours){ class FrenchDateFormatter extends DateFormatter { constructor() { super(); - this.row_types = { }; + this.row_types = { + small: { + speed: 'vslow' + } + }; this.row_defs = [ { type: 'large', @@ -50,27 +54,27 @@ class FrenchDateFormatter extends DateFormatter { formatDate(date){ var hours = frenchHoursToText(date.getHours()); var heures = frenchHeures(date.getHours()); - var mins = date.getMinutes(); - if(mins == 0){ - if(hours == 0){ + const mins = date.getMinutes(); + if(mins === 0){ + if(hours === 0){ return ["MINUIT", "",""]; - } else if(hours == 12){ + } else if(hours === 12){ return ["MIDI", "",""]; } else { return [hours, heures,""]; } - } else if(mins == 30){ + } else if(mins === 30){ return [hours, heures,'ET DEMIE']; - } else if(mins == 15){ + } else if(mins === 15){ return [hours, heures,'ET QUART']; - } else if(mins == 45){ + } else if(mins === 45){ var next_hour = date.getHours() + 1; hours = frenchHoursToText(next_hour); heures = frenchHeures(next_hour); return [hours, heures,"MOINS",'LET QUART']; } if(mins > 30){ - var to_mins = 60-mins; + const to_mins = 60-mins; var mins_txt = frenchNumberStr[to_mins]; next_hour = date.getHours() + 1; hours = frenchHoursToText(next_hour); diff --git a/apps/slidingtext/slidingtext.locale.jp.js b/apps/slidingtext/slidingtext.locale.jp.js index 164f285fd..b3d0a255a 100644 --- a/apps/slidingtext/slidingtext.locale.jp.js +++ b/apps/slidingtext/slidingtext.locale.jp.js @@ -1,4 +1,4 @@ -var DateFormatter = require("slidingtext.dtfmt.js"); +const DateFormatter = require("slidingtext.dtfmt.js"); /** * Japanese date formatting @@ -40,9 +40,9 @@ function japaneseMinsToText(mins){ } else if(mins === 30) return ["HAN",""]; else { - var units = mins % 10; - var mins_txt = japaneseMinuteStr[units]; - var tens = mins /10 | 0; + const units = mins % 10; + const mins_txt = japaneseMinuteStr[units]; + const tens = mins /10 | 0; if(tens > 0){ var tens_txt = tensPrefixStr[tens]; var minutes_txt; @@ -78,8 +78,8 @@ class JapaneseDateFormatter extends DateFormatter { ]; } formatDate(date){ - var hours_txt = japaneseHoursToText(date.getHours()); - var mins_txt = japaneseMinsToText(date.getMinutes()); + const hours_txt = japaneseHoursToText(date.getHours()); + const mins_txt = japaneseMinsToText(date.getMinutes()); return [hours_txt,"JI", mins_txt[0], mins_txt[1] ]; } defaultRowTypes(){ return this.row_types;} diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 16d990294..a4149b988 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -1,13 +1,13 @@ (function(back) { const PREFERENCE_FILE = "slidingtext.settings.json"; - var settings = Object.assign({}, + const settings = Object.assign({}, require('Storage').readJSON(PREFERENCE_FILE, true) || {}); // the screen controls are defaulted on for a bangle 1 and off for a bangle 2 if(settings.enable_live_controls == null){ settings.enable_live_controls = (g.getHeight()> 200); } console.log("loaded:" + JSON.stringify(settings)); - var locale_mappings = { + const locale_mappings = { 'en' : { date_formatter: 'en' }, 'en p': { date_formatter: 'en', @@ -111,13 +111,13 @@ 'jp': { date_formatter: 'jp'}, 'dgt': { date_formatter: 'dgt'}, } - var locales = Object.keys(locale_mappings); + const locales = Object.keys(locale_mappings); function writeSettings() { if(settings.date_format == null){ settings.date_format = 'en'; } - var styling = locale_mappings[settings.date_format]; + const styling = locale_mappings[settings.date_format]; if(styling.date_formatter != null) settings.date_formatter = styling.date_formatter; @@ -144,7 +144,7 @@ wrap: true, step: 1, onchange: v => { - var write_value = (value_mapping == null)? values[v] : value_mapping(values[v]); + const write_value = (value_mapping == null)? values[v] : value_mapping(values[v]); writer(write_value); writeSettings(); } From 9300c94ba28f2d7cc3554410da0299d78d5a2499 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Fri, 7 Oct 2022 10:46:21 +0100 Subject: [PATCH 45/69] Sliding Clock: en p clock needs to have the date bigger to be readable --- apps/slidingtext/slidingtext.settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index a4149b988..12b64a1b0 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -25,7 +25,7 @@ scroll_in: ['right'], }, small: { - size: 'vvsmall', + size: 'vsmall', scroll_off: ['right'], scroll_in: ['right'], } From 21663885595f35c426cd69fbd456e637317486af Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Fri, 7 Oct 2022 12:25:50 +0100 Subject: [PATCH 46/69] Sliding Clock: en clock needs to have the date bigger to be readable --- apps/slidingtext/slidingtext.locale.en.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index b30ee235b..dd34e419b 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -9,7 +9,7 @@ class EnglishDateFormatter extends DateFormatter { constructor() { super(); this.row_types = { - small: {size: 'vvsmall'} + small: {size: 'vsmall'} }; this.row_defs = [ { From 4c24d4a8fd0ea2d368f8903530156228cc3c46f9 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Fri, 7 Oct 2022 15:01:16 +0100 Subject: [PATCH 47/69] Sliding Clock: allow emulator --- apps/slidingtext/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/metadata.json b/apps/slidingtext/metadata.json index 8d52d6723..a639a0747 100644 --- a/apps/slidingtext/metadata.json +++ b/apps/slidingtext/metadata.json @@ -8,7 +8,7 @@ "tags": "clock", "supports": ["BANGLEJS","BANGLEJS2"], "readme": "README.md", - "allow_emulator": false, + "allow_emulator": true, "storage": [ {"name":"slidingtext.app.js","url":"slidingtext.js"}, {"name":"slidingtext.settings.js","url":"slidingtext.settings.js"}, From 2000c54f75242981721a890b649af87480837125 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 8 Oct 2022 01:45:14 +0100 Subject: [PATCH 48/69] Sliding Clock: changed hue of the purple face colouring --- apps/slidingtext/slidingtext.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 309250351..c248d7058 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -31,7 +31,7 @@ const color_schemes = [ }, { name: "purple", - background : [1.0,0.0,1.0], + background : [0.3,0.0,0.6], main_bar: [1.0,1.0,0.0], other_bars: [0.85,0.85,0.85] }, @@ -677,7 +677,7 @@ var date_formatter; function setDateformat(shortname){ console.log("setting date format:" + shortname); try { - if (date_formatter == null || date_formatter.shortName() !== shortname) { + if (date_formatter == null) { if(shortname === "default"){ date_formatter = new DigitDateTimeFormatter(); } else { From 170f6e2db4a1cb46cf595739a74c6a5d10731617 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 8 Oct 2022 09:52:49 +0100 Subject: [PATCH 49/69] Sliding Clock: en clocks - dates needs to be 1 size bigger to be readable --- apps/slidingtext/slidingtext.locale.en.js | 2 +- apps/slidingtext/slidingtext.settings.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index dd34e419b..899e5c45b 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -9,7 +9,7 @@ class EnglishDateFormatter extends DateFormatter { constructor() { super(); this.row_types = { - small: {size: 'vsmall'} + small: {size: 'ssmall'} }; this.row_defs = [ { diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 12b64a1b0..65c748eae 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -25,7 +25,6 @@ scroll_in: ['right'], }, small: { - size: 'vsmall', scroll_off: ['right'], scroll_in: ['right'], } From aab868ac48862073f96074172b1f31bf4dfeefab Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 8 Oct 2022 10:02:18 +0100 Subject: [PATCH 50/69] Sliding Clock: en p - date needs to move up with the new size --- apps/slidingtext/slidingtext.settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 65c748eae..55b547d64 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -45,7 +45,7 @@ }, { type: 'small', - init_coords: [0.26,0.7], + init_coords: [0.26,0.65], row_direction: [0.0,1.0], rows: 3 } From ebc8d1ba8a2f603f9eae44703d9a09f97dddb5bb Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 8 Oct 2022 10:03:31 +0100 Subject: [PATCH 51/69] Sliding Clock: en - date needs to move up with the new size --- apps/slidingtext/slidingtext.locale.en.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 899e5c45b..71ab53f56 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -26,7 +26,7 @@ class EnglishDateFormatter extends DateFormatter { }, { type: 'small', - init_coords: [0.05,0.8], + init_coords: [0.05,0.75], row_direction: [0.0,1.0], rows: 2 } From c09dd1af5a128787077bf7b1b2a7fce3902053c0 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 8 Oct 2022 19:57:32 +0100 Subject: [PATCH 52/69] Sliding Clock: get rid of the setup variables after the init to reduce the memory footprint --- apps/slidingtext/slidingtext.js | 21 +++++++++------- apps/slidingtext/slidingtext.locale.en.js | 30 ++++++++++++----------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index c248d7058..82222640c 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -265,7 +265,7 @@ function bangleVersion(){ return (g.getHeight()>200)? 1 : 2; } -const row_types = { +var row_types = { large: { color: 'major', speed: 'medium', @@ -314,11 +314,11 @@ function initDisplay(settings) { row_displays.push(create_row(row_type,j)); } }); + initComplete(); } function mergeMaps(map1,map2){ if(map2 == null){ - console.log("no merge:" + map2); return; } Object.keys(map2).forEach(key => { @@ -336,10 +336,7 @@ function mergeObjects(obj1, obj2){ return result; } - - -const heights = { - tiny: [14,11], +var heights = { vvsmall: [15,13], vsmall: [20,15], ssmall: [22,17], @@ -351,14 +348,14 @@ const heights = { vlarge: [60,50] }; -const rotations = { +var rotations = { 0: 0, 90: 3, 180: 2, 270: 1, }; -const speeds = { +var speeds = { fast: 20, medium: 10, slow: 5, @@ -447,6 +444,13 @@ function create_row_type(row_type, row_def){ }; } +function initComplete(){ + row_types = null; + speeds = null; + rotations = null; + heights = null; +} + function create_row(row_type, row_no){ return new ShiftText(row_type.x(row_no), row_type.y(row_no), @@ -605,7 +609,6 @@ function setColorScheme(colorscheme_name){ for (var i=0; i < color_schemes.length; i++) { if(color_schemes[i].name === colorscheme_name){ color_scheme_index = i; - console.log("match"); updateColorScheme(); break; } diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 71ab53f56..dbb01c5e2 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -8,10 +8,17 @@ const monthToText = require("slidingtext.utils.en.js").monthToText; class EnglishDateFormatter extends DateFormatter { constructor() { super(); - this.row_types = { - small: {size: 'ssmall'} - }; - this.row_defs = [ + } + formatDate(date){ + const hours_txt = hoursToText(date.getHours()); + const mins_txt = numberToText(date.getMinutes()); + const day_of_week = dayOfWeek(date); + const date_txt = numberToDayNumberText(date.getDate()).join(' '); + const month = monthToText(date); + return [hours_txt,mins_txt[0],mins_txt[1],day_of_week,date_txt,month]; + } + defaultRowTypes(){ + return [ { type: 'large', init_coords: [0.05,0.07], @@ -32,17 +39,12 @@ class EnglishDateFormatter extends DateFormatter { } ]; } - formatDate(date){ - const hours_txt = hoursToText(date.getHours()); - const mins_txt = numberToText(date.getMinutes()); - const day_of_week = dayOfWeek(date); - const date_txt = numberToDayNumberText(date.getDate()).join(' '); - const month = monthToText(date); - return [hours_txt,mins_txt[0],mins_txt[1],day_of_week,date_txt,month]; - } - defaultRowTypes(){ return this.row_types;} - defaultRowDefs(){ return this.row_defs; } + defaultRowDefs(){ + return { + small: {size: 'ssmall'} + }; + } } module.exports = EnglishDateFormatter; \ No newline at end of file From b9a7e76bebd2c4983b246038c5b800f42658e793 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 8 Oct 2022 20:21:35 +0100 Subject: [PATCH 53/69] Sliding Clock: get rid of the setup variables after the init to reduce the memory footprint --- apps/slidingtext/slidingtext.js | 2 +- apps/slidingtext/slidingtext.locale.en.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 82222640c..6ea0cfd65 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -314,7 +314,6 @@ function initDisplay(settings) { row_displays.push(create_row(row_type,j)); } }); - initComplete(); } function mergeMaps(map1,map2){ @@ -733,6 +732,7 @@ function loadSettings() { initDisplay(); updateColorScheme(); } + initComplete(); } function button3pressed() { diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index dbb01c5e2..73e3d23b0 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -17,7 +17,13 @@ class EnglishDateFormatter extends DateFormatter { const month = monthToText(date); return [hours_txt,mins_txt[0],mins_txt[1],day_of_week,date_txt,month]; } - defaultRowTypes(){ + defaultRowTypes() { + return { + small: {size: 'ssmall'} + }; + } + + defaultRowDefs(){ return [ { type: 'large', @@ -39,12 +45,6 @@ class EnglishDateFormatter extends DateFormatter { } ]; } - - defaultRowDefs(){ - return { - small: {size: 'ssmall'} - }; - } } module.exports = EnglishDateFormatter; \ No newline at end of file From 804f308af17af8695f83c673026508f88adf5c2a Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Sat, 8 Oct 2022 21:46:00 +0100 Subject: [PATCH 54/69] sliding clock: changed styling from member variables to instance variables --- apps/slidingtext/slidingtext.js | 67 ++++++++++---------- apps/slidingtext/slidingtext.locale.de.js | 34 +++++----- apps/slidingtext/slidingtext.locale.dgt.js | 48 +++++++-------- apps/slidingtext/slidingtext.locale.en2.js | 72 +++++++++++----------- apps/slidingtext/slidingtext.locale.es.js | 34 +++++----- apps/slidingtext/slidingtext.locale.fr.js | 44 ++++++------- apps/slidingtext/slidingtext.locale.jp.js | 20 +++--- 7 files changed, 164 insertions(+), 155 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 6ea0cfd65..a7d0ba05f 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -448,6 +448,8 @@ function initComplete(){ speeds = null; rotations = null; heights = null; + const mem = process.memory(true); + console.log("init complete memory:" + mem.usage / mem.total); } function create_row(row_type, row_no){ @@ -547,7 +549,9 @@ function drawClock(){ } reset_commands(); date = display_time(date); - console.log("draw_clock:" + last_draw_time.toISOString() + " display:" + date.toISOString()); + const mem = process.memory(false); + console.log("draw_clock:" + last_draw_time.toISOString() + " display:" + date.toISOString() + + " memory:" + mem.usage / mem.total); const rows = date_formatter.formatDate(date); for (var i = 0; i < rows.length; i++) { @@ -622,34 +626,6 @@ const Locale = require('locale'); */ class DigitDateTimeFormatter { constructor() { - this.row_types = { - large: { - scroll_off: ['left', 'right', 'down'], - scroll_in: ['left', 'right', 'up'], - size: 'vlarge' - }, - small: { - angle_to_horizontal: 90, - scroll_off: ['down'], - scroll_in: ['up'], - size: 'vvsmall' - } - }; - - this.row_defs = [ - { - type: 'large', - row_direction: [0.0,1.0], - init_coords: [0.1,0.35], - rows: 1 - }, - { - type: 'small', - row_direction: [1.0,0], - init_coords: [0.85,0.99], - rows: 2 - } - ]; } format00(num){ @@ -670,9 +646,38 @@ class DigitDateTimeFormatter { return [time_txt, date_txt, month_txt]; } - defaultRowTypes(){ return this.row_types; } + defaultRowTypes(){ + return { + large: { + scroll_off: ['left', 'right', 'down'], + scroll_in: ['left', 'right', 'up'], + size: 'vlarge' + }, + small: { + angle_to_horizontal: 90, + scroll_off: ['down'], + scroll_in: ['up'], + size: 'vvsmall' + } + }; + } - defaultRowDefs() { return this.row_defs; } + defaultRowDefs() { + return [ + { + type: 'large', + row_direction: [0.0,1.0], + init_coords: [0.1,0.35], + rows: 1 + }, + { + type: 'small', + row_direction: [1.0,0], + init_coords: [0.85,0.99], + rows: 2 + } + ]; + } } var date_formatter; diff --git a/apps/slidingtext/slidingtext.locale.de.js b/apps/slidingtext/slidingtext.locale.de.js index e2b58bdb5..e18529aee 100644 --- a/apps/slidingtext/slidingtext.locale.de.js +++ b/apps/slidingtext/slidingtext.locale.de.js @@ -70,21 +70,6 @@ function germanMinsToText(mins) { class GermanDateFormatter extends DateFormatter { constructor() { super(); - this.row_types = { }; - this.row_defs = [ - { - type: 'large', - init_coords: [0.05,0.1], - row_direction: [0.0,1.0], - rows: 1 - }, - { - type: 'medium', - init_coords: [0.05,0.4], - row_direction: [0.0,1.0], - rows: 3 - } - ]; } formatDate(date){ const mins = date.getMinutes(); @@ -108,9 +93,24 @@ class GermanDateFormatter extends DateFormatter { return [hours, "UHR", mins_txt[0],mins_txt[1]]; } } - defaultRowTypes(){ return this.row_types;} + defaultRowTypes(){ return {};} - defaultRowDefs(){ return this.row_defs; } + defaultRowDefs(){ + return [ + { + type: 'large', + init_coords: [0.05,0.1], + row_direction: [0.0,1.0], + rows: 1 + }, + { + type: 'medium', + init_coords: [0.05,0.4], + row_direction: [0.0,1.0], + rows: 3 + } + ]; + } } module.exports = GermanDateFormatter; diff --git a/apps/slidingtext/slidingtext.locale.dgt.js b/apps/slidingtext/slidingtext.locale.dgt.js index 7946efa4d..446a4cd50 100644 --- a/apps/slidingtext/slidingtext.locale.dgt.js +++ b/apps/slidingtext/slidingtext.locale.dgt.js @@ -1,8 +1,27 @@ const Locale = require('locale'); class DigitDateTimeFormatter { - constructor() { - this.row_types = { + constructor() {} + + format00(num){ + const value = (num | 0); + if(value > 99 || value < 0) + throw "must be between in range 0-99"; + if(value < 10) + return "0" + value.toString(); + else + return value.toString(); + } + + formatDate(now){ + const hours = now.getHours() ; + const time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); + const date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); + return [time_txt[0], time_txt[1],time_txt[2], time_txt[3],time_txt[4],date_txt]; + } + + defaultRowTypes(){ + return { large: { scroll_off: ['down'], scroll_in: ['up'], @@ -15,8 +34,10 @@ class DigitDateTimeFormatter { scroll_in: ['right'], } }; + } - this.row_defs = [ + defaultRowDefs() { + return [ { type: 'large', row_direction: [0.7,0.0], @@ -37,27 +58,6 @@ class DigitDateTimeFormatter { } ]; } - - format00(num){ - const value = (num | 0); - if(value > 99 || value < 0) - throw "must be between in range 0-99"; - if(value < 10) - return "0" + value.toString(); - else - return value.toString(); - } - - formatDate(now){ - const hours = now.getHours() ; - const time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); - const date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); - return [time_txt[0], time_txt[1],time_txt[2], time_txt[3],time_txt[4],date_txt]; - } - - defaultRowTypes(){ return this.row_types; } - - defaultRowDefs() { return this.row_defs; } } module.exports = DigitDateTimeFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.en2.js b/apps/slidingtext/slidingtext.locale.en2.js index 3e06659a7..ac2ae02ff 100644 --- a/apps/slidingtext/slidingtext.locale.en2.js +++ b/apps/slidingtext/slidingtext.locale.en2.js @@ -7,39 +7,6 @@ const numberToText = require("slidingtext.utils.en.js").numberToText; class EnglishTraditionalDateFormatter extends DateFormatter { constructor() { super(); - this.row_types = { - small: { - speed: 'medium', - scroll_off: ['left','right'], - scroll_in: ['left','right'], - }, - large: { - speed: 'medium', - color: 'major', - scroll_off: ['left','right'], - scroll_in: ['left','right'] - } - }; - this.row_defs = [ - { - type: 'large', - init_coords: [0.05,0.1], - 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.05,0.75], - row_direction: [0.0,1.0], - rows: 1 - } - ]; } formatDate(date){ const day_of_week = dayOfWeekShort(date); @@ -85,9 +52,44 @@ class EnglishTraditionalDateFormatter extends DateFormatter { } } } - defaultRowTypes(){ return this.row_types;} + defaultRowTypes(){ + return { + small: { + speed: 'medium', + scroll_off: ['left','right'], + scroll_in: ['left','right'], + }, + large: { + speed: 'medium', + color: 'major', + scroll_off: ['left','right'], + scroll_in: ['left','right'] + } + }; + } - defaultRowDefs(){ return this.row_defs; } + defaultRowDefs(){ + return [ + { + type: 'large', + init_coords: [0.05,0.1], + 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.05,0.75], + row_direction: [0.0,1.0], + rows: 1 + } + ]; + } } module.exports = EnglishTraditionalDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.es.js b/apps/slidingtext/slidingtext.locale.es.js index 39e4df288..041497e04 100644 --- a/apps/slidingtext/slidingtext.locale.es.js +++ b/apps/slidingtext/slidingtext.locale.es.js @@ -47,21 +47,6 @@ function spanishMinsToText(mins){ class SpanishDateFormatter extends DateFormatter { constructor() { super(); - this.row_types = { }; - this.row_defs = [ - { - type: 'large', - init_coords: [0.05,0.1], - row_direction: [0.0,1.0], - rows: 1 - }, - { - type: 'medium', - init_coords: [0.05,0.4], - row_direction: [0.0,1.0], - rows: 3 - } - ]; } formatDate(date){ const mins = date.getMinutes(); @@ -88,9 +73,24 @@ class SpanishDateFormatter extends DateFormatter { return [hours, "Y", mins_txt[0],mins_txt[1]]; } } - defaultRowTypes(){ return this.row_types;} + defaultRowTypes(){ return {};} - defaultRowDefs(){ return this.row_defs; } + defaultRowDefs(){ + return [ + { + type: 'large', + init_coords: [0.05,0.1], + row_direction: [0.0,1.0], + rows: 1 + }, + { + type: 'medium', + init_coords: [0.05,0.4], + row_direction: [0.0,1.0], + rows: 3 + } + ]; + } } module.exports = SpanishDateFormatter; diff --git a/apps/slidingtext/slidingtext.locale.fr.js b/apps/slidingtext/slidingtext.locale.fr.js index f239af222..6da0e232d 100644 --- a/apps/slidingtext/slidingtext.locale.fr.js +++ b/apps/slidingtext/slidingtext.locale.fr.js @@ -31,25 +31,6 @@ function frenchHeures(hours){ class FrenchDateFormatter extends DateFormatter { constructor() { super(); - this.row_types = { - small: { - speed: 'vslow' - } - }; - this.row_defs = [ - { - type: 'large', - init_coords: [0.05,0.1], - row_direction: [0.0,1.0], - rows: 1 - }, - { - type: 'small', - init_coords: [0.05,0.4], - row_direction: [0.0,1.0], - rows: 3 - } - ]; } formatDate(date){ var hours = frenchHoursToText(date.getHours()); @@ -85,9 +66,30 @@ class FrenchDateFormatter extends DateFormatter { return [ hours, heures , mins_txt ]; } } - defaultRowTypes(){ return this.row_types;} + defaultRowTypes(){ + return { + small: { + speed: 'vslow' + } + }; + } - defaultRowDefs(){ return this.row_defs; } + defaultRowDefs(){ + return [ + { + type: 'large', + init_coords: [0.05,0.1], + row_direction: [0.0,1.0], + rows: 1 + }, + { + type: 'small', + init_coords: [0.05,0.4], + row_direction: [0.0,1.0], + rows: 3 + } + ]; + } } module.exports = FrenchDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.locale.jp.js b/apps/slidingtext/slidingtext.locale.jp.js index b3d0a255a..b2f9106a2 100644 --- a/apps/slidingtext/slidingtext.locale.jp.js +++ b/apps/slidingtext/slidingtext.locale.jp.js @@ -61,8 +61,16 @@ function japaneseMinsToText(mins){ class JapaneseDateFormatter extends DateFormatter { constructor() { super(); - this.row_types = { }; - this.row_defs = [ + } + formatDate(date){ + const hours_txt = japaneseHoursToText(date.getHours()); + const mins_txt = japaneseMinsToText(date.getMinutes()); + return [hours_txt,"JI", mins_txt[0], mins_txt[1] ]; + } + defaultRowTypes(){ return {}; } + + defaultRowDefs(){ + return [ { type: 'large', init_coords: [0.05,0.1], @@ -77,14 +85,6 @@ class JapaneseDateFormatter extends DateFormatter { } ]; } - formatDate(date){ - const hours_txt = japaneseHoursToText(date.getHours()); - const mins_txt = japaneseMinsToText(date.getMinutes()); - return [hours_txt,"JI", mins_txt[0], mins_txt[1] ]; - } - defaultRowTypes(){ return this.row_types;} - - defaultRowDefs(){ return this.row_defs; } } module.exports = JapaneseDateFormatter; \ No newline at end of file From c3cccde2499cf6761d2a492d168794a4183178cb Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Sat, 8 Oct 2022 23:02:18 +0100 Subject: [PATCH 55/69] sliding clock: separated out v1 and v2 faces --- apps/slidingtext/slidingtext.js | 3 +-- apps/slidingtext/slidingtext.locale.en.js | 20 +++++++++++++------- apps/slidingtext/slidingtext.settings.js | 14 ++++++++++++-- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index a7d0ba05f..b945a85f4 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -625,8 +625,7 @@ const Locale = require('locale'); * clock working in the emulator */ class DigitDateTimeFormatter { - constructor() { - } + constructor() {} format00(num){ const value = (num | 0); diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 73e3d23b0..140f3bb27 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -24,7 +24,7 @@ class EnglishDateFormatter extends DateFormatter { } defaultRowDefs(){ - return [ + const row_defs = [ { type: 'large', init_coords: [0.05,0.07], @@ -36,14 +36,20 @@ class EnglishDateFormatter extends DateFormatter { init_coords: [0.05,0.31], row_direction: [0.0,1.0], rows: 2 - }, - { - type: 'small', - init_coords: [0.05,0.75], - row_direction: [0.0,1.0], - rows: 2 } ]; + const bangleVersion = (g.getHeight()>200)? 1 : 2; + if(bangleVersion > 1){ + row_defs.push( + { + type: 'small', + init_coords: [0.05,0.75], + row_direction: [0.0,1.0], + rows: 2 + } + ) + }; + return row_defs; } } diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 55b547d64..59c9ac595 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -2,12 +2,13 @@ const PREFERENCE_FILE = "slidingtext.settings.json"; const settings = Object.assign({}, require('Storage').readJSON(PREFERENCE_FILE, true) || {}); + const bangleVersion = (g.getHeight()>200)? 1 : 2; // the screen controls are defaulted on for a bangle 1 and off for a bangle 2 if(settings.enable_live_controls == null){ - settings.enable_live_controls = (g.getHeight()> 200); + settings.enable_live_controls = bangleVersion < 2; } console.log("loaded:" + JSON.stringify(settings)); - const locale_mappings = { + const locale_mappings = (bangleVersion > 1)? { 'en' : { date_formatter: 'en' }, 'en p': { date_formatter: 'en', @@ -109,7 +110,16 @@ 'es': { date_formatter: 'es'}, 'jp': { date_formatter: 'jp'}, 'dgt': { date_formatter: 'dgt'}, + } : { + 'en' : { date_formatter: 'en' }, + 'en2' : { date_formatter: 'en2' }, + 'fr': { date_formatter:'fr'}, + 'de': { date_formatter: 'de'}, + 'es': { date_formatter: 'es'}, + 'jp': { date_formatter: 'jp'}, + 'dgt': { date_formatter: 'dgt'}, } + const locales = Object.keys(locale_mappings); function writeSettings() { From 230bc8988da6f7fca43a92ce8ed179474be2474b Mon Sep 17 00:00:00 2001 From: adrian w kirk Date: Sat, 8 Oct 2022 23:07:50 +0100 Subject: [PATCH 56/69] sliding clock: separated out v1 and v2 faces --- apps/slidingtext/slidingtext.locale.en.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.locale.en.js b/apps/slidingtext/slidingtext.locale.en.js index 140f3bb27..545cc9f09 100644 --- a/apps/slidingtext/slidingtext.locale.en.js +++ b/apps/slidingtext/slidingtext.locale.en.js @@ -48,7 +48,7 @@ class EnglishDateFormatter extends DateFormatter { rows: 2 } ) - }; + } return row_defs; } } From d690d21eedccd8017e0b28776a15a561fb638752 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sun, 9 Oct 2022 10:32:09 +0100 Subject: [PATCH 57/69] Sliding Clock: reorganised the memory management of the initialization --- apps/slidingtext/slidingtext.js | 484 ++++++++++++++++---------------- 1 file changed, 235 insertions(+), 249 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index b945a85f4..e1d1c47b9 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -5,18 +5,18 @@ */ const color_schemes = [ - { - name: "white", - background : [1.0,1.0,1.0], - main_bar: [0.0,0.0,0.0], - other_bars: [0.1,0.1,0.1], - }, { name: "black", background : [0.0,0.0,0.0], main_bar: [1.0,0.0,0.0], other_bars: [0.9,0.9,0.9], }, + { + name: "white", + background : [1.0,1.0,1.0], + main_bar: [0.0,0.0,0.0], + other_bars: [0.1,0.1,0.1], + }, { name: "red", background : [1.0,0.0,0.0], @@ -265,33 +265,6 @@ function bangleVersion(){ return (g.getHeight()>200)? 1 : 2; } -var row_types = { - large: { - color: 'major', - speed: 'medium', - angle_to_horizontal: 0, - scroll_off: ['left'], - scroll_in: ['right'], - size: 'large' - }, - medium: { - color: 'minor', - speed: 'slow', - angle_to_horizontal: 0, - scroll_off: ['left'], - scroll_in: ['right'], - size: 'medium' - }, - small: { - color: 'minor', - speed: 'superslow', - angle_to_horizontal: 0, - scroll_off: ['left'], - scroll_in: ['right'], - size: 'small' - } -}; - let row_displays; function initDisplay(settings) { if(row_displays != null){ @@ -300,175 +273,190 @@ function initDisplay(settings) { if(settings == null){ settings = {}; } + var row_types = { + large: { + color: 'major', + speed: 'medium', + angle_to_horizontal: 0, + scroll_off: ['left'], + scroll_in: ['right'], + size: 'large' + }, + medium: { + color: 'minor', + speed: 'slow', + angle_to_horizontal: 0, + scroll_off: ['left'], + scroll_in: ['right'], + size: 'medium' + }, + small: { + color: 'minor', + speed: 'superslow', + angle_to_horizontal: 0, + scroll_off: ['left'], + scroll_in: ['right'], + size: 'small' + } + }; + + function mergeMaps(map1,map2){ + if(map2 == null){ + return; + } + Object.keys(map2).forEach(key => { + if(map1.hasOwnProperty(key)){ + map1[key] = mergeObjects(map1[key], map2[key]); + } else { + map1[key] = map2[key]; + } + }); + } + + function mergeObjects(obj1, obj2){ + const result = {}; + Object.keys(obj1).forEach(key => result[key] = (obj2.hasOwnProperty(key))? obj2[key] : obj1[key]); + return result; + } + const row_type_overide = date_formatter.defaultRowTypes(); mergeMaps(row_types,row_type_overide); mergeMaps(row_types,settings.row_types); const row_defs = (settings.row_defs != null && settings.row_defs.length > 0)? settings.row_defs : date_formatter.defaultRowDefs(); + var heights = { + vvsmall: [15,13], + vsmall: [20,15], + ssmall: [22,17], + small: [25,20], + msmall: [30,22], + medium: [40,25], + mlarge: [45,35], + large: [50,40], + vlarge: [60,50] + }; + + var rotations = { + 0: 0, + 90: 3, + 180: 2, + 270: 1, + }; + + var speeds = { + fast: 20, + medium: 10, + slow: 5, + vslow: 2, + superslow: 1 + }; + + function create_row_type(row_type, row_def){ + const speed = speeds[row_type.speed]; + const rotation = rotations[row_type.angle_to_horizontal]; + const height = heights[row_type.size]; + const scroll_ins = []; + if(row_type.scroll_in.includes('left')){ + scroll_ins.push((row_display,txt)=> row_display.scrollInFromLeft(txt)); + } + if(row_type.scroll_in.includes('right')){ + scroll_ins.push((row_display,txt)=> row_display.scrollInFromRight(txt)); + } + if(row_type.scroll_in.includes('up')){ + scroll_ins.push((row_display,txt)=> row_display.scrollInFromBottom(txt)); + } + var scroll_in; + if(scroll_ins.length === 0){ + scroll_in = (row_display,txt)=> row_display.scrollInFromLeft(txt); + } else if(scroll_ins.length === 1){ + scroll_in = scroll_ins[0]; + } else { + scroll_in = (row_display,txt) =>{ + const idx = (Math.random() * scroll_ins.length) | 0; + return scroll_ins[idx](row_display,txt); + }; + } + + const scroll_offs = []; + if(row_type.scroll_off.includes('left')){ + scroll_offs.push((row_display)=> row_display.scrollOffToLeft()); + } + if(row_type.scroll_off.includes('right')){ + scroll_offs.push((row_display)=> row_display.scrollOffToRight()); + } + if(row_type.scroll_off.includes('down')){ + scroll_offs.push((row_display)=> row_display.scrollOffToBottom()); + } + var scroll_off; + if(scroll_offs.length === 0){ + scroll_off = (row_display)=> row_display.scrollOffToLeft(); + } else if(scroll_offs.length === 1){ + scroll_off = scroll_offs[0]; + } else { + scroll_off = (row_display) =>{ + var idx = (Math.random() * scroll_off.length) | 0; + return scroll_offs[idx](row_display); + }; + } + + var text_formatter = (txt)=>txt; + const SPACES = ' '; + if(row_def.hasOwnProperty("alignment")){ + const alignment = row_def.alignment; + if(alignment.startsWith("centre")){ + const padding = parseInt(alignment.split("-")[1]); + if(padding > 0){ + text_formatter = (txt) => { + const front_spaces = (padding - txt.length)/2 | 0; + return front_spaces > 0? SPACES.substring(0,front_spaces + 1) + txt : txt; + }; + } + } + } + + const version = bangleVersion() - 1; + const Y_RESERVED = 20; + return { + row_speed: speed, + row_height: height[version], + row_rotation: rotation, + x: (row_no) => row_def.init_coords[0] * g.getWidth() + row_def.row_direction[0] * height[version] * row_no, + y: (row_no) => Y_RESERVED + row_def.init_coords[1] * (g.getHeight() - Y_RESERVED) + row_def.row_direction[1] * height[version] * row_no, + scroll_in: scroll_in, + scroll_off: scroll_off, + fg_color: () => (row_type.color === 'major')? main_color(): other_color(), + row_text_formatter : text_formatter + }; + } row_displays = []; row_defs.forEach(row_def =>{ const row_type = create_row_type(row_types[row_def.type],row_def); // we now create the number of rows specified of that type - for(var j=0; j { - if(map1.hasOwnProperty(key)){ - map1[key] = mergeObjects(map1[key], map2[key]); - } else { - map1[key] = map2[key]; - } - }); -} - -function mergeObjects(obj1, obj2){ - const result = {}; - Object.keys(obj1).forEach(key => result[key] = (obj2.hasOwnProperty(key))? obj2[key] : obj1[key]); - return result; -} - -var heights = { - vvsmall: [15,13], - vsmall: [20,15], - ssmall: [22,17], - small: [25,20], - msmall: [30,22], - medium: [40,25], - mlarge: [45,35], - large: [50,40], - vlarge: [60,50] -}; - -var rotations = { - 0: 0, - 90: 3, - 180: 2, - 270: 1, -}; - -var speeds = { - fast: 20, - medium: 10, - slow: 5, - vslow: 2, - superslow: 1 -}; - -const Y_RESERVED = 20; -const SPACES = ' '; -/** - * takes a json definition for a row type and creates an instance - */ -function create_row_type(row_type, row_def){ - const speed = speeds[row_type.speed]; - const rotation = rotations[row_type.angle_to_horizontal]; - const height = heights[row_type.size]; - const scroll_ins = []; - if(row_type.scroll_in.includes('left')){ - scroll_ins.push((row_display,txt)=> row_display.scrollInFromLeft(txt)); - } - if(row_type.scroll_in.includes('right')){ - scroll_ins.push((row_display,txt)=> row_display.scrollInFromRight(txt)); - } - if(row_type.scroll_in.includes('up')){ - scroll_ins.push((row_display,txt)=> row_display.scrollInFromBottom(txt)); - } - var scroll_in; - if(scroll_ins.length === 0){ - scroll_in = (row_display,txt)=> row_display.scrollInFromLeft(txt); - } else if(scroll_ins.length === 1){ - scroll_in = scroll_ins[0]; - } else { - scroll_in = (row_display,txt) =>{ - const idx = (Math.random() * scroll_ins.length) | 0; - return scroll_ins[idx](row_display,txt); - }; - } - - const scroll_offs = []; - if(row_type.scroll_off.includes('left')){ - scroll_offs.push((row_display)=> row_display.scrollOffToLeft()); - } - if(row_type.scroll_off.includes('right')){ - scroll_offs.push((row_display)=> row_display.scrollOffToRight()); - } - if(row_type.scroll_off.includes('down')){ - scroll_offs.push((row_display)=> row_display.scrollOffToBottom()); - } - var scroll_off; - if(scroll_offs.length === 0){ - scroll_off = (row_display)=> row_display.scrollOffToLeft(); - } else if(scroll_offs.length === 1){ - scroll_off = scroll_offs[0]; - } else { - scroll_off = (row_display) =>{ - var idx = (Math.random() * scroll_off.length) | 0; - return scroll_offs[idx](row_display); - }; - } - - var text_formatter = (txt)=>txt; - if(row_def.hasOwnProperty("alignment")){ - const alignment = row_def.alignment; - if(alignment.startsWith("centre")){ - const padding = parseInt(alignment.split("-")[1]); - if(padding > 0){ - text_formatter = (txt) => { - const front_spaces = (padding - txt.length)/2 | 0; - return front_spaces > 0? SPACES.substring(0,front_spaces + 1) + txt : txt; - }; - } - } - } - - const version = bangleVersion() - 1; - return { - row_speed: speed, - row_height: height[version], - row_rotation: rotation, - x: (row_no) => row_def.init_coords[0] * g.getWidth() + row_def.row_direction[0] * height[version] * row_no, - y: (row_no) => Y_RESERVED + row_def.init_coords[1] * (g.getHeight() - Y_RESERVED) + row_def.row_direction[1] * height[version] * row_no, - scroll_in: scroll_in, - scroll_off: scroll_off, - fg_color: () => (row_type.color === 'major')? main_color(): other_color(), - row_text_formatter : text_formatter - }; -} - -function initComplete(){ + // dereference the setup variables to release the memory row_types = null; - speeds = null; - rotations = null; heights = null; - const mem = process.memory(true); - console.log("init complete memory:" + mem.usage / mem.total); + rotations = null; + speeds = null; } -function create_row(row_type, row_no){ - return new ShiftText(row_type.x(row_no), - row_type.y(row_no), - '', - "Vector", - row_type.row_height, - row_type.row_speed, - row_type.row_speed, - 10, - row_type.fg_color(), - bg_color(), - row_type, - row_type.row_rotation - ); -} - - function nextColorTheme(){ color_scheme_index += 1; if(color_scheme_index >= color_schemes.length){ @@ -618,69 +606,66 @@ function setColorScheme(colorscheme_name){ } } -const Locale = require('locale'); - -/** - * Demonstration Date formatter so that we can see the - * clock working in the emulator - */ -class DigitDateTimeFormatter { - constructor() {} - - format00(num){ - const value = (num | 0); - if(value > 99 || value < 0) - throw "must be between in range 0-99"; - if(value < 10) - return "0" + value.toString(); - else - return value.toString(); - } - - formatDate(now){ - const hours = now.getHours() ; - const time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); - const date_txt = Locale.dow(now,1) + " " + this.format00(now.getDate()); - const month_txt = Locale.month(now); - return [time_txt, date_txt, month_txt]; - } - - defaultRowTypes(){ - return { - large: { - scroll_off: ['left', 'right', 'down'], - scroll_in: ['left', 'right', 'up'], - size: 'vlarge' - }, - small: { - angle_to_horizontal: 90, - scroll_off: ['down'], - scroll_in: ['up'], - size: 'vvsmall' - } - }; - } - - defaultRowDefs() { - return [ - { - type: 'large', - row_direction: [0.0,1.0], - init_coords: [0.1,0.35], - rows: 1 - }, - { - type: 'small', - row_direction: [1.0,0], - init_coords: [0.85,0.99], - rows: 2 - } - ]; - } -} - var date_formatter; function setDateformat(shortname){ + /** + * Demonstration Date formatter so that we can see the + * clock working in the emulator + */ + class DigitDateTimeFormatter { + constructor() {} + + format00(num){ + const value = (num | 0); + if(value > 99 || value < 0) + throw "must be between in range 0-99"; + if(value < 10) + return "0" + value.toString(); + else + return value.toString(); + } + + formatDate(now){ + const hours = now.getHours() ; + const time_txt = this.format00(hours) + ":" + this.format00(now.getMinutes()); + const date_txt = require('locale').dow(now,1) + " " + this.format00(now.getDate()); + const month_txt = require('locale').month(now); + return [time_txt, date_txt, month_txt]; + } + + defaultRowTypes(){ + return { + large: { + scroll_off: ['left', 'right', 'down'], + scroll_in: ['left', 'right', 'up'], + size: 'vlarge' + }, + small: { + angle_to_horizontal: 90, + scroll_off: ['down'], + scroll_in: ['up'], + size: 'vvsmall' + } + }; + } + + defaultRowDefs() { + return [ + { + type: 'large', + row_direction: [0.0,1.0], + init_coords: [0.1,0.35], + rows: 1 + }, + { + type: 'small', + row_direction: [1.0,0], + init_coords: [0.85,0.99], + rows: 2 + } + ]; + } + } console.log("setting date format:" + shortname); try { if (date_formatter == null) { @@ -692,7 +677,7 @@ function setDateformat(shortname){ } } } catch(e){ - console.log("Failed to load " + shortname); + console.log("not loaded:" + shortname); } if(date_formatter == null){ date_formatter = new DigitDateTimeFormatter(); @@ -736,7 +721,8 @@ function loadSettings() { initDisplay(); updateColorScheme(); } - initComplete(); + const mem = process.memory(true); + console.log("init complete memory:" + mem.usage / mem.total); } function button3pressed() { From 991fbe63af4bc61dfbafd6e8303d030c954cc895 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sun, 9 Oct 2022 11:18:13 +0100 Subject: [PATCH 58/69] Sliding Clock: removing en2 from bangle 1 because it now takes too much memory --- apps/slidingtext/slidingtext.js | 5 ----- apps/slidingtext/slidingtext.settings.js | 3 +-- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index e1d1c47b9..b8d254cdf 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -694,12 +694,7 @@ function loadSettings() { const settings = Object.assign({}, require('Storage').readJSON(PREFERENCE_FILE, true) || {}); if (settings.date_formatter == null) { - // for backward compatibility - if(settings.date_format != null){ - settings.date_formatter = settings.date_format; - } else { settings.date_formatter = "en"; - } } console.log("loaded settings:" + JSON.stringify(settings)); setDateformat(settings.date_formatter); diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 59c9ac595..7a0df074e 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -112,7 +112,6 @@ 'dgt': { date_formatter: 'dgt'}, } : { 'en' : { date_formatter: 'en' }, - 'en2' : { date_formatter: 'en2' }, 'fr': { date_formatter:'fr'}, 'de': { date_formatter: 'de'}, 'es': { date_formatter: 'es'}, @@ -169,7 +168,7 @@ E.showMenu({ "" : { "title" : "Sliding Text" }, "< Back" : () => back(), - "Colour": stringInSettings("color_scheme", ["white", "black", "red","grey","purple","blue"]), + "Colour": stringInSettings("color_scheme", ["black","white", "red","grey","purple","blue"]), "Style": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ), "Live Control": { value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true), From 8ed98163e7caba6ab23dc7ee59a31cd756e6223f Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sun, 9 Oct 2022 11:28:38 +0100 Subject: [PATCH 59/69] Sliding Clock: set default colour when no colour is in the config --- apps/slidingtext/slidingtext.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index b8d254cdf..b87eee8d1 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -701,6 +701,8 @@ function loadSettings() { initDisplay(settings); if (settings.color_scheme != null) { setColorScheme(settings.color_scheme); + } else { + setColorScheme("black"); } if (settings.enable_live_controls == null) { settings.enable_live_controls = (bangleVersion() <= 1); From f8f064d45956486f33f2c7d523d9533d25f97a5f Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Tue, 11 Oct 2022 21:09:55 +0100 Subject: [PATCH 60/69] Sliding Clock: Added hybrid clock --- apps/slidingtext/slidingtext.js | 6 +- apps/slidingtext/slidingtext.locale.hyb.js | 73 ++++++++++++++++++++++ apps/slidingtext/slidingtext.settings.js | 10 +-- 3 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 apps/slidingtext/slidingtext.locale.hyb.js diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index b87eee8d1..151fee15c 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -322,7 +322,7 @@ function initDisplay(settings) { const row_type_overide = date_formatter.defaultRowTypes(); mergeMaps(row_types,row_type_overide); mergeMaps(row_types,settings.row_types); - const row_defs = (settings.row_defs != null && settings.row_defs.length > 0)? + var row_defs = (settings.row_defs != null && settings.row_defs.length > 0)? settings.row_defs : date_formatter.defaultRowDefs(); var heights = { @@ -334,7 +334,8 @@ function initDisplay(settings) { medium: [40,25], mlarge: [45,35], large: [50,40], - vlarge: [60,50] + vlarge: [60,50], + slarge: [100,90] }; var rotations = { @@ -451,6 +452,7 @@ function initDisplay(settings) { } }); // dereference the setup variables to release the memory + row_defs = null; row_types = null; heights = null; rotations = null; diff --git a/apps/slidingtext/slidingtext.locale.hyb.js b/apps/slidingtext/slidingtext.locale.hyb.js new file mode 100644 index 000000000..1c2357738 --- /dev/null +++ b/apps/slidingtext/slidingtext.locale.hyb.js @@ -0,0 +1,73 @@ +const DateFormatter = require("slidingtext.dtfmt.js"); +const numberToText = require("slidingtext.utils.en.js").numberToText; +const dayOfWeek = require("slidingtext.utils.en.js").dayOfWeek; + +class EnglishDateFormatter extends DateFormatter { + constructor() { + super(); + } + + format00(num){ + const value = (num | 0); + if(value > 99 || value < 0) + throw "must be between in range 0-99"; + if(value < 10) + return "0" + value.toString(); + else + return value.toString(); + } + + formatDate(date){ + + const hours_txt = this.format00(date.getHours()); + const mins_txt = numberToText(date.getMinutes()); + const day_of_week = dayOfWeek(date); + const date_txt = day_of_week + " " + this.format00(date.getDate()); + return [hours_txt,mins_txt[0],mins_txt[1],date_txt]; + } + defaultRowTypes() { + return { + large: { + size: 'slarge', + scroll_off: ['left','down'], + scroll_in: ['up','left'], + }, + medium: { + scroll_off: ['down'], + scroll_in: ['up'], + angle_to_horizontal: 90 + }, + small: { + size: 'ssmall', + scroll_off: ['left','right'], + scroll_in: ['left','right'], + } + }; + } + + defaultRowDefs(){ + return [ + { + type: 'large', + init_coords: [0.05,0.35], + row_direction: [0.0,1.0], + rows: 1 + }, + { + type: 'medium', + init_coords: [0.7,0.95], + row_direction: [1.0,0.0], + angle_to_horizontal: 90, + rows: 2 + }, + { + type: 'small', + init_coords: [0.05, 0.1], + row_direction: [0.0, 1.0], + rows: 1 + } + ]; + } +} + +module.exports = EnglishDateFormatter; \ No newline at end of file diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index 7a0df074e..b09dc6235 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -10,7 +10,7 @@ console.log("loaded:" + JSON.stringify(settings)); const locale_mappings = (bangleVersion > 1)? { 'en' : { date_formatter: 'en' }, - 'en p': { + 'en alt': { date_formatter: 'en', row_types: { large:{ @@ -53,7 +53,7 @@ ] }, 'en2': { date_formatter: 'en2' }, - 'en2 p': { date_formatter: 'en2', + 'en2 alt': { date_formatter: 'en2', row_types: { vsmall: { color: 'minor', @@ -109,14 +109,16 @@ 'de': { date_formatter: 'de'}, 'es': { date_formatter: 'es'}, 'jp': { date_formatter: 'jp'}, - 'dgt': { date_formatter: 'dgt'}, + 'hybrid': { date_formatter: 'hyb'}, + 'digits': { date_formatter: 'dgt'}, } : { 'en' : { date_formatter: 'en' }, 'fr': { date_formatter:'fr'}, 'de': { date_formatter: 'de'}, 'es': { date_formatter: 'es'}, 'jp': { date_formatter: 'jp'}, - 'dgt': { date_formatter: 'dgt'}, + 'hybrid': { date_formatter: 'hyb'}, + 'digits': { date_formatter: 'dgt'}, } const locales = Object.keys(locale_mappings); From 852cfc029448b18e4da33857b9da25ff38ea9ac2 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Tue, 11 Oct 2022 21:28:14 +0100 Subject: [PATCH 61/69] Sliding Clock: Added hybrid clock --- apps/slidingtext/metadata.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/slidingtext/metadata.json b/apps/slidingtext/metadata.json index a639a0747..216beb83b 100644 --- a/apps/slidingtext/metadata.json +++ b/apps/slidingtext/metadata.json @@ -21,6 +21,7 @@ {"name":"slidingtext.locale.jp.js","url":"slidingtext.locale.jp.js"}, {"name":"slidingtext.locale.de.js","url":"slidingtext.locale.de.js"}, {"name":"slidingtext.locale.dgt.js","url":"slidingtext.locale.dgt.js"}, + {"name":"slidingtext.locale.hyb.js","url":"slidingtext.locale.hyb.js"}, {"name":"slidingtext.dtfmt.js","url":"slidingtext.dtfmt.js"} ], "data": [{"name": "slidingtext.settings.json"}] From 999cd369b9276d1213f43f4402c909e0483e1a67 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Tue, 11 Oct 2022 21:58:18 +0100 Subject: [PATCH 62/69] Sliding Clock: Reducing rows for hybrid clock for bangle 1 --- apps/slidingtext/slidingtext.js | 2 +- apps/slidingtext/slidingtext.locale.hyb.js | 26 +++++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 151fee15c..6397bc6eb 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -335,7 +335,7 @@ function initDisplay(settings) { mlarge: [45,35], large: [50,40], vlarge: [60,50], - slarge: [100,90] + slarge: [110,90] }; var rotations = { diff --git a/apps/slidingtext/slidingtext.locale.hyb.js b/apps/slidingtext/slidingtext.locale.hyb.js index 1c2357738..d2b0a6b3a 100644 --- a/apps/slidingtext/slidingtext.locale.hyb.js +++ b/apps/slidingtext/slidingtext.locale.hyb.js @@ -46,7 +46,7 @@ class EnglishDateFormatter extends DateFormatter { } defaultRowDefs(){ - return [ + const row_defs = [ { type: 'large', init_coords: [0.05,0.35], @@ -55,18 +55,24 @@ class EnglishDateFormatter extends DateFormatter { }, { type: 'medium', - init_coords: [0.7,0.95], + init_coords: [0.68,0.95], row_direction: [1.0,0.0], angle_to_horizontal: 90, rows: 2 - }, - { - type: 'small', - init_coords: [0.05, 0.1], - row_direction: [0.0, 1.0], - rows: 1 - } - ]; + }]; + + const bangleVersion = (g.getHeight()>200)? 1 : 2; + if(bangleVersion > 1){ + row_defs.push( + { + type: 'small', + init_coords: [0.05, 0.1], + row_direction: [0.0, 1.0], + rows: 1 + } + ) + } + return row_defs; } } From 9cd98fd1ab7a7cb564b06ac7a172db588d7fc6f3 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Wed, 12 Oct 2022 00:23:02 +0100 Subject: [PATCH 63/69] Sliding Clock: reducing minutes text size to fit on screen --- apps/slidingtext/slidingtext.locale.hyb.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.locale.hyb.js b/apps/slidingtext/slidingtext.locale.hyb.js index d2b0a6b3a..a1916cd05 100644 --- a/apps/slidingtext/slidingtext.locale.hyb.js +++ b/apps/slidingtext/slidingtext.locale.hyb.js @@ -1,6 +1,6 @@ const DateFormatter = require("slidingtext.dtfmt.js"); const numberToText = require("slidingtext.utils.en.js").numberToText; -const dayOfWeek = require("slidingtext.utils.en.js").dayOfWeek; +const dayOfWeek = require("slidingtext.utils.en.js").dayOfWeekShort; class EnglishDateFormatter extends DateFormatter { constructor() { @@ -33,6 +33,7 @@ class EnglishDateFormatter extends DateFormatter { scroll_in: ['up','left'], }, medium: { + size: 'msmall', scroll_off: ['down'], scroll_in: ['up'], angle_to_horizontal: 90 From 497a8abee4cde1d32ba60ca1070e14a8ecb8b6b4 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Wed, 12 Oct 2022 00:29:06 +0100 Subject: [PATCH 64/69] Sliding Clock: date should scroll in from left so not to cash with minutes --- apps/slidingtext/slidingtext.locale.hyb.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.locale.hyb.js b/apps/slidingtext/slidingtext.locale.hyb.js index a1916cd05..8342019ec 100644 --- a/apps/slidingtext/slidingtext.locale.hyb.js +++ b/apps/slidingtext/slidingtext.locale.hyb.js @@ -41,7 +41,7 @@ class EnglishDateFormatter extends DateFormatter { small: { size: 'ssmall', scroll_off: ['left','right'], - scroll_in: ['left','right'], + scroll_in: ['left'], } }; } From 768d3b87c333b8a5a16e66a4b795ec6edb68fdb7 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Wed, 12 Oct 2022 06:50:20 +0100 Subject: [PATCH 65/69] Sliding Clock: hybrid clock: date should scroll in from left so not to cash with minutes --- apps/slidingtext/slidingtext.locale.hyb.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.locale.hyb.js b/apps/slidingtext/slidingtext.locale.hyb.js index 8342019ec..aa47b349f 100644 --- a/apps/slidingtext/slidingtext.locale.hyb.js +++ b/apps/slidingtext/slidingtext.locale.hyb.js @@ -40,7 +40,7 @@ class EnglishDateFormatter extends DateFormatter { }, small: { size: 'ssmall', - scroll_off: ['left','right'], + scroll_off: ['left'], scroll_in: ['left'], } }; From 980bba32caea29a1e64b123da1e8627c2310db18 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 15 Oct 2022 11:33:27 +0100 Subject: [PATCH 66/69] Sliding Clock: hybrid clock: Bangle 1 need to have small minute text --- apps/slidingtext/slidingtext.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index 6397bc6eb..c8931220c 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -330,7 +330,7 @@ function initDisplay(settings) { vsmall: [20,15], ssmall: [22,17], small: [25,20], - msmall: [30,22], + msmall: [28,22], medium: [40,25], mlarge: [45,35], large: [50,40], From 712d37a9a61d79b39efa29edf4dbd0e61bff1e46 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 15 Oct 2022 13:07:33 +0100 Subject: [PATCH 67/69] Sliding Clock: Adding german 24 hour clock --- apps/slidingtext/metadata.json | 2 + apps/slidingtext/slidingtext.js | 2 +- apps/slidingtext/slidingtext.locale.de.js | 87 ++-------------------- apps/slidingtext/slidingtext.locale.de2.js | 49 ++++++++++++ apps/slidingtext/slidingtext.settings.js | 27 +++---- apps/slidingtext/slidingtext.utils.de.js | 86 +++++++++++++++++++++ 6 files changed, 159 insertions(+), 94 deletions(-) create mode 100644 apps/slidingtext/slidingtext.locale.de2.js create mode 100644 apps/slidingtext/slidingtext.utils.de.js diff --git a/apps/slidingtext/metadata.json b/apps/slidingtext/metadata.json index 216beb83b..b2c7f6f17 100644 --- a/apps/slidingtext/metadata.json +++ b/apps/slidingtext/metadata.json @@ -19,7 +19,9 @@ {"name":"slidingtext.locale.es.js","url":"slidingtext.locale.es.js"}, {"name":"slidingtext.locale.fr.js","url":"slidingtext.locale.fr.js"}, {"name":"slidingtext.locale.jp.js","url":"slidingtext.locale.jp.js"}, + {"name":"slidingtext.utils.de.js","url":"slidingtext.utils.de.js"}, {"name":"slidingtext.locale.de.js","url":"slidingtext.locale.de.js"}, + {"name":"slidingtext.locale.de2.js","url":"slidingtext.locale.de2.js"}, {"name":"slidingtext.locale.dgt.js","url":"slidingtext.locale.dgt.js"}, {"name":"slidingtext.locale.hyb.js","url":"slidingtext.locale.hyb.js"}, {"name":"slidingtext.dtfmt.js","url":"slidingtext.dtfmt.js"} diff --git a/apps/slidingtext/slidingtext.js b/apps/slidingtext/slidingtext.js index c8931220c..47a24ea6a 100644 --- a/apps/slidingtext/slidingtext.js +++ b/apps/slidingtext/slidingtext.js @@ -330,7 +330,7 @@ function initDisplay(settings) { vsmall: [20,15], ssmall: [22,17], small: [25,20], - msmall: [28,22], + msmall: [29,22], medium: [40,25], mlarge: [45,35], large: [50,40], diff --git a/apps/slidingtext/slidingtext.locale.de.js b/apps/slidingtext/slidingtext.locale.de.js index e18529aee..7be61e965 100644 --- a/apps/slidingtext/slidingtext.locale.de.js +++ b/apps/slidingtext/slidingtext.locale.de.js @@ -1,72 +1,10 @@ const DateFormatter = require("slidingtext.dtfmt.js"); +const germanHoursToText = require("slidingtext.utils.de.js").germanHoursToText; +const germanMinsToText = require("slidingtext.utils.de.js").germanMinsToText; -const germanNumberStr = [ ["NULL",""], // 0 - ["EINS",""], // 1 - ["ZWEI",""], //2 - ["DREI",''], //3 - ["VIER",''], //4 - ["FÜNF",''], //5 - ["SECHS",''], //6 - ["SIEBEN",''], //7 - ["ACHT",''], //8 - ["NEUN",''], // 9, - ["ZEHN",''], // 10 - ["ELF",''], // 11, - ["ZWÖLF",''], // 12 - ["DREI",'ZEHN'], // 13 - ["VIER",'ZEHN'], // 14 - ["FÜNF",'ZEHN'], // 15 - ["SECH",'ZEHN'], // 16 - ["SIEB",'ZEHN'], // 17 - ["ACHT",'ZEHN'], // 18 - ["NEUN",'ZEHN'], // 19 -]; - -const germanTensStr = ["NULL",//0 - "ZEHN",//10 - "ZWANZIG",//20 - "DREIßIG",//30 - "VIERZIG",//40 - "FÜNFZIG",//50 - "SECHZIG"//60 -] - -const germanUnit = ["",//0 - "EINUND",//1 - "ZWEIUND",//2 - "DREIUND",//3 - "VIERUND", //4 - "FÜNFUND", //5 - "SECHSUND", //6 - "SIEBENUND", //7 - "ACHTUND", //8 - "NEUNUND" //9 -] - -function germanHoursToText(hours){ - hours = hours % 12; - if(hours === 0){ - hours = 12; - } - if(hours === 1){ - return "EIN" - } else { - return germanNumberStr[hours][0]; - } -} - -function germanMinsToText(mins) { - if (mins < 20) { - return germanNumberStr[mins]; - } else { - const tens = (mins / 10 | 0); - const word1 = germanTensStr[tens]; - const remainder = mins - tens * 10; - const word2 = germanUnit[remainder]; - return [word2, word1]; - } -} - +/** + * German 12 hour clock + */ class GermanDateFormatter extends DateFormatter { constructor() { super(); @@ -74,21 +12,10 @@ class GermanDateFormatter extends DateFormatter { formatDate(date){ const mins = date.getMinutes(); const hourOfDay = date.getHours(); - var hours = germanHoursToText(hourOfDay); - //console.log('hourOfDay->' + hourOfDay + ' hours text->' + hours) - // Deal with the special times first + const hours = germanHoursToText(hourOfDay); if(mins === 0){ return [hours,"UHR", "","",""]; - } /*else if(mins == 30){ - var hours = germanHoursToText(hourOfDay+1); - return ["", "", "HALB","", hours]; - } else if(mins == 15){ - var hours = germanHoursToText(hourOfDay); - return ["", "", "VIERTEL", "NACH",hours]; - } else if(mins == 45) { - var hours = germanHoursToText(hourOfDay+1); - return ["", "", "VIERTEL", "VOR",hours]; - } */ else { + } else { const mins_txt = germanMinsToText(mins); return [hours, "UHR", mins_txt[0],mins_txt[1]]; } diff --git a/apps/slidingtext/slidingtext.locale.de2.js b/apps/slidingtext/slidingtext.locale.de2.js new file mode 100644 index 000000000..a4c8c2fa6 --- /dev/null +++ b/apps/slidingtext/slidingtext.locale.de2.js @@ -0,0 +1,49 @@ +const DateFormatter = require("slidingtext.dtfmt.js"); +const german24HoursToText = require("slidingtext.utils.de.js").german24HoursToText; +const germanMinsToText = require("slidingtext.utils.de.js").germanMinsToText; + +/** + * German 24 hour clock + */ +class German24HourDateFormatter extends DateFormatter { + constructor() { + super(); + } + formatDate(date){ + const mins = date.getMinutes(); + const hourOfDay = date.getHours(); + const hours = german24HoursToText(hourOfDay); + const display_hours = (hours[1] === '')? ["", hours[0]] : hours; + if(mins === 0){ + return [display_hours[0],display_hours[1],"UHR", "","",""]; + } else { + const mins_txt = germanMinsToText(mins); + + return [display_hours[0],display_hours[1], "UHR", mins_txt[0],mins_txt[1]]; + } + } + defaultRowTypes(){ return { + large:{ + size: 'mlarge' + } + };} + + defaultRowDefs(){ + return [ + { + type: 'large', + init_coords: [0.05,0.06], + row_direction: [0.0,1.0], + rows: 2 + }, + { + type: 'medium', + init_coords: [0.05,0.5], + row_direction: [0.0,1.0], + rows: 3 + } + ]; + } +} + +module.exports = German24HourDateFormatter; diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index b09dc6235..dd7d3ebae 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -9,8 +9,8 @@ } console.log("loaded:" + JSON.stringify(settings)); const locale_mappings = (bangleVersion > 1)? { - 'en' : { date_formatter: 'en' }, - 'en alt': { + 'english' : { date_formatter: 'en' }, + 'english alt': { date_formatter: 'en', row_types: { large:{ @@ -52,8 +52,8 @@ } ] }, - 'en2': { date_formatter: 'en2' }, - 'en2 alt': { date_formatter: 'en2', + 'english2': { date_formatter: 'en2' }, + 'english2 alt': { date_formatter: 'en2', row_types: { vsmall: { color: 'minor', @@ -105,18 +105,19 @@ }, ] }, - 'fr': { date_formatter:'fr'}, - 'de': { date_formatter: 'de'}, - 'es': { date_formatter: 'es'}, - 'jp': { date_formatter: 'jp'}, + 'french': { date_formatter:'fr'}, + 'german': { date_formatter: 'de'}, + 'german 24h': { date_formatter: 'de2'}, + 'spanish': { date_formatter: 'es'}, + 'japanese': { date_formatter: 'jp'}, 'hybrid': { date_formatter: 'hyb'}, 'digits': { date_formatter: 'dgt'}, } : { - 'en' : { date_formatter: 'en' }, - 'fr': { date_formatter:'fr'}, - 'de': { date_formatter: 'de'}, - 'es': { date_formatter: 'es'}, - 'jp': { date_formatter: 'jp'}, + 'english' : { date_formatter: 'en' }, + 'french': { date_formatter:'fr'}, + 'german': { date_formatter: 'de'}, + 'spanish': { date_formatter: 'es'}, + 'japanese': { date_formatter: 'jp'}, 'hybrid': { date_formatter: 'hyb'}, 'digits': { date_formatter: 'dgt'}, } diff --git a/apps/slidingtext/slidingtext.utils.de.js b/apps/slidingtext/slidingtext.utils.de.js new file mode 100644 index 000000000..a240f8dd8 --- /dev/null +++ b/apps/slidingtext/slidingtext.utils.de.js @@ -0,0 +1,86 @@ +const germanNumberStr = [ ["NULL",""], // 0 + ["EINS",""], // 1 + ["ZWEI",""], //2 + ["DREI",""], //3 + ["VIER",""], //4 + ["FÜNF",""], //5 + ["SECHS",""], //6 + ["SIEBEN",""], //7 + ["ACHT",""], //8 + ["NEUN",""], // 9, + ["ZEHN",""], // 10 + ["ELF",""], // 11, + ["ZWÖLF",""], // 12 + ["DREI","ZEHN"], // 13 + ["VIER","ZEHN"], // 14 + ["FÜNF","ZEHN"], // 15 + ["SECH","ZEHN"], // 16 + ["SIEB","ZEHN"], // 17 + ["ACHT","ZEHN"], // 18 + ["NEUN","ZEHN"], // 19 + ["ZWANZIG",""], // 20 + ["EIN","UNDZWANZIG"], // 21 + ["ZWEI","UNDZWANZIG"], //22 + ["DREI","UNDZWANZIG"], // 23 + ["VIER","UNDZWANZIG"] // 24 +]; + +const germanTensStr = ["NULL",//0 + "ZEHN",//10 + "ZWANZIG",//20 + "DREIßIG",//30 + "VIERZIG",//40 + "FÜNFZIG",//50 + "SECHZIG"//60 +] + +const germanUnit = ["",//0 + "EINUND",//1 + "ZWEIUND",//2 + "DREIUND",//3 + "VIERUND", //4 + "FÜNFUND", //5 + "SECHSUND", //6 + "SIEBENUND", //7 + "ACHTUND", //8 + "NEUNUND" //9 +] + +function germanHoursToText(hours){ + hours = hours % 12; + if(hours === 0){ + hours = 12; + } + if(hours === 1){ + return "EIN" + } else { + return germanNumberStr[hours][0]; + } +} +function german24HoursToText(hours){ + hours = hours % 24; + if(hours === 0){ + return hours[24] ; + } else if(hours === 1){ + return ["EIN",""]; + } else { + return germanNumberStr[hours]; + } +} + + +function germanMinsToText(mins) { + if (mins < 20) { + return germanNumberStr[mins]; + } else { + const tens = (mins / 10 | 0); + const word1 = germanTensStr[tens]; + const remainder = mins - tens * 10; + const word2 = germanUnit[remainder]; + return [word2, word1]; + } +} + +exports.germanMinsToText = germanMinsToText; +exports.germanHoursToText = germanHoursToText; +exports.german24HoursToText = german24HoursToText; \ No newline at end of file From 255f10112b830f2d69aea50cacaa25849a668718 Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 15 Oct 2022 23:19:31 +0100 Subject: [PATCH 68/69] Sliding Clock: Updated documentation for new clocks --- apps/slidingtext/README.md | 93 +++++++++++++++-------- apps/slidingtext/b1_color-01.jpg | Bin 25955 -> 0 bytes apps/slidingtext/b1_color-02.jpg | Bin 24031 -> 0 bytes apps/slidingtext/b1_color-03.jpg | Bin 24021 -> 0 bytes apps/slidingtext/b1_color-04.jpg | Bin 21038 -> 0 bytes apps/slidingtext/b2_color-01.jpg | Bin 41935 -> 0 bytes apps/slidingtext/b2_color-02.jpg | Bin 19164 -> 0 bytes apps/slidingtext/b2_color-03.jpg | Bin 62383 -> 0 bytes apps/slidingtext/b2_color-04.jpg | Bin 46255 -> 0 bytes apps/slidingtext/format-01.jpg | Bin 26338 -> 0 bytes apps/slidingtext/format-02.jpg | Bin 25894 -> 0 bytes apps/slidingtext/format-03.jpg | Bin 29559 -> 0 bytes apps/slidingtext/format-04.jpg | Bin 27813 -> 0 bytes apps/slidingtext/format-05.jpg | Bin 30400 -> 0 bytes apps/slidingtext/format-06.jpg | Bin 27578 -> 0 bytes apps/slidingtext/metadata.json | 1 + apps/slidingtext/slidingtext.settings.js | 1 - 17 files changed, 61 insertions(+), 34 deletions(-) delete mode 100644 apps/slidingtext/b1_color-01.jpg delete mode 100644 apps/slidingtext/b1_color-02.jpg delete mode 100644 apps/slidingtext/b1_color-03.jpg delete mode 100644 apps/slidingtext/b1_color-04.jpg delete mode 100644 apps/slidingtext/b2_color-01.jpg delete mode 100644 apps/slidingtext/b2_color-02.jpg delete mode 100644 apps/slidingtext/b2_color-03.jpg delete mode 100644 apps/slidingtext/b2_color-04.jpg delete mode 100644 apps/slidingtext/format-01.jpg delete mode 100644 apps/slidingtext/format-02.jpg delete mode 100644 apps/slidingtext/format-03.jpg delete mode 100644 apps/slidingtext/format-04.jpg delete mode 100644 apps/slidingtext/format-05.jpg delete mode 100644 apps/slidingtext/format-06.jpg diff --git a/apps/slidingtext/README.md b/apps/slidingtext/README.md index d5a561634..dde2b62af 100644 --- a/apps/slidingtext/README.md +++ b/apps/slidingtext/README.md @@ -1,54 +1,81 @@ # Sliding Text Clock - See the time in different languages -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. Please use the upload page to choose which languages you want loaded. +Inspired by the Pebble sliding clock, previous times are scrolled off the screen and new times scrolled on. There are a variety of colours schemes, clock faces and languages available through the settings menu ![](app.png) -## Usage +## Settings -### Bangle 2 +Please go to the sliding text clock menu under the settings menu to customise clock. Settings -> Apps -> Sliding Clock -The Bangle 2 has Live Controls switched **off** by default so the colour and language have to be changed from the setting Menu. -Please locate the Sliding Text clock under the setting->apps menu. -With the Live Controls switched on: -#### Bottom right hand corner press -press the bottom right hand corner of the screen to change the colour -| White | Black | Gray | Red | -|----------------------|----------------------|----------------------|----------------------| -| ![](b2_color-01.jpg) | ![](b2_color-02.jpg) | ![](b2_color-03.jpg) | ![](b2_color-04.jpg) | +## Colour -#### Top right hand corner press -press the top right hand corner of the screen to change the language +The colour selection allows to select between different colour schemes. Colour schemes that are currently available are: -### Bangle 1 +- White background with black lettering +- Black background with red and white lettering +- Red background with yellow and white lettering. +- Grey background with black and white lettering +- Purple with yellow and white lettering +- Blue with yellow and white lettering -By Default the Live Controls (The side buttons) are switched on, which means the clock face can be controlled dynamically using the 2 side buttons on the right hand side +## Live Control -#### Button 1 +Live control allows you to change the colour scheme of the clock by pressing -Use Button 1 (the top right button) to change the language +- The bottom right hand corner of the screen for a bangle 2 +- Button 3 on on a bangle 1 -| English | English (Traditional) | French | Japanese (Romanji) | -| ---- | ---- | ---- | ---- | -| ![](format-01.jpg) | ![](format-02.jpg) | ![](format-03.jpg) |![](format-04.jpg) | -| **German** | **Spanish** | | | -| ![](format-05.jpg) | ![](format-06.jpg) | | | +When select the watch will move to the next colour in the scheme. The selected colour will not be saved so it will will revert to the last colour select in the menu when the clock is restarted. This option is included to help select the preferred colour with having to continuously go back to the settings menu. -#### Button 3 -Button 3 (bottom right button) is used to change the colour +The Live Control is turned off by default on a bangle 2, but is on by default for a bangle 1 -| Black | Red | Gray | Purple | -| ---- | ---- | ---- | ---- | -| ![](b1_color-01.jpg) | ![](b1_color-02.jpg) | ![](b1_color-03.jpg) | ![](b1_color-04.jpg) | +## Style -#### Settings +Style controls the clock face. + + + +### English + +| Style | English 1 | English 1 Alternative | English 2 | English 2 Alternative | English Hybrid | +| ------ | ----------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------- | +| Screen | ![](slidingtext-screenshot.english.png) | ![](slidingtext-screenshot.english_alt.png) | ![](slidingtext-screenshot.english2.png) | ![](slidingtext-screenshot.english2_alt.png) | ![](slidingtext-screenshot.hybrid.png) | +| Notes | Straight 12 hour English time and Date in words | Straight 12 hour English time and Date in words in alternative style | Traditional English Time | Traditional English Time and Date in alternative style | 24 Hour clock in numbers with minutes and date in words | + +### French +| Style | French | +| ------ | -------------- | +| Screen | ![](slidingtext-screenshot.french.png) | + +### Spanish +| Style | Spanish | +| ------ | -------------- | +| Screen | ![](slidingtext-screenshot.spanish.png) | + +### German + +| Style | German 12 Hour | German 24 Hour | +| ------ | -------------- | -------------- | +| Screen | ![](slidingtext-screenshot.german.png) |![](slidingtext-screenshot.german24.png) | +| Notes | 12 Hour German clock in words | 24 Hour German clock in words | + +### Japanese + +| Style | Japanese | +| ------ | ---------------------------------------- | +| Screen | ![](slidingtext-screenshot.japanese.png) | +| Notes | Simplified Romanji Japanese Clock. | + +### Digital + +| Style | Digits | +| ------ | --------------------------------------- | +| Screen | ![](slidingtext-screenshot.digital.png) | +| Notes | Sliding version of a digital clock | -To turn off the Live Controls and change the settings statically please visit the settings menu. The settings menu will allow you to: -- Colour Scheme -- Language -- Live Controls (On or Off) ## Further Details @@ -56,7 +83,7 @@ For further details of design and working please visit [The Project Page](https: ## Requests -Reach out to adrian@adriankirk.com if you have feature requests or notice bugs. +Thank you so much for the feedback so far. Please reach out to adrian@adriankirk.com if you have feature requests or notice bugs. ## Creator diff --git a/apps/slidingtext/b1_color-01.jpg b/apps/slidingtext/b1_color-01.jpg deleted file mode 100644 index 49efb04817185eda42cbf6dbb24071ab1472110e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25955 zcmbTdcU)7=_AeZYR0UCbRRIwY>Aghpkt!g)g9_4n4G@Tc(xgb28jup{D!oRegd#+` z^b(5ngc=|TH$LZ_=ltILxqrO(PCm2eyI0ms*4lf`%$hZm%U_pEfa_XnnrZ+N5&%Gh z_yJrllRbO_a&`a!baVhh004jrKutmqASEJ7Vh$#`{x`lt#1SMn0A$3Hg!loFumk?k zhzJlv!toD&Pjc_yJj51AB>t|;NaXnt?F=CQH-BXe|9>!PHjxG}bAI9J?o5>v8e6!L$t zOUjjhczjYQ|0_cZ)xR+l0FXlcZ+xAIY5w64PI>>g48-S68j+Ix4~|Po`3I*I{6~Iq zF|h)Yf44(?`URx_d6ocl0oi}?N0$Hc6#YxDKkpn+O!{y7A58W?@RfgKb|RhPzjPwo zpY*5dZDRgo6XgG=H}Zd?0RYs?#HvTcI)%h+e|bp||5Fn4pY*5Azv;yCCNY!CNXtt~ z$^ZcWdrACNlE0q>sV0HFArPQ+w< z0It9JX^Hs$-`@cMlEm^4AJxA~@(N=4KP9C97o9HVU-Z`qV%hg!ZHYZ-7XW(Z z>*VQmOY(sjKu%Rthy0JV0{}oy5(@ws2fsQeQBG0-DJLlqKp`P6B`YSyNvZ;%`qPk@ zl(;x2sqFu}QTh+lzuMyeyRGZmX)M$F8@uMkG<7>-d5g@K-vA6$05kwiMsf#0%0NQK zKyuj);34XBh2-z_cQxXLXwc+WC@86@X=sTI^~5esLPkbPPIl$WA2CTn{}?Uu)~?8ycIMTfTR7_w*wA`UghG#wRAHeofCTub@`f);E4{Zeb1%kB(1Hv1jLh z^degQztkdL|E1agrWXTIFH&-HGIGj4dXbO@{!yHP{K{={iW`sgDPMTsydx1##i*KG z_@$GYSJD8@^wMX9hM7-lnIH2y`>3^pBg)es%+KMHFmW?dP$h*Dv-iP{TBjy0)$I7(`_-OGN3yhK@h5|l(c%eKS z;7W^&gy!U4(68zD2hj6UD&ZAQE&;%|_D!d&D1cu%QnmAj38Kd}7koS2daUl?f{4@$Jxop#wXs^&QF@a!hoJ(BBbP*({jvb@*5!= zpNa$QQt#(753gXENV2bd-=pjHdbnh|!(ceGv2NhpetpU4fbsKhO(ZZus6g&a!Ea8k z27=F2p>ToLog#o&aP(+GZ3#BS2m@w+JL4KWd01+u4zrM+>wWULJ=U0}yj|O$%XMde zriMWM76Uv1p=rTSekvIk;0#CVa!Mn6#X)x3&2=s4@!Pty4W@w--BoYXK2hA#zWz{p z%}#O-Ci+A0m08P{^cEkACDhPeBw(U6eSTK)(<{)9F0tU(oW>I?D?rqLb{9%TXakFHJh1m*=My)5t{JN$(7W(y*tyRX^ zBUzJ$hP3Qq)8@KD+QXubmjE(fe}3=q#_-dSRFkFF1g}?551ZC}uJ}@yHS-EJQO0|@ zY`MH=I!pWHu)15F^|K=6SC3JWS}=FcC+BTGH`2* z_a$J1Y1vVpn^L}Wkov=zv0yuj-~SRo*W$07TO-@^s(u1|e~z!EX8Q=(ko2qdWFD=) z%dui}18^(fJ4Id@adukusb85IVTH=Z`C2E{OBY0mzn2I?R=YY-MWZ)1=S=wM$gUtd z^zJm?_A;%x<(+seF=2MiX&FJAFz-8sBls)uM$l0xG*I`I>jU-Lp)H|TTpst4103(iH3ILX1iX6P<%>|hcb{ZFsgN_wpAdZT7h%xH z-8^GxTK?NCf;Rwy3@)8g_k5-n#ClOrrcvNns9gJfLe?vYk}@Fl5`YYb=~%2*4Z8dO z+>qPu(a&Cek()v%Ci(Lc0If2~cvi6X8YzEV4SAN=vC<5a1^_Fdsp1Zsk54RRsm0kq-bEZC8ZdVD6eDv9^ zrazY>mIb)Yw}GFy<$t%M4i6{Dq&0uRnwHr17O1r}#!Skx`S;6wmZ1xCF!5351src2 zsBIeuiDCBD&8Y+K(*g@mYJNj$unLUmFDpuZkPs<+HpBrqwEf@`Fxaqzi%!BO>bCZK zeLdy%2xu9YYW#@9GnDxT%SbX)uFn{WJ%Cp^AibXL#wT-pdalQ}>H|^ef6x&gTBL!Gvcj{f@W@1Zikb&d`DZo~ zt<6`%ETTY4$x|?3;MioX!Mo|Sqqz$NfjV*}kE8Pv(6IkqC#0LbKJi^~XE7*oGF02J zIdNcE0IHGv(vbIhxpmrG^250EQ{78IM7SQB=VTar2`I!y8be|rwYG_2xA`o3Q?H^d zlDawqvPyfrE1Z@*Zrpl5bW$PRm#&{L#;>M%383FNm}7jeHj?WgZ)a}jfh$`&qC{85 ziWS^pV83-{BF4ay|IG_XgBG9T&D@ZGYZai}EI4A+>|PHWhOv1R=ObZ5MI&7sAL8k_ z8O6?hkol*Jx;7>)rSKA0=!oO4HU@t3a0K$wGag8)LW(m-b62>pxZCMtAa8NEi?A6Y z2KWd5d79E3720NLdm0%g=@~MJjH<@B&nOR3UXQg_IV&`}uLsBHyJn>XQN5CApdS1) zm8zMOtf--0OMq&$qd^vI6wDw*pgNm2=>h9)gOnjjHa>FPh}|ck?WT>l zWBKe&PfmC%LqxS@*|2V?oE)ygV`1BeS=}Lj9U>TzqM`g*`OwDS?fz+sLYeVSFy~F8 zENgvs_r9&`CL}hgAkIw37HgvsNKPCnHvA)KuybZ&IEz1FN3?7v*7^wVGxW;P*VUIw z&fh7%l_NvF)3DzJyTb8lpx?#rYBD@W`kQal(u<$;HPVx2*jNUsBk?D$uwMlYd=w!$ zAI+gdqQ8!wQGoOp+MW&y7kzjk^c*8*0FxTi9p0<~9w>t;UYJtGybYG{&b4rc+2I+( zm_di?*vKXLHEivZj>d7nU06$dsQ2eS>vk7s|VD|t&`mv5_I0-{oC2!8$I5TAxb>{nr1~P<15zY(kg@9rHiDW$J|iy zpqd}6IV05jU$0T6ck`>net0crc^2xbb(i&Y3n;`R%)eVGM7bsT-n*|;+I2&TVfHo9 z>JpGY!D^S@za^Paklm8V8j@HfSN2(E*Y|P+b3eaeDJ1ap&WBO4&i>8BU}G7m6VE5g zy9FWfHzad8Q-7MCq0^B&5wp7LPaU@>KWY1XyP>Y1nmA#i{kH#h(q|>Rv2$;8S(bP* z@BXC}AC>e9)1TC^R!Hs%o6-r+bwzXra?*xIe9Pe*san1Sym^Oc=_yVsb_y7~mpJrL z=t0fuB_QKj)c1JOJ&>`ST-k+X*u;$Iw>(lVfxomv?GX8VaT;}b$}kG9JGYubE_x^f zGv1V!(`T!{A|vyyImB1FW+P*zh3Ddhf_*+HLx5pB0nl6Vuizl8zA#Y>B=ExKF!e z?0=NP*`atCu!r3WnQ?9UpBi8_E~a|^L4m84RN91tw9=&sYJTJz>vP_HP~U4u#S#Cq*^1FnVvXw>*(4 zU;&wQM$BCTzA8c?2aqC+S^QmNRmPPRO$%`gr#cf$J~$c1#m`&rJf%Wrc59)9PWgacE{n z5(J57iXp83x&(}=9bW?MgQsHW7hKqLI~9jRWhWQPR9*LkrWeO;CMpIFcDWY%pN z^5#`L?)@yXe1YW4HMN>B&o*Sn!4PF(?LR>t_Im`A;l|v3J1tPWLj4@&`*73a6mR+xGn0)gSb2c9* z@5aZ&s<^5|jrpW+G{ZUSSw180jb0DXlbdQ-JonP}ANHQi{rUyK)Hke&SopSNYUJ(z z!nHL^jyF1g!7OU}I_hG2iReCT>NK|GPo$%K0-B!F^D*?@X*GGH9lnNZ^$JYvsL%8* zB4tB;4@B)jU3N>}mB`I}l=Mys`@PNOe3$m>bV5nkfWZad2tw{&2l(!=G-CsHR%NKScZ-pZso^8??z` zST(9%4+`uKUVQ7HC(wN^Q&HyBaeJhm>NtshOFhe+n?sq1^p`#@ul%{)0h zIg8`Gia0J3{r65w5tVz$LL3dgR9abB4O{574Z}W0l(T66?6{qp%vAs5N!-j9$nfGb zxZ-`uiqK#0dvNc~ZSSw`$)$wETHJfN^(C?o_%N8n`dVIh!`Gtk3jqc8nq3|*R$IQd z$O%0bE)r__`o6EPvRI5f%o@?by*lTesZExpp3!D_;%{Jev`CnzAl#ElYmw_06#cTC zFZ=`K%3QIWx2fpc2@lXdO1Y4*sFC&~+PKRQ%9}H}Vf97&i;<>FfbzD(-9f;^PF^Ag z4#0Cnv3!jOexCwyv zQ_%x}U;52+`3T=T(T|(BA5q?cBZq~S!5fj1FF|Bszt&g1k=_+LDF9&7eDQV@Gi`rkC$2|o!M5+oxvQ`6UK7A_rkh(*Ht2q0H zhp8xU@o;zWT4SSTEMvd|CA~AiH+B8?Di)TN2^~i@dJ@0ixE(VTyY^a{ZgO*b*{$S` zL2nYawT45sAyF**!ipWqI#q7qKo*QppBGCBE@=MoU>me#YN)8U%@K7i1koWdrDVQh zc_yuFYBSFBti9R6j`LOQ!E&sgFr#LJlX=+ll#&w{ZdEcbdy^sgMR!q8tQ z03XdIh{APszJ0Ft7M2VXhDrc4GO ze8=>akTK?qi!(|-l9U*|CtQb9?V!aZ6#*+(gZ|RrHh=b~H76rtddnt5nOA zbLn4Qnq(KZm*}fPFoiJ{%$rZ@f^Jmkvg`apM6vOGGXffZtGZXo%d<`Gz|}%C&2GIn z(r~K+fw{tIn5jL^0iBBv9M<8PZhkkDIzF`G#2;q=%`eC&*(_|^qD#wm zCA}lu8}BkbRv0J9_hXcG#o72y(vS2LLAN_}=80mAKDvPQJQbcF<(dMtH0Dw4G`L=t z=|XT&T=8e5ZvHr8q%afz)W_rKi6|6oy4$!zT$PZ28VTe3&GU6JQAG@=)ryu0$Bdn1 zqZhj{cEwv3_LE^!=)l;L+DNSqbXYt62mYy7Da&h6owS?oj_&^V4%Ql92po|uL$J4N za5o#Ms_KofftZVKlT$VIaIoctTEByR!mAYi!`lre&oq((B)lxEA2FRkw`BBFo|oBS z$7D+)-WszR>Pib~Y3VvE8otxQB~ArbnI!N;fWnX7FWCU{z;#=s#QAfDH~Y zuNly7XW8`6PW~obzXW_fmNMA3^BExd@s5m%7wV}Cq3O=P&uk#ZxE5`ojIo{Vf$roG z)hw*Xx8g*J;5YCKPuw2i9{3U3c(SGltUehgIk&yQ5ETUGT7lfyEN?K7&{6b6ubymx zp4HruyBZ#M3E*F>7u^{|El%g4=o3|_!5WQY?j3h+&G z-9z=kk@(g#@qudAmhjiqC$-3{VxTZ)EB&slxE=$WVS^-r+Dv|aez+gMHE&s>aT}u#5O|{5*OYb?b zMr(DyZrc6V=PN}5k+{cO!u8^99*@of8ol$?&!jeDA21|G561g|xQp{wr`8z7B?}*z zyM^`KE8~qD+qbXHmN5u3Z1PTd6K_x7+s-`$>Sq3FHuu=)z&YaNd{24cv!u8~^nJ=9 zRvNZwayZ+1+ZLf`*M6bk!-r)b@y2ZvsqM)(b@wmq(t_L`{gwb$1)7$yAK|OSV6v2h zB1u+b{@U{rdo$aQnw!S<>n?un@A~IBv(Fq1fcP|*@)sWc@Oi@LvMIEjo_75a(|OS{ z94nl(3n{@#v|znOdl2oJ#s@E2u*reNmY0Ckg$A+xv*!(q) z6M)e(J2zx}3HpkAgx)a~@2WJj%r8ah-t6?r1^*ljhki)fb2(g&1KsR8XAI^qng#ip zsZ)HYx}EAGB>0eegF|cSs1r4djqbr^lB8jjEzCeZMql0e?N>(YGIi<#rsrjUWZ~I5 zr>m^OjCGAme&mgM`b}0sig}aynRxZps zpU7sOnlf0NTy{VHDUbzQ+pclktI#Bu7ZJX!s~1klsep&+R#pD#fkd=iSXWkk13S-2scGQLO2 zJv8%sBKt8as^IfcW5_%139Dmeq^^t8M5+A~^32;t^ugiL^EN=5O|UX)+b-{M>?7kH z>U|r+jp#|?-b^)6y(=;7o(R((TmJkm-;sACIn8%R8BQ~CE%!M$E96$Bj$VoMUUzheT@S4`wG6BJ_V!C2JlB2mauO)o3er2S*UcSjcNqT_& zR*tu>I%dxxzoe#EFa-V<-_F;$hxAUGEcsPHpM&lde|kI6%Lkb5$bWBZGIHJYbL7vX zVO0);GReova7T1LbZZuG3!U8oSoxhb)*rByT`>s66cFkMoCOFs7`_{qw>J-(I; z_l*Sqpi1dh=ev%LpPM4hlB>-hYCGU-h!z$Z0e{6M)eehRVF;U=GGVZu*R;=0fPK%S zGy9mm7c@evS^aeNUZxZO;}>dbzEIStSTXt$7loR)NpdjfTdpV&_r&f?Un_3ca9B9f ztL_U!>BoZdu{Yy4d;_#JYa02>19S%_)lqY{OAr$8Dh(r~SN@2a@25V>UeauSZG0YEX-D5NACqXEIH6W@4M&#b3XEUcNm6dEA;{DpiPR3hH9>+g?-Bh~iK@bqi^VXE;F5I$TJ+w(wj4NO9 z838jM>3;Gs1w;tNrGn;4 zx(jDpVK>^eGb*V1QH}idb$#nuUEa1va1q)G+zQty&aXuUr;<$v}AjN zIPJf!SKeA;UAG-s&9LFwLMFjPGbU}wZgz(Ku zVB!LSb|tM*qO@>jQM5BSv|A#`(`6?7pcv}4aq4|m3D`2a8h0VHV*D)3&2bD0K@-Pd zoHMcWWP&EwA=kl5==&@W+;%JXm5e_d@C@ z=<3<;*WYAoBc7-s(s|@p5A=?3u5VtMaEZ;!5z>DLds_;#N`6bccEAvxIzDxLqI{rl zwA}iW;L}wxz7cx$62Q7ev3EerCotF;-}-vm#Np(GXSn&z423+>*2PZiRMwQ`zP8j? zW+WRYJ}mw2o?589N?IYe#=Qq`Ccp>&l(!t@cgN|Ps-a!0_lJuUpK<3$=L64=f7G~f z(p$`ra#GLAT{QQ4XCECj5L(F-ISp)0Qh|>y0WXoiASm12SqyDAgjR)|=ZX%BhYrNN zvBK2@OTd{C=)bmqu5XSTepTOOshxLN*~p9Nekoqfxp|4Oq*Bn3MxEkx0btCf$i`dPH*B2p# zYqgVn?+7&9lVU?_GBp=+phMkfKeQwfz_$-p=Gsr{{yJaECcK9`Ceh&7v6z*`BuFE) z)0S6tDoid6xgdbgg1Fd5Yr9{m%!VYkF$IMHXE7va(x(sAJWtubTU*bnhG#2krrX>+Ow>m0<8C}&5#5=% z@CidgznXT#W3yi&BH&K@tj^rbXj4QI4Tw9$`i5FZzP7R|-{^xq7{#GplMKo3YSWAR z7P$sO;hddeRhYyI-)cxF)g@pl*+w==xAhH<8{d43Fy0)k-PDq#TR%z+STdT2RtFhK zh%7&Uuc&wT*Pup4Q*G(~qU{XN3eR`j8R3(a)RUXoj)rrVZu;oxW#lgWf)8}0b-O*) za^#q!B2Vv0Od3F5ht9#tcyQj_#o{#${FP(%j=XvMWPj zu1^MpB-V9hCWW&Ofb=pLmIMh-zxIaPD_)S{BzUus@o0zB!b_X*TP=%h{+ayUL7=x)nE7+X;2 zz@!gnqKLa+E;0p}k~-j3{7i}=$z->)0A(l~!3V^U(FNtx-l@mz=tQublD%5p^% z$2|5JL;uYa>%4pSa0Sr?j}^R7W=dSKjf1#hgO=YpRVpn5i zW1L-z?zyJeeX>|5WsBB@-w5mEAr;;66MZ|$%@FIygZ;~+O_j$ub9ccc&*y1iaEdmg zn@*DdXsO;BMRgoX}eS0}zD2uJuDE&sq@Lu9r0^E=i4b&74&K$_^QhBZ}Kz4{I zky=gtP4tB9do|d|q%d?|V)TUw3lIIoof5{3Qjs~wodXOsjUe6E_As>{$y*AjCam+! z4T$&0V}6?69l6$>zCFdugvr(B+a7E596vpPFKdtYfZ~$$6Lp1{6YLYlU;BtrE7KoW zMMW!r;|jJnc6jPT!Qnw6=DOZIvYGz^;(nrth(WpXNK1$Tl;L>+Dy&USDWm6;!h;`p zpO`kq(MC5Wu1n}LKP>j7ncH=Hts6WU7+a{Z~C_HJ+{3F&q;WOcwbOeS;F*H&5*pWarjqxTh z66T@T+&vx;hKg}oqtZOl>~C8c*yoW-u8`-N%HYP@W)j~^fT)OVJg7efp@iNRhq1y8 z(v<5&M@COqiKm&MF0LC@$>%%(2cBu1VN`0^uKLa*ROQ_zKwu3bnv7q!(CVq3YC`I* zS(D$uz3bIeZAYTaO!_!^4>LNEoQ}A-nJ6(T;od#Qe97Z=_;9v?r`>s!_ZH-G0$Y7B z9Uw#9hpL_-1Q2(7@L<=)I@|aaQ^%yP0QSHryQ?6zM3&Y}G8oV`iMVim3sI{rrCqfL z=mygeY=BN8Pq%G3I___g<7&aG<1Z)!_C&xrPs1qYqmOFVA!JVF%?qN;gdV;QpKSac zwsu#ah9=ue+s|O!T)U~$>scfGUk`ZwMZ$37B zIfoI$N}utiVZww#;x@l*cn2?-6Kg5jTN5Lz!ZwBD`3RPYSRm}7x_OOjBX_SRPj^Xo zUMQHw#%K&In>8C>iJlGv;ERDvFyfFRdK2u1JuV4Db_ifymw+>Rz1azku{d!IblIe= z40peI68xy#B{(m~Y_==Z-6uQkC1GoL!Q(2r(p$+#;v37_KK73C*%)!=D2IQ^o7CM@ z;dQZi*yX-LjH9UBZM=2Clg5q@#(xC510!4DIL5=1M_AXui-+J)45HKa4ZPl?kaCw} z88{=&3%u3_T+xv=X&Gyi_bz?-UP!q#FGQZ&_rYqUd)kj_L*l?}j<%7c)QncdvSm2#X57?CC^q3ja;xJ8KG}^x--BK`?9NWwA<)MiLFr;F zb|3hQXkBv&sSv!uM^dv__lfxq%dp0<>jqCk$1UPSo=5lzX=K@{SP_jmH^tpqtPkw* zB**HR;j`Lz!!ee-UHKE@3?5?y&mS_J%jrc)cI85UE(N+u3snK{fm&R(c77 z6_kyFFO@>;i0;t-Op-C?5k7Ly4ICPXs)DTW#1~AckhrPph{4Md==GQ*S-AFTf z+5D-5Z)~lOuQ|uL4xDJ6|B99Kaqmm9Cf4yXw#oEh?YXyBYTWI5uM7;*Q5L>kk92oi zzNE2;$Um`Nrw?DGgD(WcFEqeF?6O?}sFi3Vu{Ag{RFwg0B{NcqYekfE3wo_y z$L@QiUXl(sXUd$mv#)EJrRqtqsIob`+Kizm5=f`Q21Xs-U^w0mk))n%k>bF&J4(th=U9=h8IIT&H|{qbR_&2i2vO5-5x>6# z{POLBQUV=B;}+|36&7Qacnbb(u@NM!!Pl{o%X+NWSh^r|{=)DW!d(mnbj9;}u_5CA zjDk9&&){hh!`l2)`>8daPQ0Np)|41fIzVs4swiTi%M;Kz5#pd0Qo{g3^agX+!jj0V zl4AYxJT|nNzfMqGcix9B{Kg*I&!uFM!+}2*JRIX;kp<-!rWS|#74)tTOxfeSQ%`xh zjYFi)ic72KQa$ilOiDH?pmQv^l|H&gEq5)tjFVr*>4N%R?{yD%WQNjb&kX2SaGY3n z*gidRR3~?z_8WW!Z0`-wjJQsFBYUr-rpmCpQY} z1LOx|sG^?ImFtF>-a-o^$$5g02HzR3X^E-#c_+b2ypeA5OQ-$A-nO^9eZ8x6=i!En zgS;+2rdz&4o{OK3ctDeWm|erY zn!6dcQ^#B0=T)Dfy3O&Cscg@~Fnm`NRqEGIeA2`RUvsen1)Ah*?9ye`wtOUt?Z^^= z$STmBkX`af)2uMBeXuxdO^8UQGGUR%V_b2){pVTp)usGtq;l4)E)wNqvnJPA5Kst^xXve;;W<~ zoX!?=i|qA0Q5ozB(Y@M>Q7TNei3?8mk7gfn-sny8^*In7x-H7v$K)kb6&ilwO0*kc z$WksbTmpFoosnFT{njqI!UtsuqryI^KdqY}D7of~M60zNOs+48Xg|$fE}E4RX(o@& zz1~$Iedb|@$hzY89e&lc$hcAPS?a3IP_r~e^+rGqAGGCk)+p42R^Ufjxp}%QV~X+3 z^~u2n-N|{23+U$#PCW74gF{&dCzfSJdcOxrV~!0(H1yy^lqdEE+h45Ql^+rLCP5MP zaHQq)6>F_yiuS{0XfH4d&azWe)4>C((8Y*!Wci7RW_P#L*S&o#)FKhZMt4j=1NZT^DGGFn-8YjwIJJvL@AjI?l&H;K7vHTQ%Goj0l zvqZCTU=-`;aJMO~S9}c8#8Wjx=*Ew$vl|zK9l(H@-&m;{Z`^{T+XM%VV zAPNei5fI0HPAnAV5AX4OHJ?6!0ooer4Xt`CP4v zzqc?jP%<>HLvw*SV>YGwr8#4GhCIO(oy7V1gWHUYp^jQw=ACyLDJd6P`t_@6)pZHe zc*>Q#Y*QH&%qBkBr#0>`TU|rBT5H$ftYC%~>=W6O1o%5CAQ#BBXMuM7)lcxFg6}7j z2i>KU5BJ#S%_KhG>is1r$6AvIR^49zMs+Ji<7CyL;|spfvqME4rAgnbBgDm_m)%QT zyiY_$t~I{7llYLcsdZ+!nG5H)8HVX;_u`&ISBno9JiA6s>fIonqO$|$ail<+T7j;v>h!x~qS^djm9 z8+0Pp(yO8V7Xn28Y(DiQ70c#~rti*FxsF9vf}f2lNu!b74Vjyz+8P zbY8QRt>wIYK^2`PwI4>N+m5@$quS&@(3IgSVpvEQf#{hb5-k>*pNSECaKiZAJ)&#n6SP}*L0`UF^!S+ zA@hOVHXLHbg`lLT<6!ka9tJ~^`bp9A zRD`$NdyBK)`2rfg7HXEGKq@;g$S=@NM{8+`Xt2`BC^%&;b2@dx+^3Nr5~cMUCz?=_ z_riCll_kAbH#Y~SubQ2f?F(}q_bV-;D$_D}m&atkUOE?~7ex#bOlO`1;?u!gD0oD^ z^4|{P4D=?>5)HQ+YZDGa-!#HHu3!laE@-p4Ukh6;VR_yGmR+Md&LvW(4WIFaRT&{5 zlPAJ03W*y8>VyKY3cj3pLIx6{!jDB^9QE+YDqMuVZ0K%FmYo$T&|-DlTKluDI#Gttgh|_4$Zk#u=CK7Dj$^uW(c3|bPOK2< zww=B>(ILO;M{_v zHKOt9^|bUi)h~2A3(N?E+9*X^>XzT<(C<0df}}0|QcdSZ?!SA^-L;eWSMM`3HHP%0 zvMj{yq7SO^0=iOZ#v0Q4{k}c0fnE9Htw+;f36po4@@8jOTa;WM@Dy6NjP^`q)>f8i zCy)83K|-1Ci_l&$*YIET+4!_;e!3f+NL*);WATw;lwpI=TKFytCUDsn$EdfG3uOhq zn!kzK=(df4kXQSG!mfh_719$5o4$_wb4@yovOW+nWTbQOZ+Pe1Or_(a3$yMaZX zcoLtGW7yaN?HKOy3Ncjpn1`OYdGEIPCK(iUuyShnv(2@dc-H(95L3t4D0FUIQZhgP zec`b~8K>946bb4=m|AJu2H#E$hwjH+0=_Kn#G>g}rn*J3f{t&2%X)<27SB%GSU5f0 zfl5j8BTfjLc(SrMlxc45;`zmeLH$H-B{qxgsewj`Rx8aKn1Sd`z8h1yLiDc44?H7P zXfQi1dOI+54bf*M4HLma5a&@zp06-D-&+>yORP2<(EYC7_ZnO48%IBWK>9K|WyUcB z=agy%u7N%2r@DTgjBg&`t<`)YlIl;s`lYSGWZS7Obl7!uv=k17cOO%)kh_kTMOT>4 zRvMe%8~2=Uxt=II{dfUfrg!QcUrQWWk2Tw)4Mz9(>gH9) zvqU`IN?lzm0`B!$$Wu`9TTk6Ova_X6=w3o)8=nN4IhyFrFHXxhG#l1K1-|E1eGC}K z2i_@)hovkPWy@f+(xvqqa!%rC^BMyK)JLWdnWv7t<*9Wi$lxx6AG04a1XAXG_jKGgfifj_sgWm5uv6mhf+200|zW{f{+Z*~<$nHbd+bac2b zKbzdN!CNDJkhSJIvr(U^c4|$>P!)?L2ZYeoCqO*weSdO8&L@5!{JJg~8QICYWGYb6 z`S~r|W^8n*;jfhs~x&U$LwC$cbCiZ*rXIt4#oxVxTOmB=opDkjCh! z`mYB*CW^L5>;c}RO7&01F9D9CRG<`JMwd~IF(>wt zjy-uLa}wk!(OnTnPo30b5$MAca}0c^VmSm#I}3h*tzBu=i&+qCYW`W$g2~G-p{i#a z+b8_|@-W`bJvTZ+&4j)V*X7t?4e8V*c5%Jy=3v(`oHmB%35GW8XBf>`7&}fCKGAl~ z$)9H@K|(mkRl~0_!t7<;d-agOmcY2B+QC+rw=_VGA5D)Hs&dB>`gzhiFJZ=a=jUFT zUIVVxk2`B^w(n$|hc>Xtb|S7^l}cSd@qW8ImEqlRVPorm!BYxH|Ft+>)M?9Vhlh(2 z?({Xx=tXw0{x&@qJoxc-&Wd;#`MWv)RG&nTiDHNZ73&~Fem(vgp$k|``R2$rVv)Q< zq^k_!Tj^qZO{!gsFK%q$L1Tl4S!SWcztG5>C}pWALfXTZ;81VcM)$MUH&ANBYwjT-1!A8xLtO2~;;s~c zZ%+YVw978>M78mvH?&9H!|u4M2)etPPCC?SRDnN;4D6YDb3EPaCZ}U08xIp)@la&3 zX?XE2-7M6+)x2L&md0ph+~fd!Iys}bFbULHR#JA8R+8bEmQ_B>=$F@=Uzi-L4Lo+d zoI(qikjn)19SsYgZDI?TZC_gi?iyaGCC$(pOx%}BP#_?B@~@8gecIy$m2RCZEDncv z3)#PnARUM^lG&Kkupq?k9j(i=x%uYOJv?Q??GmRd-8K$j6hZknf%jnIKF)nfBjEGE zS?#8&-qm7aOp$+wM<+6y@DQzi9m+U02$N;8iT{`#km8*tQ1tuEPBdc@Sd7ywUU;O( z#0uLff6}_^tfoIjSa2n+zGCn z;C-~8J?d)Gk|mTBpx4?ywl?6sn$ahlrDC8yZ-IJ7z-UtL zJCe48$sKjG*R6G}p5*7Nd&G;8$dmgIU$MzJ+4Iw=7Oh@Sl%ePJnQMz>pQOO zLqB84SBJpPaAk<3vg1|aT(~{;JFR?x!3s8Dq@7o!rajoqSUff5D;&C(y}4=#ed$tq z+|T+um~3p*xcS!7YA~H(!6AaXeaq3JXz?6J$tv=W;{_!@i%K!6-ekl89dUSw(lNdj zIaRm{36AVM1tvJ|Ixb>FI)U2+>ibE_uQh=d@eH}pv3LXGDbVw+wBqCU;|9NKdHC$| zm4zKOJw^4uhPM6))E6@V0oyEkV?pFM&-|;ZxWGeNo$4V?nXF3$jJKhIj-iird=aL` z@W@fO)}g-srJR`Ht-N1-!;%&&KLEm)&(kgC@5kIo#&^r2VyG(&AuKe(#s$qxKL6 zRxTazWKc}IVt$7?W4YPk>DX)&Ik!5~M)2|H3+>mBXn&H8P1T2VPg)u$0(eW+ByFBl z&U!Q@zn-JzZVRl*|32B4m$fr2gh<(r7m*sAjZlpdu`$paj2FZSuebW_vMyz@I?jsx z40C8dU3oPy{X4}nUU+e!A^CNf+s$U|CBR>A!$!7XhGWR!``p#&789?afwBc(tVrmv z;ob{=1KWutVa6I0DHI-J1N+)@JxbW=;mqv_Ike*SB4D*^8M->tyAqqEI$EV#KMAWc z-<)(A;IeRi_o46&!!PY=al8EbNFy|6B=+;w7=UyY}mANNAcO_)%U zLab){^1Z+i4Z>yz9bv$hQb`nDvuyjehImF?6$7S)sh9swaZ!*8Y|M5j3A~e z0E-%hQP^XF{(UP}2vtUV`W{HH^CqQCMR?y4H#e(ow%cvC+i$yV-@9k^zdT{26_(ao zXtvYP|Ip#@EixFW+n$*nYw{=l3b*jtwXcL;68M2{3jL?RJ}*m4>B?b+j%9K}F8hjRMy+i2+Rl}zPo(R1 zjeu=$ZDxCWxX9=+EN(#l>n{~T#_JL^Y{7%B6b?2K-`~A|e9oV>q^iQrZ*}@J`9VHO zxG@%Av0O5-{oJjCj-JMtmA7D>0Ri;X>N9La};D}?gD$$!i?wo^vyQN z7PN@t{#gw3&q}l9DC z%l!NC$MdHwJkbhIbWZ-DQIK#z?e9ty0uN8tqy#89!6$%w(t4pew)7kaBL|FfJv}R-@ak^X^kf*z>XzW2 zZ#8S3LOB@g?_IBfttG$lZ-?z-Uoo3jg^1~puekm|6Zlp&Wo$g;x+nP+NnWg1nfj4u zW>(hN;{(cE0KUVg`TqdxX~%2F%aeo8x7M_5?aIdpI0YjKwDZOXdeK{7x-c+#IIqZM ziHqueFC>h_vkWpp1RQnFM@)+2?yYv*NrlN-2+z=(^sS2;l1KqTE^)xFV&XNLN02T9 zlECft{{SMsZ#l#%K|wRu%c;1_nBs3@32iIz0F3dBXX#!usYDA%a50kEK9%m;)P7yF zs{`}!J7+$%^WVfBZr8(FRqmlb%jDY^QIVE%c1047?Cd}u+}EFggsMqK9}{*xX}G9e z^gd1arK=4`#4*@HNQ+F15&}W}?3|JH3xWRt0;;|b*OwetByg*>zs&IACpxaN*CXjO?nv)m#&ny=c&}sK5MkI# zx%_e~`WOEIgM9u0PvTG7E63j&^-DOW(ta9vC3GzhP>yAmIW-MxQf?FuaM3|)3ul9i zlV8qivO{wN>Q+M8x2bE3NW7Ppd%xW;l?lqqz?^)ilZS^mnJWTzw+v4R*aP8f{A!R=pxc~H zpN4-Mzu{(SaY_FG2&cu!8&s3Zg_aFFSh0dA?_ne^(dWRC+^$YZg5Z(Tzb;Zk8zU|h zWF5!azp;PX-{2*W?Gf;2#UBr@t*ujBF@J1$D^|IS%{msZYzx`kDHtFY{o8@VM=Pnw zBp>7Z#M%a{;ca_Y@aKp$>GXYXL)7Ndb$uS>k2_7ew~?Zr1|uNtWjG+=l&cJe2EVpE z9OE1}6L7?Gy0iZPYQm)nC%cB!u+V?!l z*?lUrbuVVmKsVZc2{%v-bv|cGg|!_#0zTCndkmlR-nc>e(vEY_0=g=3HX=&Vr60%q z%+^;+`I*=@p<$o(%6aS>qJ2utawN`re59J>=&mW}c$u$-FTB6(`d!)6ole`a{SGQ0 z?HD*2WBz`%&rw{@G{rsIG*~K2W2PFUc^D1##tnLZ!W~`&_=VwvDn8Hc5I7)mQL&$D z@f3UxoRinM_payR_OEH7c&kO#?}HnA3(-8GMos`D`qw5mFvZIWRxx_G$t^mx&8XpN zD$#P<=>3|v)gxs)c1VZZ zSFA*VumYaB&U5~ISK)Kaar7qX){{@ON7Kg(MporSj`B@`j4loro_@6uhvg>(9C9&{ z=qpY*h6Xy0-~DQv%Nt9Q6+p=@FsePzrFr!+j;y=0x|Ib4d3TB#V^)NmZCvgrCoDQ* zzc{`#c+Ni&Ywx0IR|Z`pMYt<-D!%CNuK?KOdZb*S^$UKq=zhoklUQnmgS<=_0i{>Ph-uAIG%H|zdJ_lB(@j!*4Nr%0f+lgP63RJvT< zu*_?;aztbIjf~^vuF62sBrU2ylZ06AB-Cwor`l!7K#D-yFHw;AKQ%)Tw~8xiEEX&6 z4$Q=wWF{iFo^f;LT*`17H+CV!i^kFc>587-8=@R(3ofA9aQb-IZ!f25K2$rfk^z#t zmj{8JUmGw{U2NZz;A}n;=Lope;ai{;lG1l47Cey5qSFhLDMe0MgIT^?~1iY zOMeS^M#fwLB=>jH!z_b#Vz;qC@rdrki~V)}%OCJgeGlPJiM|;8Q`GgHAH)}S))M%} z{q&oJ)T{=%e-manW>bca)ovt>NdW%sI0RSow~PEwl*=rsl;Wv#sYSIWv{F}5QGd*? zn`+5MQP)>**LVjm#n8mZ6$$e6Yr1OhPS0iLo`>qZaD1rlpzj@q2>$>)Rp?@jVD0BP zs}aPZLW7J9E>3t9sR_>qjO3C(O8zfY-St0d_Kn#8()5|3exNIH!NyK&BIeoL9H$)) zI-2X=GmM{3ql(O$GBcidz+82&^Ey&{pW57!Jnrh=L}qQDAnH5g@~^?a_$rs|fZBvN zU$m#g%@Gz`3np)iwl)wGHN;UYYj3Wq4!%MmhUkHohs%)X$pXKjE1Nyw#Apap+Bdd*nIpS;ZMeEZ-}iH7bke7uGUeB^RS#HFaix zD`xp#GbGF>fyPGDi}^Ltr`0v8e|?_Xv%<2DGI+?vVBA2<*p7Sm#cEsJ75P|_qlGy8 zzgn{-VnrMePLJ=QIXe0annAv+Zib;X&qeJLoW1cR|Hk8fJjwO^E~bLh1evx4iI&gzhcx{98OeP1Lcs zn``0KZbMIw45S>aInP4a9G@BZv-?%v>rvcjKMl&L01nDH z^cy>Ir^7CrrQIx-5ncH{DAb@$@ZEsBzQbzde9bnQ@D| zs}L`IR~v1Gk=O>duo%yha0HTZB)H>hZLI(V(j~pTK1JQRd8}+C-6z{Zr!DZk>$|A+No=0F8X!9#0 z{t5B>1pGk#x4tmh_*YNT{6nJrHt^o1YpQ%)_@U&kpJ{1t8gE-GQs}~KnadP~6O>)@ zyRO()U-S(4H}IR`@4(-N-Vpdz@ZZDMej4y!g0yIKT?z}Mc^u`P&n(PI zujii^d|IQzG5*8JoM(@foUf{-2hvvia?;Un;rE@Cqkq&mD}v>lUo*^8SatBNoZpxC zR=0g#i)Mcs{v7`Rf_eV{!AAZSe1G_Od(JsH_3$l(LNaXVLTJy{S(91+D@0HwXLGfs9Imz{WpX{{S+SukOhH*f1X1aCdj$4&UdcW!+dQ zP7lm|>#362j!pp`dev5dup~GWngeriu-N@eeENri;wLgqrcc&;IP;TlC+{IZ ze6}j0D*RrW-Qb!_cQ|Mp67!57%lcRL{{Rc|R!znkRC7$Cr!*dti_%b+Sjlv1{%P); zO*j16on$!vAICfvJ~n%%wTzc^`+h5`PeRUB#t8S?+!0i#vQikS=hGaDcrHO;xngjH z<(Lfit4c}pN)XY&ptH(+reb)&Ute#`*S@b!+9#0GdNZDTW{i`xkVZOUnXvM^N$rlc z(Xj+5WMwR&lsXVt9*i^C9lbiww>C{$@g^Ik;#KtRed1vR^-rSI}h9yF(f;Q(Y z4i8~b?Gsvb9BDN5Gwk$-pJbO33p;j<%#9)zp6OSpf-bIl^TLj#*I5#zHdf0Ozu9yh zQq^Oc44L%}URf9jjl=%{61IL=*9eEP;MGfg#@;)~(95Yri=|tak8Q!n}bYJCOSH=K{GZ)oI-7g)-lfawfFW zZs3iQ*fq_HENdKA5!(bFb<_8gc~Dm*umiD8=VWFE& z_;qdP!Q%e_68SB>-0M@W9?mH^0yJYhs!HM^!T#}o;GQ1=r1%s2ICwit)O1S?2gF__ zw_gg0grywbrlb7v*>Dra7mUoty5eXrtvkVStTU$*D$ zXS{{R@Z{{RTfWi$9UP@VPf0&9`N1Keq{xy75wfEr5{Zy>43^2`mAS@!<`YqQw^ z4*>l~%72}HbpGG}0I~cZw7ne+mA*rbID7khDr$^xUY@b@ zUur)!x0+h&e;kiy$X-~zXa$vedM#P7wy7rptiFIY1?HRDu~vMp6or z4r`i&%W22kB3X=)v_EMI1ki>7Lk`4_F_FhL{lP~YPQ4{o4N5ItH13-3+RXlFtA(8^ zj+I2?B=&1>UaRggW|X38x4XBn3t?{8F`KDWF~Qp>+)@>K;GBKXI@d0@av}TK&s?4b zb~>eoETgftmUeiqUVD_eZHmlzLl_?~+yE9lpJByvQt5hvl1-$?j{x#G1Pes=}Y2qCp!u}c3u62ET#2U4pgQMw|yFSx@d4F{c zjh(bxm??RuxP~PRRAur=P|UnO$3g)GeRnR>J-Oz+H{lP8bx#F+NAPEg^j%v@(DhFY z_`gQ+Mw_f_cGBMInoZ7`tXN-L-cJl*yTxqq3FbxRpoVY=BoOg2<)JxIOPwt*x6D-A zl+|Rojb>R{{ZZZ`v-p1dX}f*n|E)Bx4#&s@b{duZ@3WK zLv^HGJ6h)8%@GqE8RQ#R8GjP}qW%s171BRo{{W4aKNP+c{15$^d|jd0-d}ik!v6pQ z{xMwmpF)vEyjND&GFwM)WQOKzg=BjXZ#vA8A!cIcHT(lE@dG-kio!<|QZiL4LNbgY z2JIt+b5GcA5kFrhtv>joV1hWh{^)U$i8f9+x)j67g5xZt&!iS zdi0G4LDn^Wt6`?gGJh4s?v@s*p6@J$MmzL1`u-}bh3@Q+mZJ-=bsWBxBv9WpSFI$L zdV)TksEqPsn~mo^(e}SSht{dVr|KJTbU92(t>`zcCYvqYz#epn7?qAA!z&_yqozpU z_V#c1R#t5)9cRT_YLSmR-@2q!*SjqVAcc8>2-E7DAx;iZW~IpNE6pLD?~()rc*L7xiu5iKn}n?q)bq@(h!;M>s{osNg6ZSHJu^_~;m1TE7jxX(6+DoXl2=r!#Sk~fP5V5_?w%IO5{{SVB6P6YI zo?Bap)g$uJ6%-4>=pYUcyIPy_-$=>Eu!6gO!1DLYjfjmZg3rN&6BZav~UTu+_L7le~^Ah}_EnoZtGbiYom zB;BuN`~FLo%Phb~jMb*~m#=30zs!<2K~c3vd$&!$O45xJXv*>iGyeeAsL*gRkA5oh zN1jhP;IH+shCP^G{zO70IKbfZ$ib`eT7aOAO+F}tDN-cf&7Jbx-`pdGSL z10$NasCWbrJNwpic2+}4y@-rU$Rj7-plfXP{EcXA1dcI|tOjaMIcy!c!RI)vk$jqe zU*=)8rc~qtI*jxmrDI&!f(gb!KXmjtuFa!dWCO_S*nSnCG(dy$vjhCR zYu*Oc^esyN07=xe+s!*r(=M9NP_Vp!+TK}AhYu97k@B+l9E@@a1QY%EPiC^l$jC8_ z6SpJsugm`c+b{MB@Q22+apOMF>xgF$V8?nyU7-i2=2^IT~ zhMp(SBBvaWI-7V;`FB0tKkmM+9lFP*)AxTl;_eQon@Q#vD5Z$|OQih#rR%@0{{YD? z^_-hkytXo^*!+FqI#xy`TyBm;_vB;oue!c0e#~DIei%)6{{RU;h2~f-=P`{&%!`W& zhIlI{7|&cV2EJOpirU&!1h%&kK5>a)J2?LUYZd)FmFJjD#)_?jsHYB&Ej9Q*)cjX4 z$}8Zix_Fql%d`qO${qtEt5Jvn95!CMQhLrn#|!yc8Z-sv!I?#mQ2 zA_9Ne1EpPS3p=US>h3XnbTCEcr8JtY;^6KWmS%StJc15INgaxfz3>Zgc&!L*B5W4+ z&&`2c^RFj+NsHOO#hW z@{3qg@axC0uTjwc1#4QR{-3FMw)w6S&T(~Vq*+6=PiYqgOpb6{X~7(0AXQxp#_MRx zG<^qB)MiEkGU074nEwE@a9b7hr^AhV;x~yk*dJ5T{4t?u3b~dzu4U9UTak=mdLkU) zl5^>f_465)VUNSol&Gk|TYLN8F29lPVQ|<4AH0!*(ZWvzv%e!@uP6P6 zzhm7W$!%+EYY>76QZ)*ysyF}u03ESk%w8pN?P`?gkl^I`o|PYyUk}Yae6-hF zez(H>KMEYVon^kUU;B6YefBy#Yhkb{M%n;DgPdc%Y()mlZ6^eGUX+k24S=Aj;Co`V zkx0PU4o5gV*Wpoot3&OZl%Fo&*Y(tjD2e%lXP%g?D5K6!dwPHM>0^r=k;g;)HK!UO z>C~QkP~F|jO3KAGkAsiT*Y&Hh33JcQ>Bmp6>sAB`Ng&_>^c8kETW&$mJZ6v;({Uh$ g{QK3^ML0aE>V4_S6COS4Qxk2$UQbF**<26**;F~^jQ{`u diff --git a/apps/slidingtext/b1_color-02.jpg b/apps/slidingtext/b1_color-02.jpg deleted file mode 100644 index 446491cc4b44519b0656492085311c5691e37b1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24031 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 Z5zavR4E}u8rQOirarC5}ifZ;h|JfnA6vY4l diff --git a/apps/slidingtext/b1_color-03.jpg b/apps/slidingtext/b1_color-03.jpg deleted file mode 100644 index 0b26419a5d71b052624ba7d5aac54f11a8fc1131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24021 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 diff --git a/apps/slidingtext/b1_color-04.jpg b/apps/slidingtext/b1_color-04.jpg deleted file mode 100644 index 385c42a90d2921678e04b8cf3cadb61f659ac78a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21038 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 bhI5G6`RP+=G{C=4J10!omalVlK( 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

9eb(jp-Hk>BBbcadKqR zOpmFUhmHbqHqzEhKDJiWJ4408GLWX-v;DWkzOXvMSs);?U*#{;m$&ocd6GwnZGng4 zNV#IK$NFM)dk+=42;0kLPH^9_B6!#|!OQpS%@VIR(Y+==n?~sfD(~d@+>xQtAnKz+ zEZPtL6U)BGC&f|gS=6lQ)*8nk=s~PvH z&Z#-}di<(*b~#(~q7=EzbGleBU6DGh?%r6@r}I6OA~M3ma{(`mm=jpRZe-|dIPx_R zcs4{+dF0cNxG4_n!V0DB1$6nCp)ADV5mXB6cvgi#6fq0IYODQ7;o;?r3;pzI!P4nn zYmJS%p~I==K9F?SJd1B~GH$#vDFf3<4KMex%sN9-_43j<2v5~?Q{b2^ga%(z6(S$G zl$b;8jOQg<@6ZRz>Lt;DqMh6a`{%~sU!T9GI)p!Lk+l=>0JVYi}z_g{EWE<0es43 zVhTggdYb%;0%f3H`m06<;2EjNLF{Bab09JpUd@~Qy%!=BvWscp!fzAD^}4^W0i<6R zrj0_|hTPXa4IC#$DL{D$sF&o0-371_UW&GOPq9C+469HhDGu0gFX~xVrDTMToSl|u zlCVb6F4-MLkpEq|HG&lIbGHHNcd7i*kHb@;CibqXQawW@yNKu_y-j@^Cx!NK_`^ZyC4q5lO_S zN7jKN$g(=wMOVgP{Kr=Ja6C_g7Y9FD(T`*1f-h}?L&lh-6qF;-k;l7KR3=a`Sg+wM ziOSocOwWrM0eZsf)Ttm>Q6yvqZqFTRlhW*4b#PdFE?aiB zk$*^KQl4DresJ;UpdMrOp$aPB%;PKCo}emm$l1`*%NkAO@_f5@E*`)}?l0*)2cbf53aDLLz3*Eco78*Sehe&*3LgHTveCE? z38L-cKO}b}TpH4|v(9F82FtbG_a8yo(zB{-ny!I>E3H2e63)P+LKaQ{uXi5g-1DG_ z&t%65YVfGNgW|-vD=LMF;NlnbmRCL?1#*E<=8HUa?_YVB&-qN>Fidr-m&dsSZ0X?L zK@c>0Kj{HfN(fB#nXFt!cqVdK4J14Bxm0??Z6Rdl8qg}&A{*jbu&TZ|43 za=ax)`{9-cL72b zp6L5cR*b<kHISlBY{ykc;V4SU>`A?#&@6cWE13#xYTkZ<(Ir~^#Lsr;$Q#H;B2 zK=i>Z1#+1q$Ex9WYw+b4%lPnY5mbIf=EGAzK>Y^XY$ZX`)^jVd!`38^l>4wmHv4ml zjm^mTj=8T?74@-z+6mJ&u%vc9aaDw;Z-O~OneOE@YaVvk0*n5(fglBMH~^uO({Fc* zZ#3m)0Tpt}dUt!57V+Mi>>YZ=+qzgiZA30R7vVr+JtL}UcfKR^aq$eOBMW4u@!aDeKUt9+zj^2@YWz zj-An#%PR!*h{41#KgR&#BwlfetSgNBJ(J3vjhAtE*LH&1hJJXKVfLx0V41T z8NMP2f!r6x`4J8pmfct)2-p;Ge#g`vDU61m$4?dtsn0gg;~+)Jx5C)(%1}mfaz~2! z4l{cI9%Rv!D>hm9Gu; z5fw&**GU9P9iHmwm_w+~)cCJciIz$}10!DD?Hl%zv(vzMiS`nM$`n{`Y01ksooz>) zq0X)W-2oJAVR)LyXAn*&hKxpwNGS=6Qkih1O4)kvC*g~^l<5w2`J=>=h{&?*(G{GW z+z3)M8GN>PcuC!EChUrlLPA26NPSR*BSDmy@Uwi)H{7$~J_JqETiEwb29EGVia@** z6!UN|=;h@(b5CY)PTlhQR6`Czb)Gbi2({z4EU=kqMUF6$@vqK3reB0+g-laAHX@|l z6lY1lWuLNEy2_S~s&f>dv8O{28k`ggToe#&1Zg)%!$U7+CU`b6=TrHXgBKh~Ip(^z} z#zpYURpVJe(9X>8orURzwM&t)C&!fetxR&z0gP9>#9Wik5+HNfhxIm1P8BdL;#P&) zDiUO8c_t^#ReoU9R9v{jg`#1RasEZ-phg zY%Vu?Uo0n`jfmuy>Uhs4au<-w%XFA(2`zPB&@mddG1NlDm8V~@wxyP0L!y#G{m%^} z0u~ZHbhg!Zep4xONm^nQE)~fZUeF(SW)sidRg{&)pWXLTEP99xkG@q;-2qC%<7vch zuV7{Nw34$5p&&s7)>mzJg@V3M>eyOR-}%cmU>>}Xo}JFjIdet4er_`e^YLnfyh6i3 zJNU!^+=nfo2g=#1EVM-3fakndSMi6w6#ji!=>wW)H#g*n5+Q>C7JdD%iP^1%#x$bMcWiLvE2V{AB?x3HJeRpE8O_xMfYfJ zTXXEzcu31mZKjKt{o+-(RoxiB>t%iUs#Q?y*2wkb)!U^>i;%e$cop3UoMad6CUx@( z+V|=6yB#z7an`1TnACSGJ7$tXB<<4C=uW{2xBdYnMKlIdl&HuW{v0i#<9E}0Ht|B1 z8NPxPXmFGI1}`G;8A!62tb#9w=!dKk&@9~Yt=YH?wRwAN*&65yJFJ^K4Ml65&txpb zKKbznW?|7v$0|szIqCCdqV^Yer}>(%AM-IeS=w7`wTQViLQ%e^RH{A=my7<`D{{qi zj%MEjo(sVozHJh0#JbJv{a%9IM+wbdy<8cUYPb1Ts$Xrg8q#Og96NO}8|@OuQ^fR$ zpxs&CGe8Zv>^mFt)IX{S4fd=M@PmIQ;n{v{%Vs~}evwnrQur+=M&cT%xi4Q;ma|lJ zb^8Q%!TV(I>2XJ6^^rA0&Z0@g+^yZo?K=9me=LICg01JaVIdkmT&Xe}nGkH|EMSK3}g!ssA7h*#v$0bxJA3gHsk1qMW3r>{F#*O!r zL5iNYoj161P^C&U(&od-L(OlhScUn9>b}Xb1l_rekmH`2bfAj?I?(PaHD^V~?ceeXH{Ac%F&>b<+Z|KDvf7Xmr za!pX0Hzzez^_yXY-~z`yoy$L-Om_+_h42dkyc$Qd?qtO3rSKUQP)F5nPvlRObJyhM zo<;5+FJ;H=Nw$Yjog^-HdbP6dO~3jR3VvpTq7f|kJtn?EB2FnaXVEP%Ncgih_0g^X zq9RF8eMY^kZ-bpzDZfn8je54aqb`1l03U!P_jfF|3S7Q+I@jHFKj+oS8?eavb+Gs- zv7_B|%!YJr0XK0l8KA^`?U^J^=>z#q8bFY5rL5Y+*zuIrLD92qcf=6n5_miuH37`7 zev@C0rpKnobzhIT-t6I|zG1X67UNrJoX`1k{zr0*yVaj*ZR?R-+)q!u*8m~a3HLeQ z$+W_*Q`ev_MEmo`6@v}4^Uh)$^^8k~*IJ=b{pie=r2aZn4+tEGvU$sTrERr#TO(KbGBy(rF zA5X@wNK?yQ&D~!&%NJkuqFUQZT#QlHZ}XjfZxS@NP8WPGM`~eu61RWSyDzIIiq1W**LeXZ;xH@@7?PS#LT$d1dm&~ zJTQ4(eXjAxB2Jao**Ay6y*V_1C>I8@;5yQ?v|%Z~^|dzrHMvrnsA=P4FZk5WmghHC ztGqv6elC2B8pGzX^z6l^i}a|T zZ{@VU{ahT+v6A4M^^=D;%ok0g-mg#6>zzOzREoBlk#CoiyZk5vI~QLwXO7tlazcYI zG=$2(tkXJ2cBXT7iaCqSmm+uPHHzN55j8kW4T{5E29inHGzmlEm+o~hketw?dt*cH z&(6)Q&lBRDcH!mCup^vvMCo4ny$hK}Zz~HMXIi&cb23MDG(&ErZ&z3?VZpg=;y6cM zVk^nCdl37c>oV@&yz*O9;_R_xYo@E#M$KRQ=Q>}79 zOl^&=vWmN=8mmV+l8Ic6blLNH-`N=LTpSzK%ug;hKGN1oOL5zr%+%g~_HkZz@hFNy z&}DM6WTHS^nfhj&xY2;NL_;1^DgEX>6z<<1k=>@F$9uIoXm?hBlb#1hg~5xl?2NsB zi>LQVHgAvbY`d4_A)IT1RXYb0xyH+G_zd2)!TqGgJa{0ATNHJZcX}UlnchAxSx=Qa zWwb{e&Ixw|t32O$w62QIV;iCJ{;S-fbfK|GO^yRZ8bUU}>fZUp|-?^)y$2yc5@T^SZ?+e?!Xu%e#+-SeiY{WBJKE&AxrC(cjq z?EcIcs0C5Se$l6|xjT^WxOIDhQxD^@>KC&4v}K}3=7O`!F4c_hkG;Osg*9Ck5BY>k zlo6S3+FGlRkm1xe<($N6aQTtZWmypCxtTwIm-YSKr%_){LUnd`Vn$wV!wzFFdGzY* zo2(>y^(ASv^DM1qN*kiDxPI}Md{puNdP{pj{>1%?%yoCr@-mnGD7bYOQL{Lt%6?;` zl`yC0M(-OLdE(a`llMv8VN4oNoX7sCeX;&U&L+yvKa#P!K0lXgHEFRUD6KN~;?c}A zl=b_36~XUb%{QLrxE8jL<>iMsymh7^=ZwOa@MS&v(DTF7rW@N+{wjyzO5kdAp=NHR z(~4Pt57I_)0ox<)nZHvrnr%>S_PcaBc0=ps9KBAp#yuZd&8Z_1AI92jrn9*x=MIja zqGV>hW?Q4>(w^{YkG{YvNjYnp8>HR#$<+~SX~|nPTpoYF^>TmkksF`C>ByJC6GLpIUrrbrEL1kT6hI zraCAbQ9>B>^8D@Ajgo_(EdwL;Zl|1ABpsfu8%IT_b9>A379KOo{w8An}fxiQbS(Nl2z^Yd{gk;x1IK1>z!EV)KKR}kH!BFimt+;sfUXWL6Am} zk`|B#L7GV_`2(bz(KwJ67##|TbStUSE!~Xnkd|hQklx6_#{BmE3443*-gD1A=iK7c ztz73tNtc5^Cto~XWU^?!{2^H1EtWnv8{AZ;n!dd-ryr%}>zCF(XB>)_FO9fC=1NV; zTm2c;`{VrpA-mh!Q_@_v`juwvajW~W(hxBZ7gcK}Yf#Bj6vRyGx zU7Kawg=hw^WTPZGRuhE|>jKHXwkw{zwo@a78sjd6rU8m!o0#dvag|F4p&Q;ybLj^l z(-r0zYIY+oD*WB%2O6g{CmgMBweS=9V$1}hF2t%R)Fzni1y?^0NeNVPFz^s0d%y9f zo_t|?`t#x21_4h>zF*Qqo~rN+V6wLiS4P!Edz&pM!;XF_d!`8i=CAa_EKWZSchN-t zwaudi3lAaROQ@soI7Jq0ADY>Y1x4y#;#E34Pz~kNp0zV`=wjSaB^AV4rv#u;NWWSuH`N&nhFOELI&&UUzXp7OAUG z@kk)LhZz=RVNokX0~9p^+^cShE&;p>MqX@Jj4dAA(D(>l`8O~Mx7HkXOYYSawH)k$R z9w0$DLON`Df8u#}sfiTw-la|j}hYGAhxR!`#(Ss*^39!napINS8Xip^q^KON`l!zdT%GfcL1-p%Fw1~vtg!Gikj$@SPVp*6#oB$! z>%jY@u&r8XgGp2=qPCC405%=@Vcp$|$q4D#RWQg#=+bYDB+UDMkWFy+v$+k?eg7jJ zeCO7c8>(XQMy!`C$&GN2`100Bqo03pwlJai)4(`ObUAC_MxTD+Q;GCjN59Q3-crYZ zfbcb>sOYB#5mys(*~@$o{|gtAB71Ao3Ljl-i_lXVbI`Vlt7_;uc7m;5p^tKzUIiHw zjipMW8!SQX5BSM*Ej>fV#7T(Itv#rAmh{cTe(WIiE%g&2By?+Jjmt(-A(QAZ3?1ql@@R_yOMub^mu{dsuyjNb810Ao9p!((vSz=2yO*}jKWp!r7xZO% zxA-Q5v!@~3d86BUNpU>idXe%~@3xn8Hf>rt|AK&OML8{G(zKkz4A-A07t6?#4AHE~J2O2CYWcq_!w!5nj4lC^7vP+>}YN>X-N6NJy85o5#rETXba97 z?XyK5a78!+bcKbHqg+8&!ncj%MF?yq(zaSct+DG*br4 z2gX4__A8(0y%D;V-%IlPW7hxi*dFIBTj;^{Z+PJwx*=*nPR7?SW}rz8a`jQRtY~~2%e_Yj2!z5t9!!p z8*7bx|GbGoU!38_n2&{Ut$Y|t2YGlWmZSO@@%}{ioTQQeG#Atmuo1mHE@n+h0 zVl6%FyS`OkuB7Qpnkhr^Xl14MR4>yaY3mY88N;G+X#FS7rSFVdK=TFTOn2I(7D%2X zAdjs`VmAx;DJ`tIqXU^3M{2%O^{Z>Lx~9-YeD(gnaoZp-+RCuu;criVzdo434tBHL zS9i*6Q9fA>{S*3Z2B-!v@3avPmhyp}1WpfR`sGuyvd(c>Xq+B*O28cGO9%KW)->3z zgEFHb43;O)m~doX)k$r&aMh+)^!3KxP;hYSExqwSfJ3W5zP<|cgyFeSq|{_1;VnkO z%n@~GWRRd+X(!?3AEmDB{!*i)?T0>aT*H;o{P5c`W@ zIjq@i`M6&<UM41)woAYU`+x{`r#KX#Er(H z142Ho2vtqG&h&U&TkK4+JyRpiulDKsAzhr?Zh%*qQUP8lGutO9VK*y;1g`!2a^1Oq zfXE>mH#ltCG3jpty`NI>a1=0 z{;-wGek@Nn;-J%K4p>JPuc#@uZc&SC+>7B>68{jA?4MCGXRD^*?bu4AC!_ zF{RN(0?0{0C^D4+pwBKQDyUGNL?S`!P*%3?9Ol2UjfoHv?Gl z5akttRifzAnduC|=goP~UvC)JY*pWB0>Y4FCTnL8Q&>{Xg==;A)0GTT~}Ct zZiplEZvIGEiNQPs-R+yZ7I~VIRXo2;lFb0cY-07&x4RAR+x`LUrdJH$EhjWvx(OhB zpzf9jiSAYb;k!VcZ`H0F91D#}RA5$)*`^See*mv`{eGafG0rU07j-hEVfW4kruFiN zX1w==Bx^IPk;|ZLUBVkjCaWVK1WVPy-8An@t|_NLDgUjsmo=ShzUqBR?9X|j(^G;_EtR-r6-S-3 zhxZx(0QMrE!yYKOgst$vOJh5=U@R8>1q?e2do$vBv=We}YF-d(>|!9Lrs^i{no)Vx z>a*$ct)1Mb6W?w%q^~U}YS~n=8Y~1fM zsqolf;@5&RSl`Uuk$C)gs6>EVEj7O7X07d@OU5F;B9w=I+wa;BIR|tWB@~O^Ym@Jz zOb#ef&uEVhB|(jY=#o+4PP47bVZ~$57QeuSxo6G_9SNnPL#8ylHFK@uS9jmg)}a&m z^!MfRlt);C`Nnk`EOl$Ob0>l*))(Tgu$_TaOh}zJ5c~7BiCC~u_$aKTXnR%v6K+*p zGg}~qtKc|l)h>wzJ9G_tQWfk7XCp?nb^3?Fa#k6EBDPiFamV`@*8o>>dauJ4dYwH` zQ&9>~7+_@kEbXJ!AB-=VwPCR@bBH+#RLzxl)G6kf;9n|&*dOQdeZGBGWIs8a2|I*& zWx(}yOkGR`-v~a*L2-Pp)oEE+TDjq2)G{n|F5F8`hiW>!KefFv(*l$NM0aXDDLLa? z@a2BtNthM5N^$|HRm!CMa?6M~Mtb#HQZ2r7Ydz)8c)LSpr?Yzfi$sloc`Gd$(!2kI z)W~5?gFP1^wPT+;ToM@W^KrUl+f-ya420tn3pN5(7=J}6^;13A$5XMjD0J8FNYeKw zU!zuCD1UkSxKe&o#P31W7!@U(e+K8f^^`-gP{)iGvFE10dWaNw$9|p=F_Z1sfq1HnVpUSp*M9&;IL9yb zA&5es&&BB}UPbj@?nAflyP}c7Jx8t78jOb!9(G>>9}`kc_u0_o!Rl-D*9EVcRZ!sO z!rYR@bR+UOS{XqV?y4N0WZlv((#(fqkOy8`oem#(_tOr={dIfh@+nw|~P zVy(8cBuGD8%{&VEVtD4vChN{G@6j4Sz<=^kheCc|TCjV%xbo5PY=E!0;tu}d>PBC!xZK5NGYjcKL5kUEK? z%GzR!dy+ZY{hLzR?5m5qS6XiQesYyM1B-fX>CZJh0N*}`&mT(b*8TjzeMT;mDcqhj z8bz~RkQT&rLKMZw@HE|?C?!#2no(f`Xktw#IS5-kn75KJS2&aJ^4Kk@+MWQR={S8) z2d~4J-8Ne=68D?`mhSH^Ui7%jnYjCmkoe_4xoD-p<7kJUHuFuO0CZ!L7m14KqT%F6 z484D4dUmJ>7MxNZQR7A9`B&O{{!osG$K$+y2~bh&-*LmZ%=i(1n$}!0hnmGLn}q5} zdiD>@r-Q+rwhkvjcdtAgOF9BCK)XK2mSj@wr!C7)(32MN42xKfIEOEj!i z)$OA>_8J(Sg82#Fh{@P}jvcolAI~X7W%aLgCQ&48vk;kmv!l`QC~-A+FMak}lYb1k zyf*zzS&RR6qM~>#p{G7(FO(C5#Y1j$y_SP84Y{^?swboT4R0gE+x8jRAgQA9shcD8 z7#fr7Paezu@csVfef8sDZn!pQFO(vb!xWrtoaGzjTkJBkY>KiLP|e?71B-$;MCQdi zx-@UCx<`vj3ZHyYWP0_Vq#4i{pFX}+A&6A^&D&kKg}Aufm5e$4c)Jzj#{B%fn5Tnk zXyrr_tqkL0KK|-T{?6GbSvNT|9k8%#rC-)S7e4QNd57>?|>MqS``8)_&8q{@Ka+8e2O`Iow0CGT#sGlrVjqQx13v~Z)@PJtq8 zkXt_aOVv!q8jfbutwho;<$r+jXz>CeY0Kss9^%9yA8-9$y*#bfmJ^;wvWbra6{4(l zHqOL7Tx-lBpYOxSvzF2Sz0Ssk;lXECMy*E0)4WjbjoNIB(WTqdWMCTZ#M?^RF;YLgjeXD@Xo{t<}tZCTXZM!TcZEKZpsW&~U8n@`Fw@7vLzb;t**dv(_ zz+ogK$VdJ9g(em=ELZRYR2CYx# zYo;-Yg-NEeq4&z~fs5f61H&Y9MeyUjuI$R|O|eq`6fJchA)_X-XnvPWuyL`xT9$#4 zOhDRoCwB3JiIjksL9wd0+lBc3(vzjGyW&DrWqemZ*if9_Br9@Pim%{+w=`W?v!Df4{4E=6w^Chc)J^ferG7}1;WK-lE{N@ zwuVeIA>dnIE#9Yl%RoV27Tvd0T-K^3i8iUP&(ozYKjK~}+0Mv|Ycdo($YoTbX)$7J zbsW4*<2YEo6xS)|^(4wkyR|J+eT|sLKTBjyD8&f$ygX*|onsSE$+IF(t;e*!ygGXE zML$<8f9K7`c@*wxswO?nH@_eOPbz5`77JL@+JZIdm(++=^|DcE2jljqbK5vBJ@0X+ zCQt+R4}emg<>W&?IHF_wV@IQ~tkwLhg-BPFG*c4&2^M@jq#kO%kyZsZKh4k1kF5mX zZRB}cS{y#rKI#79C>jZR9`+17Yv#6hUaXqXCzrzhNAs6sZQri-skI%s-uq2}8n#%3!AXUUv`o*w|1bL8A!>r)L`INRq%EpaJ z0>W(%p|O5wP{l9H6A6$3^6cXW5alYW!3^mU-H5XlkZK44)yiBY>DmQnHr-Q4Ru3C= zGJVt_xhtbgt$DhqH}-C!xKF0{J))rQ6Zq*cXUmX6bm86`UyjozD)`Np5e+RL#H>1L!Yf5HM25zqreEzfRqo!7z193?L-V^*p?q4)%>|$Mz~&= z^|ZzQ7@SZXWH+@+sen8cKX6<)GS20*=ZTBbF%8ntH#O7$l5P*VxM;7KanGxE%f>m( zvYWtr6uHk1ZIBGIdht1W*@OCdU@5LzdL8i`*3qrtHChbK zeLHSw!vPK4m+lm{+&`#5FVB1w_IMZhJZoD7|KNcLH7b$ZLZfvKqr2@&POq;~H5sq? zUvrDDP~+H9v!VXTR=Y_#c7zR~30;nZ>mIKnOtv@UOHt{#@=OZDDL4|`K7gLCA3U`T zj4owP9mx*KrFyn%QHJmEI@QyxeyF87%Z3+LW|uG7SZ>F^P)KTq>D^sSY%miX zL=GwJzmr>gQ{ie(SO=~EXJ$#hxUV=AsH`;Oj${-%8JqNCdI7QH_$AiSS>drNa%~*` zSn7lv5ykXw4T{MAi%xG3hq8amc{m?M#1cN`V;z84x(1^>&;r54sPZj^X!7mnzj34M zP&fBiNSaxJWv900exC{5OK}q){*hk{ZX6z5nWk%UWF9NfXg0)ulz()$h)(PgEyLX} zQBd&qYMw=3zT_NGqOc_f2&#lQt)lrbOy7_6B_?DIdapZTx}mK~z#JqAm%XdNmvPF7 zKEqyIn&{DDsZOS(w7JU@xQvbjr~Ze1u0vsyQJr&*smWCf%f(`sS~|o$2XPSaA<)sp z*s@ww@-4GyU0&=G3mP5r2>If*MJEO>yKn7*yUsh_nHM6$o%dZqcb@Tb?L`x?7`J1EW) zTpSpujI8`zO}R1GvGcK$n|`DmJ#``_Ip26=U(@ocbVvb*RFC_&L>?c?(;`cUMPgW= zBA;h?yEO@M8X}*(u>P|S-d{ym5fQrGHf2*sn9%Vd-a4$z28)oyU3N&R54ek8Ia)u5RAawrUW?GJ~whF%d z13d0jslmKPCdIq`12p=s<_QenErtU{D%QAgP@~uX`c9|(369Z>5$-p)TDPWb(Pn?} zp4JG|ii;IM@#w~cIa99S3Q#aNsumt1(6e%wz^0Eixu#yN3OmkhD zJ;;tIFqqr#=t%Cl$$CNO>hs{Wabbk@thm5phN*5^W)nB9QTe&HQl+Nw**Bl_#*Dn2 z&ZeYA4kgzm2A(x9F!yZ+<<( znLz(4tt*>(PIp9PF{v_8b^a2X#_tH3TgA^_!|fO6B(&CLP5U&!FMGLy1`5RT6;r(9 z=?UD49@ZUX?iX(+RA$+pS3FMjPgT`pICTQ0yE#pX89LMU!ChBPLamx+Tz8?kZapx} zc%k81XtJsGA%qSp=iZ{v>0O04zC}lxmiI?K_jvyvK8&BbKs~1M_KzjCRP;(AghYxz zmELwljBd+QG=AP)am~RpV@ud`w+186th_}N_JnMq3Yb%aLTH^ZWt7=Id#96z0ZbiLdYdF%aq-C|td}Z9WjtHKTX(k?%3(|DYk^aihs#uL7oTFVAhE6Pq+%B941UDJz}G1 zw1~aDr+GbBbyh0t|Anv^amNUJvmLwN-9#DyyLr5-C3I|z2wZGKlu=aDg zs!wJ!^x1A9r8njm*h<_($?$GN+q}M8gyw5S>*yOWrE}z6nk%s6KSMO>)3qTQ zvyy5B*L(|(RQv(%|83wcGQ569a7;2mC5#Lw30JC34cn?IXneije-S#ShXEpucCzo2 z`f#r`F_K8_%PCGa-cX>5bi@{dziSjPAKZxP^0guEgfRKR+APHwii*j$rDX-jB(`

=J*clT&HE>Y~bf`hKu)XBh3S1qY#c3Qq9R;=x`> z?FrCR40qU190k@K%AUHiZ@47BNeNlfoRdhRn5;5iwPwP3~H~f3)>%*Q%DM<6kkoy?SnFO>bVuWSW_cvqkIKAprokoX{ELW z5s@q%#70J7^$*wI2lVEN#np$buc3%^>p_a0K_}B($!FmCUZ+13P7f+O zTwV+;X1tfn*gV~RRFM*O!m1(R2WNE7HYisn5idmNy5o!dh%Ko-H8Qo7svA(|KQMID z%u|I+-kwa4TIZyM(RL3wxSEAK6i5Z z!abrk*k=o5O&*RL zd|;ei_-)U#tOzIQ*}BirF_ZSOT{n@Iw^-46S>KsGXLZ6hk6V}LU!duK44sMKCglDA zu?o`%&*#;-gdbG=qW(DJmB}erd789LHlW}LU7n#$q}i(NFD8rsgHyac+Ra?xDic

; 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 G&;QxOvqV?` diff --git a/apps/slidingtext/b2_color-02.jpg b/apps/slidingtext/b2_color-02.jpg deleted file mode 100644 index 7e3b8666f910c395c0fea995eaf8d877208e9440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19164 zcmb@t1ymf(7AM|Fa0%{`K!ODiFgPT^Lht~=g1ftWfZ!G&!3l055Zqk@gA-f^nBX($ z;5+%g_r3S_e|FE=|DLU$>iYHVTUGa#-0r?rbN}mp4S4ukRzVg(K>+}Hrk`llU000(%gF*R;m%1eOcD?#D=3zH&oeS|fD{;#~lAD{e#QJs)9z}48^)!o4o&`{#k5at2B z_(S_6=bt+NPX8jmd#A}KttHC~@bU2RiSP)C@bEJ7f<$=vMR)`OfHEZgABj+4AzA;% zh>wr|Bi%=qe_=BKNI?5XI#eJ5{oj~0;cx9R0RWXXf#@&#AIy`40^s~D6DlYP^`G)l zrIOJ8O_xtX|2I}mdhl_f683*#oPYBh<)Z%6LI5lm?LW8x^*{Ut zX#a)L|DD&W;K9G>6aY|w@gE*!b$j=BHQBt znIGATKF2fxP!;oS`ZsPe}ByJE-l*`+w18{?Px{ z2AKnO7Rm9av_BC5F#fIO;a}H(pZ>o056|CH{kikMrQaU_UaD4(ZjP>2j!umHTs#2i zg@O|LpYaI*lC&tg02<8`Ia;JVr~oQ0sw9BH3*zPH5u`cv504NJFD$%D{)EZiOz&;X5+_}F=KTgLtHR5dhN|i+vI=ix{+g1glz(_p9|C~A zgPV)G+zZBcI=YO1<^R{o*wpo}dGg=1{~4dp{;lm4=l@LqKf1y;Gj}yba>9_&%>`LG zvg!WxEUD$+*y|5A`5VXl!7gvrUm|&Ok(kx;zp%-FVNW+FHzd#CAAVCOmp^z3iN);g z-2c?|C;aIjJaY$44P^Qb8EFAmKpl_+{+|Cx!vCxApZ0Y83IL!p|PS|DxaaWMek>i_`BH~`@2{UhUl^8TkU{x`ZZ zBJjoYmVg~#4ln`=fCFF(a3K*Nzyt6Cg7=*O5f-vbU}z|h0aPLsG$NGyUVs7F zY7bEU3jb7$f{KRz00R>X8wVH3P=_>LC}?P?=x7ff{29b|PI?)5-N4(M)Bx=T( zkDW>Rf)n$wm|j$Ok*QC>nE6dyLa=ejDJZF^pFCw@Wn+IXASeV97J2zfMpjN<;kCwF zO)YJtdZuRP7M51lHm+{&9-dy_KA|7N!XrLLMkOVGN=Z%o{3ZQsenDYTaY<=e&5zo; z`i91)=I)-}zW#y1q2bA?>6zKNU-Jv=8<5SdZRqcvUHI|I>Dl=O;_~W`UMK+C-)bSx ze{1&t(FO+bi`NAL&VBMbSH{ZB6B4-X3y>kr5Ozi_{dG^vF5 z3jiJ(()<#k5do6Gwi}0F`;19s22Gqq=3E`izQ6Bt9NB#9x(Kg~C^$E|QcJIDXz~e{ ztbd=sKb)plBsA_` z6lnE}SlraXrZuO!zDRyCu;|LtG(^07qSdHf0LC5eP!}ntXzfoHRZ)dfgT4K24F}qw zduqU>dN(y$X$g`|XHE!m!Pvs6NzsjD`U_l*P4}|$Y*{GDaTA`WdN>?DW&-IR!q6$*WMu7-yMP6%I`^26)ecdCft=cNJ zT4xXY@*=y5(M9~iS3{Fs!0p3tHT5maER}02+nGB>Jupz&VsXG)LDkM7M zfZPMpRi!-+W6~gIdXa$VTaSV}Ax#x4k1cXEiu?)!O_c&EwI>xAPM0ILj;HOfsl8%@ z?|}pzi5x5AoEwk!s^O>m!DId{8tK*r>$PR_yZT}UBp_hgx9;fvcxlV6yJdnDSY{Y|9LL@bAtu4xb{W`p%p)p3%O z@Oz*JSt%XjGwO(S@s>DOo8+3n*@XMrvBLSD693aSOVL%CC+SlY8Zot>qojy(HZ-O}e+L+$AfO9*N&16&wAsi?Eew!Ze?W2& zrmJL`p{5w5e)$KA;HHwCa}l`xa8|mL1)jp9%LjVf{X(NoVuCdn=ea`fs(}(i9e78u zTYS9@IeB{9axZ^fR?o{vs61X&gH9$Vr8b)@$|H8l1G^!l*_h{l0w^UA#{ z?-U%;{Itr+q!ykQPZx5?xH|^Ak$LYp-#q?(Ao|8TGh4DA>mHc5$&YOxrQ_+*D5bZu zX;b;aa+~O9+sLqQ`(4QCRdr@S9m;Krm|2IfLZgESHUxBQ``a*b6+^Epkf3f^cch;l zB&2JeywqQ_TR5Hqti_ukKP04#lfe-g%W0I5PSacAv#MG#Zb-Sx!xzCD zsZ_se9-bd2@^jQ2=uq05IRCl_*nPadzAV?%)Bk4XF|J@j7KxS%ev`l< z_rA>DW&cT7!T!_|!u=jFU!`UuH=u@ccJ&N^RnAKZ_eUTgW|~^tKH9bLnBarCLVu{h zXf5AYdDs9mxJJMO7+#6q^^Xu3@(K~xm84i*v7V|M{>yV`jVkRS}@e6N>9HWn5H4UUOp$`m?(yMm?lmHNwXQ#{~< z*FkiyaZTIp+lcE8MF#SK(e$xmqZRww?*osC8yO?t(n9mli4fY*h`6)Ny&!x1CLS+H z%yu)Y!l;CKnJ~wsYRcEZ`*BDsiA(v0p8WuNbBt+DE62P9*NxhAA)=hDKs#i#wmi?# zYA1f_Z~+(6Bn%ZZ(jJq*g|nvh33l=fC1PNzokU$!#TufCX;&dGRNE)_AuSDUfx_l` zVN%#=TaUiG@E&puq=#hXn9hDJ985p-Fr=@zkz2b50RCmKGRWJy*3Wv1Xp05LUFcAz zhLNi|m1~|GsTO!n&$jQJj@i`q^<#MqT=o)5lE#R`S5MuDDx zX3Z`Us8N!8%%z7;QukDH-m^=0pr;B|UvC#4?b|Z)!*vT|Wdb$Nsnz@G1L&Wwx8*lI9EA+|;sonZC##_C#lDCwP<2v>N_hg!>_WL8f$ z<=Dl{Ysh4S$t-i4YAS_N;#UrCVHV+g0H@TlVp+wR`n4`+ZxHpW4Ky2NdFUIr<8Vdz zu5|4|$8WdT05z9)Yu9H*xS2f6@y7ZGu`}H@15XCBtD$bi@z0aI26E}Mb|EXoogv6B zJ}2W%8QmGla;46395TWsiVK>OtOXK6dWB8}lIEUaxX6766;)0cVL`+Qyy>S8trANv z3ggJycW!nCTcLT(r;xLX)mlL*#yHUc(nt=Y7$~iKUiGg@+i^;FF|)f*;Wr$X%%<(W zv)0K@n3=u-q~2j*G1|Mpu&3SqpS1IlW}Nq|`1bqZ5Hu$Aa@J30^LA2rNGw2;O;o(b zhu-zH=s~jNNDNf63bl0(;@-pEw;J}W^3&ZylNMD!Kgz&d4)p!U7)=5!Xwd_2!vjLE zRKthuWCkOT^%fWRPM%N7uM?4W#Z-%-WCo;Ea<#`F^Oc_atKI{otIvH7)-)yeXg9Mj zF_DiM-LDSd1uwK`OM*V|^x2u`xBS{O7ESTJ?euTcW&JDt>9xh%&$Q#aXJ3Wg10T|Q z;z&RYb}x_}66{X4Ih&_8S{pxBwnaH0I4zQX58!d>oRvRmIhyrdbXrX$0TQ; zb$Rhk4)pjWzqvY(6lt}~;XL)GBlOrYkcSI?3F|K{{9#$QZ+N5WX8ee?uaxP4PnW+i zEQXy!JdmFO5|xn?a>w~5GwUg&N~O`ZE6}`Z0s0;;8Gj?bc3rMS_xw!5rixUVGI>x^g+b?;h?CMiQi+Nq5K0w#CKSb8}fHNsG-9^y$$S1okkD`?`PAQ=R2@ zv-f$#Zo|K<;7j{v$DKyUoBJs!GyvAk$G6Da!U8H^p!jH((JvBPH(O{b>MeLY;D|n` zwUo?gM!OY1j12Sz46e66Y^!(`ekL0b!dpM9?V{U{bZ{PrM8kdBI`?E5ZO z72|}TrT<1%RCDo%!@6iw%dG+Xr+E%|t~QDfnPn@p@)mzSin<5D{4pM9@x(jCh-gLM z=WW^j!edXp-a2|+=i1#g(VDqNZTYEL=2|7apSMw!Blz5GP$q*X`7CT!Cj=`9`g7>g zc}&U8yv~&JHLQ~&V^(V7C&1032RgZFB6uF_`epkJtR?2uh!{C^c#l)+*EcS<)Rm?um z%az$DET^#Vfd`M8b3DYji!)IM7B=_p0l(=;B$2L-F%^~)QWl)#n6oHmSCvMu6}Ig6 zYYr1c$#B=~ahmjo++q+N0@_(9-hJCb<8M>tx?_m&(oyVrjIf|c$oZV5tX_;+%rTYy z>GwUbmPafnsPZ9qp@$<&{Y9C7_?SrgWtJt5Lf5;T#-jn;;yn`PU-x zrccxrU-^SpVXDk}A1#rSP%yrp<;F z*U8)i*vkDh`hNLN=%@MD5}(@}G@8yc?tw1(iia@><+a3}QtqkiPl%4S0v}g-PcPX6 zeOg)@g@iy-GWfIhXUkZZpF-xTB%$}foT?H;;6$3)Np_1FzIZutoAoA8uXO3UXz>n5 zwCD|=ABXpxb$>n;SUHDN7bz=8!LtIP@Txhh&D&1QTy@2uht`pS$HC{? zNOMO_70+TO>N3hX1vKm;cLIjUo%{3pyA-<~Slk04$yU)cLN|}EO6{Q0zrF{)?uO4D zjI1$4Qk#+AF(Uk3D|+mH!u#A^aVyNjC#67iJRA_gxi4Se_84u|_@o@%1*DKtj|_3J zrzQ6I$>^z1bkRh|W*;>eHXqf0sPj2H*NKPi_64$4`FE-i z2CFF0tiX+*QX|RqTi3!M@%D??G6*mX`w-(O6btpHt78HtEEbTu{&O>)CslRHlqK{Y zm@WH0Hi9jxx4HE;+cWSAIfqDBww~!jsxSBhyA=G$8v^a=iQp6qgSgxGKwhN$z(s>4 z<;8)f-W`qt?0E8!jiM|4_;rL=5~#vc_O6LAbFN>0V+F%>Z~>?K)>cTnn%gdl;9Q1} zu5!#bez?*oukKfSo%pH5R`MNA&RWWQKjDoEXngjRq~Te|><@Ef_r~6UX8n|`%SP6@ zNx`MRUQFnX^-q6Rt(Qj|?G!$mTWKe2sqt##u)qc=d=yc#s=1_coq$AWl=A^nwuoB*y z)vDq8Or6XE3k142D=C_G&|&J5JCO|YHG(YEog4r338;d2nMS^9FiT}|vl9Fof6*cG zvl%`qNBQ7K90nwb1MFDX`soJ^0>dZm^ulIL6&CZTb~~5J-m)489>^Jy>jwwGOtIC zG>YL$#id7cR{_tbRSlxOA+k#?(kN1!W@d4%GeYp^F}RjnlG*a0N*S1zPCXQJk=FNZ z{R-}J`>y{Q_TU(Mld67SMz2e&9SO6LGKdxr0w>eE*4o~91^#T92MtEd>0t)H3Vk3i zEGoTo=T&OgibolCT%)k}+jTb1fQy2smQE%pmF+{eT}8%Ijcx)L-c>Pe6?^Dymfxh` zFPO(E9bCJ%1C??UGlZmsiRw4#Tks7JC0>>BYVzn)Ouc>wL zl8;%XZ4exlN*l-c(+0@cyo3}-4wnOZyqphGv^#xBtc*D_2)d=3TF2`QO6)9 zHw%CA^1D9T6w5s@BQ^CQtRbijlksGcY)U52+x!!r*&&FQV20`U@a&{>>@a`gk+imO z(c~|ze07`yG_;+&r}+_zTQ3Pbg)-;>@k?b0 z=NCJ~BuJ=xlz^pAucmY6g(E4yEuAv_45*vRqLjxJGqa@AexCTd#|uT;u(k7aXz!*3 zW9+FR{*bT#HmN9X0t&53-TEZnLnFq^@DtUkPGN%ic_x z+jJv3pDeI;6DIP3I>k8)aD*P|=%Xqp(g(a#_YZRUQApV5Q(r*Qj}v#I06zjU$`J$S+>Rx{Tr{qEIUyyWB~ zEePzPDqj;?aGd|%6va!K2b!PAs0L{*b9U5a@@2LN)3(9lCyJj5MM676huJm47!%_< zVs)cCgFq`$Si8InEjzh9&Y5_Yb%5p5%$8`Q5Ls<;Ih*+X5n7{|7!0JN=k;>3&cuASZ2H^?_Rh zZ36a^qI=PZ1D*{5hI8@(^2yit+8kB2k+O4;?&MBM;^uOq$wb;jqF@|dP4Br=PV3t> z_uoDmNx;a3telaE#(u_Fy|RMEkOQQ&T$%b6BU+Ld9nv*K4Fq*<&J*zTt_8Ri^=2rm z2_1J@=AH_eyt<@dH1c6+QDIbMS*B#f^9k|JMX&!@Q5<@Da8|((MYMhp&PO2kK6g&R zHlBxGx>J&y?&Mtu3Gdco5{Nll_&1-eumk4(G>khefL77}h22wmDIWs<^nIoYCRs|g zlWG9kaasWmhs&HVeo!TS0O`<&BeZ4s*Lc8;CkJ<4-@ICWRPL+kQ4V6-l8jr@;;7lw z^vj|w@n)~4yqSa_(|_sQxzzB)j}m75#=E2yl!zV1$6$q?%@+6Y(Itl7_$GBNXQ9{J zL&e%-%2)dx+4!2xwJ8}N9Ry>XH#^Qqn-ca133&8TvV({Q^T1zX0B7*yEb$*-iA_`9 zx<8BIk!b9DQSnN;o`-Jeg&cG;I`5ZTawc*$xvKCH3z`+^=t%Vo29_k-Ue0T~@;Y3> zvjL@H?FPGX4nn;m9hxm+waH8_4@qHKGv~RLJWHdDkACz{L=lGFU#+9Qd1TTni>hyr zdzhy+Ee(iPPa(~WSILS-47r0iJ4^C59@>^`&T=+CLY;y!Bu@{>CJdN9B!BAtf_G5t zimEQ)R(1VXR9aqy3R_9D&9zG{|%94dQBp>{Uma)J)s`Ia(g(w7=HWHZ*lk5dq5yU-zaZQ%lm%9nhhB!9|A;KV}_RmiLu&6NB_TCK$sME@yH8p~rd#vXce zrK*+^$=*X3pm9f9A@3w%x*B}Ts*a1Jd?|nTP{OhMb4`-uN0LFxLe*^{8U@e*YoLfj zKS7gvThkcmwAf9EoT$XwpzWAXWX-+k^F82(B9`v?Gx22jmXNf54fliP*!ZQLkLu@3 z*_|f&aBTDjMt6W-GDSa{wFl27RE$ssX<603J7y(F926ucf~&7I%gu(Kz01UNzVp#w zOzE`f#Kaw#&5UkjJ9Gu-BE4{XlMfh$#Lz;VRbC>k9Eb|qxFGSPlGy3^Kncn3K&lZA*hxl17-aEQic52{j)FsCOo)+5Rpuk$*^vg;;S7>(I z-X22;^=wM+-Qbn~VUzuN+tYa#+s}T9JP9-dYRB1FOLC;UPn7!P8r2*Mo^D<-JhkC} z6ldH-`YC`P49rb2G$;?Ya;#&cep5d-?c7D@&GZKq8QeG{1RlDqkVgQ>_X$SU0LS;P z3fJBb+i_uYX~$^pP9#i+cU!zyY6rA?oSgZXWHZ? zH{G83ZUQA#Hz*bKpK=g!867qUH$@G|uM7J&(SCaN z$rt#W%MwwneciLByZ=v;YO&vt z>^+A;O!_NDlP6ltucf*4(D56&wC~XLj2F(Ul5J^!eY(xmzi66A5S}khwNkAaaJ)|I z@l+owoR_mZ#w{6_S95Nm@!e?i-H;rhkqqy^f1X36R5;{LUjZxYOe*_)Gx#PniN`s{ zt?I*am-dhYX`Iw)RY`}n=LynjPKY%~_+URy?!7(rCm39li9T+tzjc{S=`dY5Ft(#^ z`wQH1ee^JxJj~Vd$TYDjnQp5uqrnuf5mp$gqQP=(z(uk0QT z-L9;QtVk51i3Rn*Ilh&*U-ZP#0>N(xyNC!hC&XPrq)%|4em=d{Od_%4LUECQ`5oqD zZNiv8L{?v@n(>L{>Dl-;$sG>)WsgZ zv4qQf7(~3-z3@yVpd?L!<#V&HZZiEWUQ5J#=RV`RzKf@l z@mH3Z+jUKbRfq8ijZbf_hAOcO7QZFW-BDfyMg`U#robBdFRtjug2j7N9ZJmgK938& z6#`=7>Nf8IhI_!KjS0dM%rt3#sZ6vaNst7|8+juJ5birW=9XNBCYVSKwY< zT8i{q(KnOrsmW=>AsxJXU1Y~qeQnyZGk46pbJ+|HTE)CtuJp|@3>dl6r@jaF=kpizbG@oKEgL=oDCT@3+0Juxds|1*IoO2=0l1Ag zPwnwM=TG%{@Z*CM2v?(+d)IJ|I=*jJcL&*fFS+x_2HMJLBdt@9Q{_J&^Kr$a`#h9q zni4356ZR~~9Vo)WSM?{DqM-WU7siEemlA7Itc@H?eq;B`3xHpjhj`Af9*OK}sF$QK z>)u7MA-_sd>tZ=uS$JM)^(}0@#f#~cdwu!sDG`(<$<^=;(hDOM%7E`BeW?M}@9%1M z`RIHZb(u0B8YH#z>#Rx+n|rAr`sJfxTUx0|O&PrxnB|*yp^nEuOj1)9Xw9u8RVns{ z5s-DxnJi#tv!mq>nE7F$V53Aydy>%lP*P+R@j2sE#%?VHi)lw!^mD&76H88Dp&BAw z=(m`|Vv`hEW_D-b{Vd!tVn49fVbD(Y9XoNOsIqf{c#GD~v*nNk9?Un?-3U8Ru!|{y zQ(m;gK8O9#%1d&iRY8B-bV7~F#8KX%!Gpx?yE@VcF{j4E;v;nhkvygl*}z-3BxPpK z#&FjWqqD0SVLY3W1cHD}?THR@0j!+!XRx2P&$-$Aind-w={=$m2DaO+8mCP(s*7T2 z<0zcKTbj_eB+8E9Z~)*U5Z}w{K8b0e>GvpFUrGZ@SST>vPGVn>oq9x+ytoIxKlv$Z z^{V}CsAYOfoa4!bYj)<`i0kS{ zPGR_~eg6gkg%|1X+9Xl%%a*M6jsZ8f0V!kOkCIc`8w9+fhlV(3;^vT+yq{w=OhTk) zIxpMUO7O|e>y{Xpla7-zF2U<7>NCT|m+P6@p3aCx#iSKq16k1Q4do3Q#ZZt5{dgC;ZTDwM3DrcT*CFS*pmFFx;ad#@9L5L#$< zR#R2cJz%Bx%OTK=8~YLKfQX0QCgF{;kz@fEL(ez8Q* zkF`!^a)Ux~4 z)Iug0G{wqZRnf8gERr1`$(aBU^sG40`u6jIcfKs``bY4dnr=o`x`)+dtPEvioo~+D zs(q?;XI4qrXB%&(ob0I^j$j1#`l4e*U|sW$3EZ+_s<^dIF~VH!@y8_&k_#6Zuh6|R z%D@8Y0pX=wYNqLciASFXpD>=`5lFJ0Ce(7aV)s3)hMa+J9`017kDHFoK%xV9Ts6LzGVC z<_9GUM!UYpBJrVJ!wVTch-#8mib3>&FpwRdr!xY2;0jjm)H+RLCVj(lq%h>pC99g4 z{n9Aj$JgFMwDGQW#%r4ioj_c!Qp8#ak4v~8>6(_9QA)PZV~&l8d8neB4@cd9`IUo@ zxy4M5eW~0yxNAVwIrI$K^R+3doQ=Yey}6vRA9sv{Bt1z4e5lzH`DYc|=XCM+b8v=; z;}YMLt&HND%s}>;MpxP=z}|RzKf=2n^vxsYp_llTR#h5 z1<9(atrtqo=3;(h9mcv+DPB|kB<_u2 zfI`sXn$X?Osw!_JA?vV_b931HD#pazC{97P8Q^E)P>K5G(fmht|?OB;FOlRw+5s*&#e`;6k;3&CN&=JRLw!0oY4@P8;quPR%eL*ZWfzojn)Sc^L)9l0pk?un$QEowNb%Em5}+`>lQ`d@87=;2q&2( zDg&GLcC_)jr-lm=Yf2rxRS}g>b4axozC~{vEEbTD+@&1fOgzkIPLR;|6u;7rzp=>} zxovv>jc0Yi=iScWrAd`NysEz!5eOfVA9u(7%;{EXs&t}m?RD(%>Rb7V2ObZ$1IEOj zrn*ba24v!~b(eB-^zQu0#lCpaOJ8`|F-?nC5z!6>p1M_!y)iQri1B1vJNJfkeBbo8 z#xKy$-adT=MO2O|Qip`UFO!XuPUZD)F$S271ohpN%kGutr)n$e{#X}1{3gaGzTQ4e zC#+4g%&eI(m;>~V-*e+3rX=$X!D?IRjg8IBwnmbFEStuU5dVTdEmi|MJ&L|#i(;Jw zC2KaneM_T>nZATFj&tESuc%NnD`}xZDbQD0J9*fKDi^5}bp4oUh>G@@qqD7)DIR~L^dhT^w(8>*~ z>STF6bE;Ur_rsm}&ds@dShIW0{Bm$$vJEPQC|>U%@q5$`FA!l#Db`^=U?xPD@P1f7 z+ePcXV~Cp3mgniNNhj)TsNqMEF?Jh#^V)TIaW^yhZp9YobTYj`%T2YM1zTu>yv}e@ zu5<26X}JV8x@LW_8Kw}vYW3^`sxz3XG|)u5`a6Q++v>7TkIOUe;>3YZ75k-*G)Clf zUINE5eUo1l40>{u>&}Yz8JunI0rZ{@TXZ#H7J0U10(wmFCafhF$!CN+Bvt}c$+y)()8mduWy=Pw1@Sg8t0Ns>N z-nf?CU^KzBD(N$dt+7k%Vmizc-FAo|X^w-M@yk%M6Y=b_EB_l;y@s^sT;Jkj_KjYm zN_-$3uFWSKUUIY0d~)4KwHsgW9&6YoS)=lyc26<(u`riAVfMR&uUftlGMe5lm%F}} zZO(=y0sJ?dh(*|xYTTKj%*-<_g=c7bcL;eB_Lq$PvrG?E+H@x*Z5$&c$y*;;n?o`L zl6GfIEfhx#YndnQdgNO$X_LFoDpVpnez1IKXGNf1^hx3$<~4X}7W%$2NgeyxA@V`2 z7xADC`(R9#lv-VX?#)88UybcsufSeMbbaJ!+~ao!uahF}jatLsoz$462w~`-?@Hoy zMmbL-C!9t8hHabMLPpCM2Z<4f)bGz@6y(!HwSS{*ZzOLH({eE8;DL>re+}OyR4^5hvQX z4-YArz9ZLb^C8|p)`x=WFonhFQ%I=p$6+cc27zCfFc`O*-3Cy7qVBq>(Zh7q)+Xz7)ROfbgFEb< zk#9>O_rNa|N58Avw${}1G@HlACaO}=9McEy32EoT^brG^&68;=zPGY^Sn}8oCoR3X zPK_^|co*q7hc%j+3HyKTWdd+Iy}#sw6ZCzZlsqI(x}eo#F~QbGQ`rt4hkEk z(la;RSzQqAp7IJjAAmXJF%OS?ThVz_LRuOzoC^BL((atoU){0xb@Hq$M!jK? zPy#MxJ}ZwUFDSTvH#&Pks=nuX1fDmA!~{~c(|uKZ(z`Gl7m1PI6gXSW@GKOK(vBX0 zkZmFN?8TeIuFuclZa%^9jAk63)SPT4B3C^RqNEPr!6cMA)H$}YF#CKWB4$0lx3>N` zscu~yn;;*cO<@92mCao(kCpm9>6@-mdS2`*T5VyvtFZS@4%?h{Ro3yD-geAE{XM{c z0FITcR*L8+Bnfo_XJ{mFd6C%Dn=cNwM);{DWyMT@aLEw3$gh3X4*t5R?Fufd&^_(9@f z+B2s@-H5sm zhe>cX3R5DtuG-KC1vb1Fy_WVPK<=)^gxHF6K~(*9Im+L*a6Nh`fm>5!%51r{c0Gp^ zz-((gou#dI!C;+?d}S{aDgJmQ&=k77r04|yMpl^6g7gq4AIXSll3aW)(+q83m#7-= zFa@LB=)sf}3_9cqlwFoDr%qz9U+KAh%|8CuzOPabZ}Ic>@?$)4mX_i^eMaZ%1b6Uuy zjmbiPgJw`k8=HKa=b6*?D{j6}FX?Rz6f`8D#V784caG1LYTn7P;uYd*IuT5sHK$Y!GI)jhyOU{O3@xIGan@NYawGQVNK^hY?z*2LI62 zD#~WC_`zQUClP^`9Z{zZe-Qy|Z5q5?l@cyZdJ08uu<`8jWZHM-!vq~2^xNFdbZI>r zB(`K`LmIYs?O1`_N}rAZr1!F&eZRAwHe56<=3Jt&N|0zKJL{C(Hj`+I5z5k7u-b_C z@Etr}x12fKxI0K15*+m=F>AQEq;sIit5R4tz3H4K^p4Dr2L|nQ#6u+aE|AA{*i9YK zZy)M;q!gsS#bj|5%ds(FSci70#8i5I{VfuZb({Aje*~(#&`P3LwAOASif2YFZWBmy zBRnI)de=`+HsNMo?|V@*^_1Rk<@LcUyaABdX+_68&ABz4p_`C=*QdXE_O)4!U}Bde zTjNq;(u=L{ys@AAMWF(lPcMb1rq7wH)YWX4C6o|3>v9NRNTun^)O82uNv?uA>lBY? zg#Lw)_u`eFV+OApJe-ylauKd(Rs}y zrLei>c|IWV<=eh~dPvlACJ0otwED{F9%zW@tmI!Wh252}A5grRIQ2x7N_yby0$MZmx}RG)HOx#3c+juS3rNP@wc5h zrHxVI)lp3K_@N{=6T2UIzg;o3nZC)3??H}G5MKk)yueDc2kOF>lZQ;LVP+b2^WLgG zQ`yt1$te`}<7KkERo3=-XLk*-z_o^bc>cnoSK6EJEsbqYWqhw48TnO6DwuxF$t}G*J+aXp&JMZ;(!@y z_qf8+-E-K|JQ|Q-NGGutgQ^yM`2~eJZvJVj-g)?Kv>76B{fnR4x*~M8RkW$t>jIm( zHq@#&`e~rgm$7$iL2|m#+_o)`LpKweEgvgYwVXX%^`0xGh2!D@-5QZyCO}mTZc4yOPPpOzBw^;2FX<=_0q4EXjBIrT$W?lV< zykoZeh6t87a(AS2G1Di_$bXUmgjduv8zrCxg~OqqIhSZ9yJ%HEwcD)OSEhMZzd&7g zowNkE<(rbEBUX1$r>VO$i9v zHf7Kx4rBaS~K zXa$Uh*3v>iowsazwoT#7Jxfzts7yrae3h9_ymKoBz9yH<@wxYanC9n$`jeE-K?jkU zu-b**k_D`R*)-NeRdTbEWrRJgdf^u%vLA6PMU|B~sl7K}dH825UfO6%Q9?o!`y}3S zeCY;rE`{V%7W-$|Lg>66*Y>5uroU#aS*E)~e$jwPShi{j|2F^uc{pDZB>>btT-h7bg3rxx1 zG!Dir-Z2zLfX@rz1F>$wmY$VLn-Ro`s1+=XL>CEYaXxOvUda&8NHGQ2)m)E|r}1g@ zqlZxpPoxc5jfK&~e9yj-Z;z&OE{0D`htAD5eMe|gUhiqxDL0M@sbDzJT5EIT{*}2dSP8~pc>2`>7n3?UImVcdG z&h^t1!^ti}{9c-u?MyzSsE^SVe$5f~c#~JGK(0*Xm5HalxA^OW;G0itz}j7!FPF&R1r*l={Y?| z#4pRODLBpjQJV|O%H;8|#ASs^+xg)R`Ebl$PwH=#P8XgR(tbm)gY*E_H9!OqQ7?>e zTl(Z-tlpf%ku>Ar1C5eg%Su1{p!MT7^;ulmROWDlvw!l4Qf^40;vtyU`F*7&Y!|v# zwQs$FPovXOpSqzWvhT23N3M{z6^4Di1Orilr45C>B+nz^Il*qT)l+pNjhvxh1b<)) zGZNsUItQOt9MRppManZ$n4vT6P-URXi06?9Z2IMzmhS0Ph%3D2apSdKKqX9qhmv-M;r0pH@rF*q+5zQG@Eo0OH4L-Qkm!c*M@!v= zyIz*W$~E*06B;pHi;D}P1E>;Csz0gNl!Y@)JGWcmg!%e7h%Q{*n}tri%*t-rFy`Sv zE}fju^tGVby7VC6i=r-ra!eHGMKws)pn>~E(MXv9>kM4gCjYFV-=$G_&G)oY_}K;U z&a|F?Zza5bOhun4zPM2I5mk9{4eRilpeM?bI~n)6qc{q%X-Ss1iJDKj9N+miTs$^} zKX|TVU7^s3Z)2+Ernf;X{$xj8&WtE>XaQ5o`Lq%vn)4XKFdT{!lO!e4C^j9dpIa|g zjR_h83ow3s$U{RpP-L^QnCU-Bn%&mNk&A}OOcaypd?Yomj;pCT_&(D$&iai_6JX@F zH(OCwqS?L4&B(BEaBD5KAWY-cIk=|YxbR4AOQEiYP;Kv0Gb?HgMP1p+d-MfNI0aCb zHy-nb#&=if4a8W6_@3Qb3-Z1R@K#8|mtCa&gw;CJBgv zpqtVAi$smNjB82WPr(>ae+}KHJc>C<5~e%RvZz}qexyQqy)2^xW9D1hA&gHFYaCU{o`Rq!}r@aGsST~isMXoAsQb@{%K#6KbP zbn&r_TbZ8y@%ZUw$e{Oc3{0QuK03l~!=Q98} z#P^me0*wsuC9*IV&N$5v#p*~Xi(bWMFz~9?CSV_odURmc>ZyF_K(*(79JO)V-YvlP ziWei>!ks`B5bl?!?{4LPcU#@6=jkh!s_oQe&y*U)>+p?9V?vsV**E<}yi&Ka*@tP` zsqpo9(sVcC@|wlQ5UXOW(p=Q0`B7rZ=U1<06?4)8FTx3*0RSY4aJXldmE$dwFe|->%4Sl(H*d@qdv`uc$1ONH_c?+U3PE zI>$f9-~cJUu3KZElAuEFl*YZ|U$TN{?40^)2QN|m5S1OQ7-pdJ27#*TjApoKI+5QU zC%F27mj1bdAnwgWFm%-K5hRd$_2vZ}uerXId%@9x>{XHxn;k1!5T$U*kRCtNYryhBrbP>ac{4*6A1pXRE3bD$^{HnmC?!F~LVsm(9K`^$7(*<@sbr zvN#D&a&t_uKL1D8iMojzU(;O!Nm!S91gDmD39;H*+Mf&C@OUM0tmpPr!&7 zW2o@Z=)nX@q-ty)eHbs{MG%A%{Mv<0x=UDM<;>Xre_mG}TuC2Djo)1Dd1Qt7s| z^@HQHUnd5SJcMCgegc({k`b<*&iKL15{>qvsKS?QG3Z?kngVaF=CO`cC;i>$V*ixZ zZiI5%rbl%MqIUbjk#|rx|l32l*1}`k6iV-VMlN6I6ex zyTrOl%zK0g%&~dr;-D9r9EWm*T*%NZCW=5eWhz!)-JCKp7w7Aflb8|fsTS!=XzZjD zaVuWx*Hio?$R{m)QPk^%qNNd>gjKrb{NzLDF=}GV-n-FIUH$uMcomk;J0ez7U4zj|)VOW}eI0*PaM-u=94Rm^5`F_oLTNBmMq? z5m(!l0;97jg(L1_;c}0mD8I73@Z;Kosxm9?kgxrk-^0&2$t@ewB?ahM;!~K!@aK2- zMqNVAp(@!t4I~54)x%g_YB)lt=%g{>RRZHP%`W2HcBdL~#ie%>fi;=$Q75!Py5={zlgLm@0|?I}FsIW0 zM*!3XEBeP6`R8b@w>og%QG%sDm>2g))=KRS(z62S0qIPL{Ymtwg}*5Is&rvXU8ALCAB zJFpXsaC6g`$pD^8D#!U>vyP3{Uvu+x%*8p-B|(;vz;+qYQqT{D03%jOXmw z$U9DY4CfUk%$`YN2Lt`0NzXM}Da$wnC_R3(`GBzll~zu`WDkEz8eXNCs|Lu&YK`29 zfCF#@4&2czv2oJ}udPoo?8_0jiB13~p8o*Sr}Mwi<^-G+HAXpCZtU^UA4;(71&zS& zR~R2k&TOk_fB)6;ZwH?vLJ7Fb9>QdP{{VR79<=#w*5)>rbbZhE{XV$ad;x)FQ1I=?3MM>Kl zupH;9rpAw_zh`fb_Wlmg7e&^NZQyV8d6Bmj+}SGLz>;(5E7PuZUjV)2mvc|y<1;^) zW-6tL&j&cpbKbrcZ;2NENZWM`Ym!SA19#Gc@eR9RYAh<6eC5x0Tb;o$D8E z53N2s{?j@xjp4i9Gef&;tLfuZ6T)zjsplZ~J+bdzAMg`X(&6~4rrm22TF0laoFq2@ zG(ePKykPp*lSyW>7pQ;LIQ9GF^prSe7pNd>RMi-@n2K8(d4$8%2?vs(2b~AMxgq49+l*u z@SR)CurgjMj^}?$mgmLRZOFTbp6t>LgZb3ZqwM;XTEDcl&#-(Q@gKo|27VOD29c^I z)!2m0R03p{W?XJL7~tbS?$^#*zQ1$gPY_Rie9v_}xn_}$S&x74t}#4q2ap%-aPSWS zf&4{j>ApCz4oh9cjLU@?2Pcf==ZY!QQBC(ErCxWb^uO%O@%K;g_K`k~tIY6024#kJ zCAR0PW7E?W=f52Ey&XJyX7I%8KA(3Vog$Dz$0;XpT=wXGq}Q9>c>79#hLU*Kal>JS zO9zT9u33DIP5`{*GmM`8yi`)B%G+H_t5ez~eun&Zhi2lVaUXbbpK4DiGnJ4j028=o ztHCy zHsi!L45=DT7st+AIwlNp7b+ki$N}dQx%{L^72hHyddtmp)Go8Yv$OxUzdj)RY tb5cb%Vv#T~!=2ukraN2U?UphB00JCS9_l-2G@BFH|Jfl>v@8Gs diff --git a/apps/slidingtext/b2_color-03.jpg b/apps/slidingtext/b2_color-03.jpg deleted file mode 100644 index 96c8655cf16085d77710fc9e5c4ef126ec113663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62383 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%0DE96eCySd41T*=v8bL_&Q6t|5= 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

-6FOCUE}7o=xtT0bk)dr(k8u80Hmg5%5^u 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�|9%ICH^`d7s$*!M}5 zhzIy_`Bj+PoUjCXW}q>#=c@JtfPY$?00swcC<96;<7{opkitOc&c1GXFpf!ng zZ5;*&CGkywy|KNs7>n%|@31J-GVT2ob!-t z->)?bjXa4WKcy z$r_!=+p(YiwKr0?4S!W_fpMc2=`kzkB|XFr$!0A9F@G!YTEt_T3g>~X-{*~NSH8=A5_`gU9DbuoB*LwEaS-lK6TQVUyHMkCHUG^`J|-2$k~ ztfrabTX;Mvr`TwBnzJd^bvtWyxz%oMqQELRg`VxPYW|y;zokyod+};wtl-0b?TaM-CT!(gP z0Lf-0kJR-w^asG7gZ?r2#p9g|!2Su)?zPQlR=h+Jq7h|b7UdFMUCE3`1VEN%C!Q2# zmV2J3rVk&wr6k^cbNax=iMgW|0EmPvqehP7p+SL*zi`7JJeXAb2R zGaOQNm+s@Mf2Yj*i}rQ+Qa%WLA@EPbNcBsdXn12sj?UvzyF`v#sd2hS3W@@#VnVJs z7_WY}Rc={w!111g{PR>JP&fbq^y3wN7XWZRVZi6F`TqboufW`;R;#Huc{bbgZ*%pA zlp?9eWN50DA1EXa!@W))q1pjFV>qZ{VtE{ou5nY1r>;TH4;ZU{>d=DHOxOdrOrE3O zu13mOZr~HoHAPo&8-Bewtt&{`m@Ww!`Hm|aG{ERB)c{aFqqSnD|oU- VMmyH^x_7`~=ml=C)J@r3|JnQ@`rrTn diff --git a/apps/slidingtext/format-02.jpg b/apps/slidingtext/format-02.jpg deleted file mode 100644 index c8b7a5e605a3e2b07dbc4543d7132279f5c385ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25894 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 diff --git a/apps/slidingtext/format-03.jpg b/apps/slidingtext/format-03.jpg deleted file mode 100644 index 5dfdd8b238fcd85277a37233577116d0c5f3db48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29559 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 MPau6ORTzl>*{ZNn>;M1& diff --git a/apps/slidingtext/format-04.jpg b/apps/slidingtext/format-04.jpg deleted file mode 100644 index 19b01fd640127112e28054ffa4a34630250ad151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27813 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 diff --git a/apps/slidingtext/format-05.jpg b/apps/slidingtext/format-05.jpg deleted file mode 100644 index d6bd2b9aa2da7f6a76f40f97fb77cdf82a221ba3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30400 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"%c0T;f-O@3*J&L?x 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%0D{{O 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 diff --git a/apps/slidingtext/metadata.json b/apps/slidingtext/metadata.json index b2c7f6f17..098fdb747 100644 --- a/apps/slidingtext/metadata.json +++ b/apps/slidingtext/metadata.json @@ -4,6 +4,7 @@ "version": "0.11", "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", + "screenshots": [{"url":"slidingtext-screenshot.english.png"},{"url":"slidingtext-screenshot.english2.png"},{"url":"slidingtext-screenshot.hybrid.png"}], "type": "clock", "tags": "clock", "supports": ["BANGLEJS","BANGLEJS2"], diff --git a/apps/slidingtext/slidingtext.settings.js b/apps/slidingtext/slidingtext.settings.js index dd7d3ebae..e13c857fd 100644 --- a/apps/slidingtext/slidingtext.settings.js +++ b/apps/slidingtext/slidingtext.settings.js @@ -70,7 +70,6 @@ large: { size: 'mlarge', angle_to_horizontal: 90, - speed: 'vslow', color: 'major', scroll_off: ['down'], scroll_in: ['up'] From 70a3a50a01a291dfee31e9808f11d3cbb9080a8f Mon Sep 17 00:00:00 2001 From: Adrian Kirk Date: Sat, 15 Oct 2022 23:20:56 +0100 Subject: [PATCH 69/69] Sliding Clock: Updated documentation for new clocks --- .../slidingtext-screenshot.digital.png | Bin 0 -> 1281 bytes .../slidingtext-screenshot.english.png | Bin 0 -> 1436 bytes .../slidingtext-screenshot.english2.png | Bin 0 -> 1758 bytes .../slidingtext-screenshot.english2_alt.png | Bin 0 -> 2448 bytes .../slidingtext-screenshot.english_alt.png | Bin 0 -> 1613 bytes .../slidingtext-screenshot.french.png | Bin 0 -> 1542 bytes .../slidingtext-screenshot.german.png | Bin 0 -> 1104 bytes .../slidingtext-screenshot.german24.png | Bin 0 -> 1325 bytes .../slidingtext-screenshot.hybrid.png | Bin 0 -> 1771 bytes .../slidingtext-screenshot.japanese.png | Bin 0 -> 1280 bytes .../slidingtext-screenshot.spanish.png | Bin 0 -> 1324 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/slidingtext/slidingtext-screenshot.digital.png create mode 100644 apps/slidingtext/slidingtext-screenshot.english.png create mode 100644 apps/slidingtext/slidingtext-screenshot.english2.png create mode 100644 apps/slidingtext/slidingtext-screenshot.english2_alt.png create mode 100644 apps/slidingtext/slidingtext-screenshot.english_alt.png create mode 100644 apps/slidingtext/slidingtext-screenshot.french.png create mode 100644 apps/slidingtext/slidingtext-screenshot.german.png create mode 100644 apps/slidingtext/slidingtext-screenshot.german24.png create mode 100644 apps/slidingtext/slidingtext-screenshot.hybrid.png create mode 100644 apps/slidingtext/slidingtext-screenshot.japanese.png create mode 100644 apps/slidingtext/slidingtext-screenshot.spanish.png diff --git a/apps/slidingtext/slidingtext-screenshot.digital.png b/apps/slidingtext/slidingtext-screenshot.digital.png new file mode 100644 index 0000000000000000000000000000000000000000..b06d2ef18e2b6be662be234a10a4cd9b360f3880 GIT binary patch literal 1281 zcmeAS@N?(olHy`uVBq!ia0vp^Yk_zQ2OE%lcx$B^kYXuz@(kesf*OvL4j^B$#5JNM zI6tkVJh3R1Aw4fYH&wSdxhOR?uQ(&W*-=jB=Ub~3Iyf8F-{bqNN=<=36} zjHp+U{a52}o3`oGx>I2z3pdete$%ARe$7`^_Fpo zOa5NW$#JQ*y*FEVedYW++0XdiU3z@D(sFUWwc5pFr{9*E?0d4prsex)p5^b?3mpF4 zG0Qq@`=*p7veo~${5ujo|7PQj8-ZW1%xqrj{>2X*#EoDdB|Z^R%cp% zZ)<&h{m$w+%WL;OKQyuI$G*SuV$b%J&WsnVp0{2xE^qzqhcPB6S!YNe{3dmC*|gjD z`|iA!D13eUuTkE+nzVO+(q8_JUK^|TJoC0;=eCr0R(tHf|5^Gy-*oF8)7!0oXT}Li z*B#8%lREU{=f!`Y+rwA=di3<$E_>VaMSGvi>EG0QbNsRiSp8Wjy$mieR*W1e5 zY|9INJw5vT%IgdHb_d73OgeC4>(7hKGdrK_NB)aiTJIgOEB40xllSEqOh39mnBcsH zhA8>lf5F>}s%!S#71y8t?DUEG{_^MRual6fTigzD( z-@MZ4b8wv8Gmm*!Z#5R(Z$AEhdE}OlpI&}q{#bG=y+7f4PW-!%Vf#IN&&gHvh+ej- zO%HXCTE95^QSFqke{Nn4$zAgIzJ0;z6H$NPta_tyc6~?UOxwqSyOpl}dDAE!=O(HD z+VIK4MNUpz`YL$0op;{jB3*Ojk`;^Unatidf|YM&+qIJ-&K&kQFKVc`wmI|fKks|} z+DS7)rJVo&tY($hpP%>aZo6EjZBLO#`HPH&of(SHH(WF_y#P$c$xE%hR?j_q+A)HI zT{g4d=G3$phZ)s-uBJcxcE97S?fvMKSJq9-CzhO3bicKD^NpEN?le$?^Pf$(#c?iRxy*b*F={xVpWOE&lg$o07U=`a OFa}RoKbLh*2~7ZxdzDiF literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.english.png b/apps/slidingtext/slidingtext-screenshot.english.png new file mode 100644 index 0000000000000000000000000000000000000000..14c91ba438d6dc75740e8347ce7f41129e81d078 GIT binary patch literal 1436 zcmeAS@N?(olHy`uVBq!ia0vp^n}K*H2OE$~QRZF@q*#ibJVQ8upoSx*1IU*wag8Vm z&QB{TPb^AhNYBg9P1P+ z(b?#X_cYkcjoR7Qzvdcp*wxar@PXm4J=(os0M z?o#5hD4KHt2yK4_&Q1J@b}s~9g#C_bTs^ZeT(&B7!ui_B@A;PhUVQeNZytKH|I{7M zt2=ED*>of?Sb55@W#{763xbwDZu`NjkpF-^f4l6ysC`D?_f2@mLWH#3rKNe=3bzflW&Z)%-=kF%6RONYxryW|I`qE&3+?~!~ zqtY4QYyXQmFzsBo@^B2-)kx;VeGUtrAL((M;0TN`wD=7y6`CRBY`u2!<|*?$jup#D zIB!3d!+TM~+`!F}@6KzXw0r|M&Py7{8?zsNJae)C?rMjKx}|rL_7s*(lIU6ZTl~Os z`4T(cW$fo>wauJ=Y4NgmQ!QH$9M-y%w(U&spOy)Wwmj4>&fjwR`Nk{jHwU}TRbewb zyZc!~RNH=L3ogBTA9?Se$&jp4>zo;V`P7_hVU=Ay$<;txr=ll2Hp7(Xe8sTRZ z=d6E~*A#?5+db1Peg39X)qJYwElU?3RNEu4C*A1ai=@}4+LOxHz1aP^c2sLQ7i)vP_omW0xHcPLc8}-_%_}>|u`9AkPr>WkS2%piPyZiBe_0?h1 zPgGvsb0T<&k$c*{_p(LjS!XIQ&*hUZzkcWL?8#BRE6Xc%vsg5r@8R6$UzR%0_JHY{ zs(X7&_cBL(^6l3-T=uT@<2PgZ?N1$VyguFdJ=wn`6vr?PH-BDY$w#swwx_yi5 zYucW;m(~eu?`>IaR^#XIlofj@WV>YITlGJz7ovU!g>F1zw6EN8%}>@-L2u`8s41*m zW5z1U!`KQYXn zt4t=kKCo3jX>(P(i2eL+)8iUDet`>z=8U|a-W86%kbxyByz=_Q~4H!C)t3CsbaQOpCg=d)3{%+vDf`p|0J`&DxYtm ozLs%{frY#gq})M?^?yuuCswu2+W-3&uy|$gboFyt=akR{06x2%EdT%j literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.english2.png b/apps/slidingtext/slidingtext-screenshot.english2.png new file mode 100644 index 0000000000000000000000000000000000000000..3005d19ee465fc9aa48fe2421d774c35e7d99763 GIT binary patch literal 1758 zcmdUw=~vQe6vu5yw1i`J%1}$kOlvaIh>T;HlcOeTnp-Jm%9sn1fkKIE{jzeIw9GMsub%7j9q)0)`qdGcZ62|pdAhkwP8+u^@wMBPn-TVoZZI!OVw}ZWwy%tx^QU$(rqX)PJ;?4oa3*x+w^7y`+Si12rW zLLkNeS5^W~7Q}>a4US;tvg7D*fwYdRno=B8rKhY~tHxfKDpioA#0Sjci=p)jdHr4{ zF}0vsQ^vFL?R0)3XC4xN24997y|<`?*_nyH69iBDrXnU+eym)5E#RckYI- zI3~}-dd^k*PZa}Roa9wO0AWbTAgg)zb&poXSVD-slimqx<=bfw0U(DvSmE_5KMg#4U>b)QFYeLy^0WNmJ>Y>3RD=G!LK2p1IPUj4J` z!L+Ux;h{V{IDe=Dl7`Ii=GpELjIy6YKm+M?uAcKabbA35+R@@kg`QWl9X>3q6rph) z4!j3V3Aupg?FZI#t5wG;S!Mj3uy0PZ1!Q4@_kG9wQk9YTR{^855;s?u^5!a7$X{8u z$3<`|>9R>QT`EZp4EsQS2SWwfDZYAuvI^^=k66?Anz*?c$1E#Q#fK4lZkp{4fGJ&BM6Trq`kezRRHsy{zy{X*2&Sxa7`>PcqXIu zY>OJzKQM`{J7bsEk~*Ki=;B4#hE{XA0)9K(Q0#{!!FyL59Klf{gEP%D00=w|Ye((vOd(_c<9PJYYT+(bHpmQ*XX3AvE4;073^? zFr^fS2MutVeG(yGlbS7Yb7SJR>q=E2g7h^djxpi&JyWnDq`1>6v(yI!%G?F3{D%RG zr_Tmk?LJXJiuXCU@tM7+VsWc=D5)-MIsC45UO-0Uo}lJ0jx3`9W{#k~hTghwzbGuq zy|@M0Bz*x3F=nBn;MYXk_D0eecQJX${h@ir6|!1|AM;lI= zw&{T}lSRion*re1W{CHHvUop;*m3zX+P$kJrQu!bP%@d4s+9}f`JGX>%8p2;$@8bZ zd0K%}j*!fQz(TW@8B%RgKUJ(aJK8TP{LN%Cb$$_r2U^)%6Xlwa4beM?M51qDA-Z6D~dolD=&A z@vvz(eeB?2C}E*WkEXU#w9V)K9wi@@lo*(yt}(hc2@N6^CrcBgsqoKlI7(%+d z1!XgRM-NAHx0-ez?z8wb4B76|?-ydQuFIQg=gKw#%iAu#oqBYPRst3SM^-b%u~-8? z1aEZkh=6s7umgLER7hw%K!LmFSE(GiT<5qfrv&M6Y1gKoJjL<-Yy_3y;Mf1`&AeS@V{>cT@lA@|-8jzD24I_i asWepDP(Lo1WhQ7pC>@NOk1Ne3;_BZD{YC2l literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.english2_alt.png b/apps/slidingtext/slidingtext-screenshot.english2_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..88131afa45f4a32f79d15bfbb3484f4eaf697b7d GIT binary patch literal 2448 zcmaKuc~lbE9>)XFQY{VDxln7rpeh@2Kf3#CsTNu5bcX5<#JdLJQP^laG2&bl zASMZ$7zM#ao{Ne~!o_0oQnjaW0O0H0?k>*$7fR+zkDVWO&_2p2;YaGrf>9`WurlXH;2(Y>x-q)~y_|w{JF~F*E ztZsZg+mGsKg*l^nR7dix>Q@sZ=o2-%2Js~Sy>6EA$R*@|9+w%wFAFR63B!+S#VrZL z`+9-FSi#gXeoQzm5Z{UJ`TSEx0jV8bbc10G7Yxf0Ke*=vo{x9HinmszyD`JzPKAlV zso*HzpdJeQEc5c!$EoI-ll?TW;^uQ>ecv;zUwR zpEYQW(kcd+yg~op+xue~mg*i9-N9igx~vhsj>FvNJ8LW6p4T{WHt~>#(C~>t&-MGCfYmcsI}jXKm|qC;8*QNzgeqB~ zBHO|1XfMa2Bh?*jrFBC2E5B(h_uZq!NJrzPlZ6hI(%9<#Fu>-NDxCIFoj31>Z>bqU zy&|TrpWJ*CX*bb3A9!Jx)6X%wJ(NAu+-%4dGq(68457^0vj`^SAfrU?L@m#8&*`}A zJFql~Vls*hHa0K(eLl&%?s_DxPn($;J0A&RO`b-%}X|5IsNSr zKL0_WdB~=^C_E=au4pnCT5W5zkdu@YBSMb;3SXFgBg8wyHPLp6VzaDvp0PMe0Ve|%~JkAo(EZ{~8s#BwwupMzb2g+IV5<`0zb=u?HiOmrg# zH3rBt$Mw>XZ^0flE$pEb-ZU+wQmzQ98HwTQjU&z3%dYkJ_=Pw}TMrg8wO{(R`j)ej zzF0X>4Voa`n?4vqlp|0X(VICi)s8= z-32CV`~}e;&W=r(R7(dtALb^MuOehSCl&+gI>6(*9!usH%2-+!teQ%mW_d`rf4Kwn z28=w*i)qOb#w3l6w3Lrlaylyz%R{0zp}qMQfDOVL<1ltPTxw^QD`>bGR*D8UDEjG)>RV2vE)3j@=* z_eWZA>KK#i5E#-nlD&qqHE9f4q?Wbogc1tF#El2xFi%P9R9H0m5Z#h^zw}cHMzm_* z=#5CID0I0WtTFc1y#lX+7AsqCADmLY2KHU3X5!b3no0*Ax0U}b3 zo`O<)PwgTe%_2O5zv?w9-m>N<&EuHOz2ynXuVtvctMvy`_Bzj*u2rG+khCYt0B&m22J8z_f=6)D$4pDTXSv(24S&8$2BwKo{1uY$%ymi%r@P%TD-N=9&(rhP<3jB&z zb?^To>6`9;T$1B|GamNKo6v9aSKoctc_Y#^S6RQ`v%Z_SoJA4i!$c%RHubPE^-)4w z&|TW@TX8^nSTa8jd~5etM!otTEmoMBDXsMHs7Put9f-TQXUj8_S>w(@�sXNac|q zh%Ct&F3B~K6`cfOTU%+M3d`_h(K=7TTRA#f*}v3yTC?u4cwu2>J~EVS(sinj7jIs@ zGpTggJQRC8pwrW*utN4G7gUuzR=my8koWC}7{w#D&U=TF1It^8B~5`goXyzm zD`%@}dLmtqJuR|G7Lmwl35O6UOgt;Pc0@Svap;;}T`_u1#oe2<2am;e;VrgdDX@SJ z`U;;{)!pz#>NwrybSFZ3g}DGK(u4G*6uMY{?7ek{a#|MIap=vwZk)^2nQmJzkJ7Lm zEPj2%r**RoX$^CfPT!Hj)l9Q4A23i3Ha}^=oAwZ{`KZ9NPeuMXb7(#4dPr3$Kx`Fslu8575fW^YH; z!v|h7_`G>m>?LR>GSh;8e!+IJs4MQ?PIicwHc7Xk->@_7=Fm?+3pLy$C1X-hEN8UL z-YM%+uc1-qC+*qSzAGF4`~vB%w0km;8)`a;R44Ni8@DxOPw?MPvVXHZ#wx{YLVoLT zZyc_LUVWcu9wTA|5to1F-mIgAUZ1XL&AYgFc>kz-O{pjP&H-W_!KZ)M^68hV$w@s6 zAkFja^-NajA%m3>Szw-?hz{;Aj1TDQSd{M_m~eEmYc(es_f1-qJmqz*y)1t-P*YKOuYfSOI&U^mv1udru(S`EN#1sbN!Dw@>rX)<3-BJxWE`(mn+9zf2>{Ai|IozHVFb zKi2U#C3(2A;mBP(`)3>fv=vov1Z!Wo9j9GA=6&kL-z}zl2S1o{ZJ@Rsqf#n>yQ{ZL J-H#_P{|g^Y+9d!0 literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.english_alt.png b/apps/slidingtext/slidingtext-screenshot.english_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce8137108e87f6d169e4fa02a2ba7b6ab505619 GIT binary patch literal 1613 zcmb7_c`zGT9LIyGh-!61Nm6%FM@qHYb=Q5gLM4jQsynFrh^vl87p3edYaO-jCQGQB zI8usHQLAmJM6e7&kfNw6+4P+Lvw!THdG9xG-n^OL`~1GY?@O~mnhAnoU;qFhXkl(_ z%Zc@zSpz!4S!w0+-JAdnHMBs3I3pJ1k;>Ua!%Q5)P=Q`ySl19wfOkNkzb7KpJ;c*9 zAQTfA#^UMG0|0nuEQ}4%kwt5C+RKVFLME=o`MdF+i+HV7SU*rbvADTAwR>gr9Z^|8 zctfS~A&=1Z=!!VNROq(3EGgSGK{^v)1mn7Qf%~WrQ0yg0t>VQ0J~$vo^XU{Zd=6K` zWy**Pj}F=X+~vg4opsUG$D|jaIcH#7FKi&sQou#AK*$~;Qvc8`K)#5fiN1*=pLN#@Me#AEXT%i;1VJ`lD z*HONF{QX?RUr|3f8w+%0ECxRp{$gem<% z)Bm|qaTr-B1^i!}C*aWW>g+!r3Ez7By)M>rMlg|YRbd`en+SQ5R0@Yq2))Affu-xj zq{#Vl9}y)7hp*~R82i~;Wt8ncR$NqPV+vq}7_z9!EsirJEnpHo%*8nlz`xEN53rNvTBnR<@< zqKHBIKKpzHj)YZsr(?Zmw&#@fbSrh&P98^cKdxjcTwP6OcB6Vk) z`CSjZqT`dUD7O0dP$eU)mDEuzG^k`D!bdB%fkycJ^dUv6s!LRBel~H0=ir zh%J-stl!$0`ZnX#F47h0lt?jxOV0;yp*J&I@#5_SBGO@4%XE5}5jE9VfiY~Fn(QbD zPg{az-x=j6ZS4 zK3I&Zsvg3fK5!L1d%EG4d`wOmcf5lVX?u}GXVfy=e4(Y382cB!A^dk1XFozei!W!d zxyl$XpFC)ly#!a3OSJ^pw=<{U$_au&haZ2@Ol(coSam3uZ#KA_>{F#eNLF#yW zNHoVh3O5NJWQvy1El2#t`jqgU0w}G=*TaDQ@~ zN+Nh{AMDHw(dFrlX+hDhvpRe747Pl&`p_&(!bq`=lRYb>wzCDIdC%TIHmCr6Cknl^ z-Vw-@HSOZu*sW_BQIMTSye5cOgM!xDYi>v(hHIzvJNMg>Q|ktkci9o2pUfBAs=~lw z**A<1t~A0o2p+By?wYTaVJ?DI(9J>zYD3ZB&?>!WJUokfFnm|R3jUrb8rX%xI0h^nZm;GHUXIL7 zBfJ8>|M`QrafwDw2O~nbS0jm;5aGwWQ9$M~A3HL@vgD-j@$7ex82AL_$0qq=#5>Xh%?n_lV$|>YOO2QC) z;J&{zJpao3`|+~Vzuv73U&Z~2<^P`B39cJAy;l3|cjx{|afVN7anEccw{-qK`2CZb zT@2BTx}Cej&61KfU7xLS?%dZ^*KJGff86^tyCTVN@6NheC%@j+zane)FMiXX^hceR zp)2k_db7^{XRFh_BTLa)hvI95>;KziZ_^NNy`_8Z7tn%RVREbKlchzAoId?$N(p z-+Os&%RYXY{VL0E{rP9MpxBvfMR z4c)b0BzB+tzf8C=oNyEqofd9aow>d2czSv4x8h$`t3Uh5)_3#%b~^#kw!bJodrL*K_RNiAn!*x!y8BX^d`e$l&kWeqwT)7)h&^`toh;Ut~|x%+%;DBbD6MeMB1hq>t8QF-~A)J{t~zN{Hwp-{JhG~BERBz zj%oeo6T6@9KH7Znc*a}d7!iZ$GjGJ1J_Z59r|8@B_4}6}xbZ3;Xv>QA`{PB6OXvJL z_@MdA44=l;uCa5=zgryH|7#Mu1LrEeUw2w;hEnpX>8}_%a&6t@ST?R$$*i#Lt3;*1 zkwwe+8g5)me&Q(5J`VD B{R{vA literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.german.png b/apps/slidingtext/slidingtext-screenshot.german.png new file mode 100644 index 0000000000000000000000000000000000000000..0726f575da82492b01fa873bb63e3c2c9fb1fb8d GIT binary patch literal 1104 zcmeAS@N?(olHy`uVBq!ia0vp^Yk_zs2OE%#b=ma;NU;<-L1ke-*Ho2px!T$GxcSDcYw@}7CW9RmaNBTpB{kcv5P?;b2#3qq^0(zvPfqv%r8D?6gWw9{~t3i>&GU(ml+)G&i!LeSX(H;HhG$cnr@+s zx6DN$_bo>Ru`+)Kzjm;nAHRR!w~v3fUwat-_l~Xo{$u+Wf06LsU#;tI!{)wP?CnJ_ zxevEPm-J8H6d$>)`8LI*bo1MJTh=rE z`1$9S=}j-@-Tx(*zP`IzJ@4gt``0SlLk&+iTb`HObNl+UM|(dp-)mmB`0nqbYsq_( z-X30O`ZjXC`?}uukAJUEu)g%BbH-%VXC~5bWrQc6y{MvAr0kAaTbAh@zVKr; z``QmW7pM77-u5Jv*_-8_YE~t~VTCBBwS8r0e?OSUvB!C;@Wy-2Yc>`)RxO&wo|GUF z<`%6j^>L&7l_j!l2QL?Fx%W58?_=kUd#j(zzu%w!{J^c>yXI}vKkIiZF`{oxO8eW# zxo=Lrb^f!JJzB}6aCfMvFBTIGkV_P4W=C%k>S zWbMx9`;Kkph&I!_b>oKk|Far}O4qg&_~QzB^!S)F{dVrMm;X&4J+{c(mHReXr?Rx> zQ>l5T_hYs2@{4@U1=Zr4rN7_1Bjm8=`h}-UmgX-~?aSya{xR#?uE~3M&D`=&Vx97* ztIgq!Rm}_Y+ue6RlQpbZHv8$pUd`M4Pdq)CJmdT2%2{d;%kr)+iLH8N_c=3m$@NWD zl^=A@iCtS5y^cfq^694sE&BE=6?{84bC;E%aqjws8n+5%x|gNDeA}mV$L{Bksz)VT zZ5~LWq^LQe^49{BUM5XTU;j|AcK?^^>iYFdZ(p3}tp4`a_U4B(x4UN-1x8eWRc`wtDe2t0jO{I{vZv$P=XA`Ra%D?p|BZXg-_H`hemea6 zrp!zGs`qBvo}Lt2ePkQk)mLnuMl#!4|J;n*Jn8*Zx!JF8>}ieBn6uR4mT}Y9_JhW* z7iVqQ^5g<{+C0|x{S8~g;%D7>#9lgO&XK7xvtAS*Ffu6?{E@8lDACXOqLZflHAk7r m(=5QDs2ugEV?dan`S(u=Yq0UT*$XTZ7(8A5T-G@yGywpLWF-0k literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.german24.png b/apps/slidingtext/slidingtext-screenshot.german24.png new file mode 100644 index 0000000000000000000000000000000000000000..99d93b47595869dac52ff089ab7c7f438fce4967 GIT binary patch literal 1325 zcmeAS@N?(olHy`uVBq!ia0vp^Yk_zg2OE%FBgCN#q*#ibJVQ8upoSx*1IU*wag8Vm z&QB{TPb^AhNYBg9P1P+6#eB`Bwv0}4<@pQ&-4~qr7PiVbaa*>C z6>;c35r{gWxMhNKhGIMIB>tTK`~3Xz^v_&!_v4S2-PgTbeN(2t?4GQ3w)M30eOBhz z&Oe=UYfWx`*Su}dSSseMx%I7jz45B~{r;CXZq_T`p}Hl!`hZMpf@aR*_FDqi>hikg zee*f(`K~Z=!I{U0bfyWP&E`-k->|3Zr|cKXT2TX^JABmf4Olz?)kHf z?N7T?*2SJKn|f_BZ|>?lr{wR)e~B~y^iJX2Imb-f^WvSQv+tZ@UjJ~J_Uo#rrY@za zlIOpEjk>RU701FlrBx^~a3Dzae3tIWls-`DofjlN=YZOaVJ4SV%#iZd4X{k(fJdwt2VQC}OspGdQqH_iR+`TtonoUAXeeSYSIWahlwEpn$N&z*fyDz?AlY(aqA2ENT- zqrP8Vxcz!rT2W4X=I*TTwzn^@3)7x@Mx^WJIp3G9mp7NcU-!oS^Mvru%DyEFw||_~ z{Mz>9@z)m%Uzb(Rkv@G}dU^A|*4hlHcgAnS+KlwerKe&i zbT9udeCesv?ZskWa*TrtvX`%nntngX>-W*OOnDn){JCp!rpcR;alill-jH*9TaI)3 z>8kA$gR|rfTV7?Zeb}}wV4-j4gLMmD_iKGG2xAhsR@(A9Q&1j~$epvJUinpUT)bRl zxW+Z_%L0)AIfEnSCR^`$p=?spjhmcHhta-Y0yAbw>5AJ8OTRyKSWy z>mOSAL2r)nm4)GHEso*aY;J6O>(BAyTi@>1pGt1|yZe$dw&xmuop=3wgs&#m(|YWv3q5!b6P<1+Ln+?2VXho z&o2(HS<1Mc^=K;J+ZRHO0T0gvJw4dS?GzncX^@>cLCF4OTt_Cmh=tQn{e! z;=}2u?=;`a>^@(gJyY4?{mx~t=7rg6eA)JEnil^(#T`{YHu9Z_+_$_{j;6)KbNj{X X|MGu{io6Ic?-)E?{an^LB{Ts55JZ0| literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.hybrid.png b/apps/slidingtext/slidingtext-screenshot.hybrid.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae7721fa322ebe26fda9c8cdf6af8e35b1b4a2e GIT binary patch literal 1771 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 literal 0 HcmV?d00001 diff --git a/apps/slidingtext/slidingtext-screenshot.spanish.png b/apps/slidingtext/slidingtext-screenshot.spanish.png new file mode 100644 index 0000000000000000000000000000000000000000..7160f29d68187e991e73ca3e3d3c6fd679363828 GIT binary patch literal 1324 zcmcIkeK4B`7`LRa>6@ax=}gD0yX)pVcB8&26(lU1#Q6w8YhegRVv?Y{SKGD9SW!9+ zZio$ieU$l_AZ=|{95*yEizHf+>03$WyCN+A?5@}C`d^>B=XvhA-#z#I@%#Or!cU2T zhTsWMPfyPfALLKc^$uO$G|<;o|DXgw*A6lK@L>kJ$TRrts%|!8;v$*kj6`P6xh$Gq zQhG)j&7P5vMWdxNKF?sP(8J!koguuxZy1ZaDh^Kn)6pd0oXwdsHovjB8gOZ_Ypxl6 z?Vb_EwD1h63VVH+sa!&*c>NXN?i@2(v@P-YI<)31(~g{N)m08hrB%#4^iUk#Y!q18 z0|Cj_j)Y(+lmZq{lj18XQ4QTDZ}E8lLN)^|)!=Ym-+5@z?2TNieLXP-E6E+UD`IS`Ci6Y@H$_#CEQwG0PQs>(YwE5)+!;dY z?)!(mjJtCcTt?j|5en~j8Y)Y+rzYd#PM02hj5x(4(OZN`7Kjw1zeU?k-cti6qx%bz0TZoU9o-IH&sa6KRL+Al}Lj7#4aiQ;0fv2F4S28KwheGYuw-NUODuz2R?PrFTl4NBHsNBT0|3JuQ^k#HS z3V(Hwn2lwdpCG`8lz?3)VbQ!;HVD24@taTiIF zH%wf&PO7~?@!%l<@$W=gZgw5zBaRX!K&0}=fMu=3ZE0Ol5i#!o3~5hi(L;FPgdHG3 zJm)$E&gGhU7uJyrwq~th%r4rNwfZ)95@D7|3E|(WF8>yT1!~8sV4lVjJ5xim0E-7P z6FCiLlfDqLq|xy`WceJ;FHyh?kPs#98DF@tV{vU%NRhSAoc9=^V(9j%>CMMlC#>Zn zYqoi3KMyEb4P<9VFydO(LTC)%A&O2p-nX&i1)ASl zl;7o}dTq$`0r>H9TREz3Wcp72L&{j#T>_y$5X!MVtR&0kr=u|9Cq}TnT755mKKz#k zK@eo9A;<4E@j{RX`CL?j3(SkEq6Z`UaEY{40E;f7LEV`YKh0><(oXaGhE)fx$?Es0 zLF$p8Xe|raE!N62D>c6HU7eMEUvA|Wh#Yv+mvL;c-O&Hoy3S Fe*mIYdv^c; literal 0 HcmV?d00001