11{ // must be inside our own scope here so that when we are unloaded everything disappears
22 let s = require ( "Storage" ) ;
33 // handle customised launcher
4- let scaleval = 1 , vectorval = 20 , fonts = g . getFonts ( ) ;
5- let font = fonts . includes ( "12x20" ) ? "12x20" : "6x8:2" ;
6- if ( fonts . includes ( "22" ) ) font = "22" ; // 2v26+
74 let settings = Object . assign ( {
85 showClocks : true ,
9- fullscreen : false
6+ fullscreen : false ,
7+ height : 52
108 } , s . readJSON ( "launch.json" , true ) || { } ) ;
11- if ( "vectorsize" in settings )
12- vectorval = parseInt ( settings . vectorsize ) ;
13- if ( "font" in settings ) {
14- if ( settings . font == "Vector" ) {
15- scaleval = vectorval / 20 ;
16- font = "Vector" + ( vectorval ) . toString ( ) ;
17- } else {
18- font = settings . font ;
19- scaleval = g . setFont ( font ) . stringMetrics ( "X" ) . height / 20 ;
20- }
9+ let font = settings . font ;
10+ if ( ! font || font == "Vector" /*compat with old settings*/ ) {
11+ let fonts = g . getFonts ( ) ;
12+ font = fonts . includes ( "12x20" ) ? "12x20" : "6x8:2" ;
13+ if ( fonts . includes ( "22" ) ) font = "22" ; // 2v26+
2114 }
22- let height = 50 * scaleval ;
15+ let height = 0 | Math . max ( settings . height , 12 ) , pad = 2 ;
16+ let imgsize = height - pad * 2 , imgscale = imgsize / 48 ;
2317
24- // Now apps list is loaded - render
18+ // Load widgets if we need to
2519 if ( ! settings . fullscreen ) {
2620 Bangle . loadWidgets ( ) ;
2721 } else if ( global . WIDGETS ) {
2822 require ( "widget_utils" ) . hide ( ) ;
2923 }
30- let R = Bangle . appRect ;
31- g . reset ( ) . clearRect ( R ) . setColor ( "#888" ) ;
32- for ( var y = R . y ; y < R . y2 ; y += height ) {
33- g . drawRect ( 5 * scaleval , y + 5 * scaleval , 49 * scaleval , y + 49 * scaleval ) // image
34- . drawRect ( 54 * scaleval , y + 20 * scaleval , R . y2 - 16 , y + 34 * scaleval ) ; // text
24+ { // Draw 'placeholder'
25+ let R = Bangle . appRect , mid = height / 2 , th = g . setFont ( font ) . stringMetrics ( "X" ) . height / 2 ;
26+ g . reset ( ) . clearRect ( R ) . setColor ( "#888" ) ;
27+ for ( var y = R . y ; y < R . y2 ; y += height ) {
28+ g . drawRect ( pad * 2 , y + pad * 2 , imgsize - pad , y + imgsize - pad ) // image
29+ . drawRect ( imgsize + pad * 2 , y + mid - th , R . y2 - R . w / 3 , y + mid + th ) ; // text
30+ }
31+ g . flip ( ) ;
3532 }
36- g . flip ( ) ;
3733
3834 // cache app list so launcher loads more quickly
3935 let launchCache = s . readJSON ( "launch.cache.json" , true ) || { } ;
6258 draw : ( i , r ) => {
6359 var app = apps [ i ] ;
6460 if ( ! app ) return ;
65- g . clearRect ( ( r . x ) , ( r . y ) , ( r . x + r . w - 1 ) , ( r . y + r . h - 1 ) ) . setFont ( font ) . setFontAlign ( - 1 , 0 ) . drawString ( app . name , 54 * scaleval , r . y + ( 27 * scaleval ) ) ;
61+ g . clearRect ( r ) . setFont ( font ) . setFontAlign ( - 1 , 0 ) . drawString ( app . name , imgsize + pad * 2 , r . y + 2 + r . h / 2 ) ;
6662 if ( app . icon ) {
6763 if ( ! app . img ) app . img = s . read ( app . icon ) ; // load icon if it wasn't loaded
68- try { g . drawImage ( app . img , 3 * scaleval , r . y + ( 3 * scaleval ) , { scale : scaleval } ) ; } catch ( e ) { }
64+ try { g . drawImage ( app . img , pad , r . y + pad , { scale : imgscale } ) ; } catch ( e ) { }
6965 }
7066 } ,
7167 select : i => {
8581 if ( lockTimeout ) clearTimeout ( lockTimeout ) ;
8682 Bangle . removeListener ( "lock" , lockHandler ) ;
8783 // Restore widgets if they were hidden by fullscreen setting
88- if ( global . WIDGETS && settings . fullscreen ) require ( "widget_utils" ) . show ( ) ;
84+ if ( global . WIDGETS ) require ( "widget_utils" ) . show ( ) ;
8985 }
9086 } ) ;
9187 g . flip ( ) ; // force a render before widgets have finished drawing
9894 lockTimeout = undefined ;
9995 if ( locked )
10096 lockTimeout = setTimeout ( Bangle . showClock , 10000 ) ;
101- }
97+ } ;
10298 Bangle . on ( "lock" , lockHandler ) ;
10399 } ;
100+ // Now apps list is loaded - render
104101 drawMenu ( ) ;
105-
106- if ( ! settings . fullscreen ) // finally draw widgets
102+ // finally draw widgets
103+ if ( ! settings . fullscreen )
107104 Bangle . drawWidgets ( ) ;
108- }
105+ }
0 commit comments