From 395d7ac62faa96970ecd55a7977e49966d319e30 Mon Sep 17 00:00:00 2001 From: lu713691 Date: Sat, 30 Jul 2022 22:47:21 +0100 Subject: [PATCH] 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) {