@@ -81,7 +81,7 @@ var onMessagesModified = function(type,msg) {
8181 require ( "messages" ) . apply ( msg , MESSAGES ) ;
8282 // TODO: if new, show this new one
8383 if ( msg && msg . id !== "music" && msg . id !== "nav" && msg . new &&
84- ! ( ( require ( 'Storage' ) . readJSON ( 'setting.json' , 1 ) || { } ) . quiet ) ) {
84+ ! ( ( require ( 'Storage' ) . readJSON ( 'setting.json' , 1 ) || { } ) . quiet ) ) {
8585 require ( "messages" ) . buzz ( msg . src ) ;
8686 }
8787 if ( msg && msg . id == "music" ) {
@@ -105,35 +105,35 @@ function showMapMessage(msg) {
105105 var m , distance , street , target , img ;
106106 if ( "string" == typeof msg . distance ) // new gadgetbridge
107107 distance = msg . distance ;
108- else if ( "number" == typeof msg . distance ) // 0.74 gadgetbridge
109- distance = require ( "locale" ) . distance ( msg . distance ) ;
108+ else if ( "number" == typeof msg . distance ) // 0.74 gadgetbridge
109+ distance = require ( "locale" ) . distance ( msg . distance ) ;
110110 if ( msg . instr ) {
111111 var instr = msg . instr . replace ( / \s * \/ \s * / g, " \/\n" ) ; // convert slashes to newlines
112112 if ( instr . includes ( "towards" ) || instr . includes ( "toward" ) ) {
113113 m = instr . split ( / t o w a r d s | t o w a r d / ) ;
114114 target = m [ 0 ] . trim ( ) ;
115115 street = m [ 1 ] . trim ( ) ;
116116 } else
117- target = instr ;
117+ target = instr ;
118118 }
119119 var carIsRHD = ! ! settings . carIsRHD ;
120120 switch ( msg . action ) {
121- case "continue" : img = "EBgBAIABwAPgD/Af+D/8f/773/PPY8cDwAPAA8ADwAPAA8AAAAPAA8ADwAAAA8ADwAPA" ; break ;
122- case "left" : img = "GhcBAYAAAPAAAHwAAD4AAB8AAA+AAAf//8P///x///+PAAPx4AA8fAAHD4ABwfAAcDwAHAIABwAAAcAAAHAAABwAAAcAAAHAAABwAAAc" ; break ;
123- case "right" : img = "GhcBAABgAAA8AAAPgAAB8AAAPgAAB8D///j///9///+/AAPPAAHjgAD44AB8OAA+DgAPA4ABAOAAADgAAA4AAAOAAADgAAA4AAAOAAAA" ; break ;
124- case "left_slight" : img = "ERgB//B/+D/8H4AP4Af4A74Bz4Dj4HD4OD4cD4AD4ADwADwADgAHgAPAAOAAcAA4ABwADgAH" ; break ;
125- case "right_slight" : img = "ERgBB/+D/8H/4APwA/gD/APuA+cD44Phw+Dj4HPgAeAB4ADgAPAAeAA4ABwADgAHAAOAAcAA" ; break ;
126- case "left_sharp" : img = "GBaBAAAA+AAB/AAH/gAPjgAeBwA8BwB4B+DwB+HgB+PAB+eAB+8AB+4AB/wAB/gAB//gB//gB//gBwAABwAABwAABwAABw==" ; break ;
127- case "right_sharp" : img = "GBaBAB8AAD+AAH/gAHHwAOB4AOA8AOAeAOAPB+AHh+ADx+AB5+AA9+AAd+AAP+AAH+AH/+AH/+AH/+AAAOAAAOAAAOAAAA==" ; break ;
128- case "keep_left" : img = "ERmBAACAAOAB+AD+AP+B/+H3+PO+8c8w4wBwADgAHgAPAAfAAfAAfAAfAAeAAeAAcAA8AA4ABwADgA==" ; break ;
129- case "keep_right" : img = "ERmBAACAAOAA/AD+AP+A//D/fPueeceY4YBwADgAPAAeAB8AHwAfAB8ADwAPAAcAB4ADgAHAAOAAAA==" ; break ;
130- case "uturn_left" : img = "GRiBAAAH4AAP/AAP/wAPj8APAfAPAHgHgB4DgA8BwAOA4AHAcADsOMB/HPA7zvgd9/gOf/gHH/gDh/gBwfgA4DgAcBgAOAAAHAAADgAABw==" ; break ;
131- case "uturn_right" : img = "GRiBAAPwAAf+AAf/gAfj4AfAeAPAHgPADwHgA4DgAcBwAOA4AHAcBjhuB5x/A+57gP99wD/84A/8cAP8OAD8HAA4DgAMBwAAA4AAAcAAAA==" ; break ;
132- case "finish" : img = "HhsBAcAAAD/AAAH/wAAPB4AAeA4AAcAcAAYIcAA4cMAA48MAA4cMAAYAcAAcAcAAcA4AAOA4AAOBxjwHBzjwHjj/4Dnn/4B3P/4B+Pj4A8fj8Acfj8AI//8AA//+AA/j+AB/j+AB/j/A" ; break ;
133- case "roundabout_left" : img = carIsRHD ? "HBaCAAADwAAAAAAAD/AAAVUAAD/wABVVUAD/wABVVVQD/wAAVABUD/wAAVAAFT/////wABX/////8AAF//////AABT/////wABUP/AAD/AAVA/8AA/8AVAD/wAD//VQAP/AAP/1QAA/wAA/9AAADwAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAD/AA=" : "HRYCAAPAAAAAAAAD/AAD//AAA/8AD///AAP/AA////AD/wAD/wP/A/8AA/wAP8P/////AAP//////8AA///////AAD/P////8AAP8P/AABUAD/AP/AAFUA/8AP/AAFX//AAP/AAFf/wAAP8AAB/8AAAPAAAD8AAAAAAAAPwAAAAAAAA/AAAAAAAAD8AAAAAAAAPwAAAAAAAA/AAAAAAAAD8AAA==" ; break ;
134- case "roundabout_right" : img = carIsRHD ? "HRaCAAAAAAAA8AAAP/8AAP8AAD///AA/8AA////AA/8AP/A/8AA/8A/wAP8AA/8P8AA/////8/wAD///////AAD//////8AAP////8P8ABUAAP/A/8AVQAD/wA//1UAA/8AA//VAAP/AAA/9AAA/wAAAPwAAA8AAAA/AAAAAAAAD8AAAAAAAAPwAAAAAAAA/AAAAAAAAD8AAAAAAAAPwAAAAAAA=" : "HBYCAAAAAAPAAABVQAAP8AAFVVQAD/wAFVVVAAP/ABUAFQAA/8BUAAVAAD/wVAAP/////FAAD/////9QAA//////VAAP/////FQAP8AAP/AVAP/AAP/AFX//AAP/AAV//AAP/AAAf/AAD/AAAD/AAAPAAAA/wAAAAAAAP8AAAAAAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAD/AAAAAAA==" ; break ;
135- case "roundabout_straight" : img = carIsRHD ? "EBuCAAADwAAAD/AAAD/8AAD//wAD///AD///8D/P8/z/D/D//A/wPzAP8AwA//UAA//1QA//9VA/8AFUP8AAVD8AAFQ/AABUPwAAVD8AAFQ/wABUP/ABVA//9VAD//VAAP/1AAAP8AAAD/AAAA/wAA==" : "EBsCAAPAAAAP8AAAP/wAAP//AAP//8AP///wP8/z/P8P8P/8D/A/MA/wDABf/wABX//ABV//8BVAD/wVAAP8FQAA/BUAAPwVAAD8FQAA/BUAA/wVQA/8BV//8AFf/8AAX/8AAA/wAAAP8AAAD/AA" ; break ;
136- case "roundabout_uturn" : img = carIsRHD ? "ICCBAAAAAAAAAAAAAAAAAAAP4AAAH/AAAD/4AAB4fAAA8DwAAPAcAADgHgAA4B4AAPAcAADwPAAAeHwAADz4AAAc8AAABPAAAADwAAAY8YAAPPPAAD73gAAf/4AAD/8AABf8AAAb+AAAHfAAABzwAAAcYAAAAAAAAAAAAAAAAAAAAAAA" : "ICABAAAAAAAAAAAAAAAAAAfwAAAP+AAAH/wAAD4eAAA8DwAAOA8AAHgHAAB4BwAAOA8AADwPAAA+HgAAHzwAAA84AAAPIAAADwAAAY8YAAPPPAAB73wAAf/4AAD/8AAAP+gAAB/YAAAPuAAADzgAAAY4AAAAAAAAAAAAAAAAAAAAAAA=" ; break ;
121+ case "continue" : img = "EBgBAIABwAPgD/Af+D/8f/773/PPY8cDwAPAA8ADwAPAA8AAAAPAA8ADwAAAA8ADwAPA" ; break ;
122+ case "left" : img = "GhcBAYAAAPAAAHwAAD4AAB8AAA+AAAf//8P///x///+PAAPx4AA8fAAHD4ABwfAAcDwAHAIABwAAAcAAAHAAABwAAAcAAAHAAABwAAAc" ; break ;
123+ case "right" : img = "GhcBAABgAAA8AAAPgAAB8AAAPgAAB8D///j///9///+/AAPPAAHjgAD44AB8OAA+DgAPA4ABAOAAADgAAA4AAAOAAADgAAA4AAAOAAAA" ; break ;
124+ case "left_slight" : img = "ERgB//B/+D/8H4AP4Af4A74Bz4Dj4HD4OD4cD4AD4ADwADwADgAHgAPAAOAAcAA4ABwADgAH" ; break ;
125+ case "right_slight" : img = "ERgBB/+D/8H/4APwA/gD/APuA+cD44Phw+Dj4HPgAeAB4ADgAPAAeAA4ABwADgAHAAOAAcAA" ; break ;
126+ case "left_sharp" : img = "GBaBAAAA+AAB/AAH/gAPjgAeBwA8BwB4B+DwB+HgB+PAB+eAB+8AB+4AB/wAB/gAB//gB//gB//gBwAABwAABwAABwAABw==" ; break ;
127+ case "right_sharp" : img = "GBaBAB8AAD+AAH/gAHHwAOB4AOA8AOAeAOAPB+AHh+ADx+AB5+AA9+AAd+AAP+AAH+AH/+AH/+AH/+AAAOAAAOAAAOAAAA==" ; break ;
128+ case "keep_left" : img = "ERmBAACAAOAB+AD+AP+B/+H3+PO+8c8w4wBwADgAHgAPAAfAAfAAfAAfAAeAAeAAcAA8AA4ABwADgA==" ; break ;
129+ case "keep_right" : img = "ERmBAACAAOAA/AD+AP+A//D/fPueeceY4YBwADgAPAAeAB8AHwAfAB8ADwAPAAcAB4ADgAHAAOAAAA==" ; break ;
130+ case "uturn_left" : img = "GRiBAAAH4AAP/AAP/wAPj8APAfAPAHgHgB4DgA8BwAOA4AHAcADsOMB/HPA7zvgd9/gOf/gHH/gDh/gBwfgA4DgAcBgAOAAAHAAADgAABw==" ; break ;
131+ case "uturn_right" : img = "GRiBAAPwAAf+AAf/gAfj4AfAeAPAHgPADwHgA4DgAcBwAOA4AHAcBjhuB5x/A+57gP99wD/84A/8cAP8OAD8HAA4DgAMBwAAA4AAAcAAAA==" ; break ;
132+ case "finish" : img = "HhsBAcAAAD/AAAH/wAAPB4AAeA4AAcAcAAYIcAA4cMAA48MAA4cMAAYAcAAcAcAAcA4AAOA4AAOBxjwHBzjwHjj/4Dnn/4B3P/4B+Pj4A8fj8Acfj8AI//8AA//+AA/j+AB/j+AB/j/A" ; break ;
133+ case "roundabout_left" : img = carIsRHD ? "HBaCAAADwAAAAAAAD/AAAVUAAD/wABVVUAD/wABVVVQD/wAAVABUD/wAAVAAFT/////wABX/////8AAF//////AABT/////wABUP/AAD/AAVA/8AA/8AVAD/wAD//VQAP/AAP/1QAA/wAA/9AAADwAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAD/AA=" : "HRYCAAPAAAAAAAAD/AAD//AAA/8AD///AAP/AA////AD/wAD/wP/A/8AA/wAP8P/////AAP//////8AA///////AAD/P////8AAP8P/AABUAD/AP/AAFUA/8AP/AAFX//AAP/AAFf/wAAP8AAB/8AAAPAAAD8AAAAAAAAPwAAAAAAAA/AAAAAAAAD8AAAAAAAAPwAAAAAAAA/AAAAAAAAD8AAA==" ; break ;
134+ case "roundabout_right" : img = carIsRHD ? "HRaCAAAAAAAA8AAAP/8AAP8AAD///AA/8AA////AA/8AP/A/8AA/8A/wAP8AA/8P8AA/////8/wAD///////AAD//////8AAP////8P8ABUAAP/A/8AVQAD/wA//1UAA/8AA//VAAP/AAA/9AAA/wAAAPwAAA8AAAA/AAAAAAAAD8AAAAAAAAPwAAAAAAAA/AAAAAAAAD8AAAAAAAAPwAAAAAAA=" : "HBYCAAAAAAPAAABVQAAP8AAFVVQAD/wAFVVVAAP/ABUAFQAA/8BUAAVAAD/wVAAP/////FAAD/////9QAA//////VAAP/////FQAP8AAP/AVAP/AAP/AFX//AAP/AAV//AAP/AAAf/AAD/AAAD/AAAPAAAA/wAAAAAAAP8AAAAAAAD/AAAAAAAA/wAAAAAAAP8AAAAAAAD/AAAAAAA==" ; break ;
135+ case "roundabout_straight" : img = carIsRHD ? "EBuCAAADwAAAD/AAAD/8AAD//wAD///AD///8D/P8/z/D/D//A/wPzAP8AwA//UAA//1QA//9VA/8AFUP8AAVD8AAFQ/AABUPwAAVD8AAFQ/wABUP/ABVA//9VAD//VAAP/1AAAP8AAAD/AAAA/wAA==" : "EBsCAAPAAAAP8AAAP/wAAP//AAP//8AP///wP8/z/P8P8P/8D/A/MA/wDABf/wABX//ABV//8BVAD/wVAAP8FQAA/BUAAPwVAAD8FQAA/BUAA/wVQA/8BV//8AFf/8AAX/8AAA/wAAAP8AAAD/AA" ; break ;
136+ case "roundabout_uturn" : img = carIsRHD ? "ICCBAAAAAAAAAAAAAAAAAAAP4AAAH/AAAD/4AAB4fAAA8DwAAPAcAADgHgAA4B4AAPAcAADwPAAAeHwAADz4AAAc8AAABPAAAADwAAAY8YAAPPPAAD73gAAf/4AAD/8AABf8AAAb+AAAHfAAABzwAAAcYAAAAAAAAAAAAAAAAAAAAAAA" : "ICABAAAAAAAAAAAAAAAAAAfwAAAP+AAAH/wAAD4eAAA8DwAAOA8AAHgHAAB4BwAAOA8AADwPAAA+HgAAHzwAAA84AAAPIAAADwAAAY8YAAPPPAAB73wAAf/4AAD/8AAAP+gAAB/YAAAPuAAADzgAAAY4AAAAAAAAAAAAAAAAAAAAAAA=" ; break ;
137137 }
138138
139139 layout = new Layout ( { type :"v" , c : [
@@ -196,7 +196,7 @@ function showMusicMessage(msg) {
196196 msg . new = false ;
197197 layout = undefined ;
198198 if ( wasNew ) checkMessages ( { clockIfNoMsg :1 , clockIfAllRead :1 , ignoreUnread :1 , openMusic :0 } ) ;
199- else returnToMain ( ) ;
199+ else returnToMain ( ) ;
200200 }
201201 function updateLabels ( ) {
202202 trackName = reduceStringAndPad ( msg . track , trackScrollOffset , 13 ) ;
@@ -280,8 +280,10 @@ function showMessageScroller2(msg, persist, initAtEndOfMsg, alreadyProcessed) {
280280 //if (!!alreadyProcessed) {
281281 // alreadyProcessed = { lines : [], startIdx : undefined, stopIdx : undefined };
282282 //}
283-
284- print ( alreadyProcessed ) ;
283+
284+ require ( "widget_utils" ) . hide ( ) ;
285+
286+ if ( alreadyProcessed ) print ( "alreadyPeocessed start and stop idx: " , alreadyProcessed . startIdx , alreadyProcessed . stopIdx ) ;
285287
286288 if ( replying ) { return ; }
287289 if ( persist ) {
@@ -299,18 +301,18 @@ function showMessageScroller2(msg, persist, initAtEndOfMsg, alreadyProcessed) {
299301 let startIdx = 0 ;
300302 let stopIdx = 0 ;
301303
302- if ( alreadyProcessed === undefined ) {
304+ if ( alreadyProcessed === undefined ) {
303305 startIdx = Math . max ( msgIdx - 1 , 0 ) ;
304306 stopIdx = Math . min ( msgIdx + 2 , MESSAGES . length ) ;
305- cacheObj = Object . assign ( { startIdx :startIdx , stopIdx :stopIdx } )
307+ Object . assign ( cacheObj , { startIdx :startIdx , stopIdx :stopIdx } )
306308 } else if ( msgIdx <= alreadyProcessed . startIdx ) {
307- startIdx = Math . max ( msgIdx - 1 , 0 ) ;
309+ startIdx = Math . max ( msgIdx , 0 ) ;
308310 stopIdx = alreadyProcessed . startIdx ;
309- cacheObj = Object . assign ( { startIdx :startIdx , stopIdx :alreadyProcessed . stopIdx } )
310- } else if ( msgIdx >= alreadyProcessed . stopIdx - 1 ) {
311+ Object . assign ( cacheObj , { startIdx :startIdx , stopIdx :alreadyProcessed . stopIdx } )
312+ } else if ( msgIdx >= alreadyProcessed . stopIdx - 1 ) {
311313 startIdx = alreadyProcessed . stopIdx ;
312- stopIdx = Math . min ( msgIdx + 2 , MESSAGES . length ) ;
313- cacheObj = Object . assign ( { startIdx :alreadyProcessed . startIdx , stopIdx :stopIdx } )
314+ stopIdx = Math . min ( msgIdx + 1 , MESSAGES . length ) ;
315+ Object . assign ( cacheObj , { startIdx :alreadyProcessed . startIdx , stopIdx :stopIdx } )
314316 }
315317 print ( startIdx , stopIdx ) ;
316318
@@ -342,7 +344,7 @@ function showMessageScroller2(msg, persist, initAtEndOfMsg, alreadyProcessed) {
342344 lines = lines . concat ( g . wrapString ( msgLocal . body , g . getWidth ( ) - 10 ) , [ "------" ] ) ;
343345 messagesWrapped . push ( lines ) ;
344346 //print(lines);
345- // allLines = allLines.concat(lines);
347+ // allLines = allLines.concat(lines);
346348 } ;
347349 //allLines.push("");
348350 //allLines.push("");
@@ -351,6 +353,25 @@ function showMessageScroller2(msg, persist, initAtEndOfMsg, alreadyProcessed) {
351353 allLines2 = allLines2 . concat ( messagesWrapped [ i ] ) ;
352354 }
353355
356+ // var initScroll = messagesWrapped[0].length;
357+ // if (msgIdx==0) initScroll = 0;
358+ // if (!!initAtEndOfMsg) {
359+ // let i = msgIdx==0?0:1;
360+ // initScroll += messagesWrapped[i].length>8?messagesWrapped[i].length-8:0;
361+ // }
362+
363+ print ( "titlelines" , titleLines )
364+ var initScroll ;
365+ if ( alreadyProcessed === undefined ) {
366+ initScroll = messagesWrapped [ 0 ] . length ;
367+ } else if ( msgIdx <= alreadyProcessed . startIdx ) {
368+ initScroll = messagesWrapped [ 0 ] . length ;
369+ titleLines = titleLines . concat ( alreadyProcessed . titleLines . map ( ( x ) => x + allLines2 . length ) ) ;
370+ } else if ( msgIdx >= alreadyProcessed . stopIdx - 1 ) {
371+ initScroll = alreadyProcessed . lines . length - 8 ;
372+ titleLines = alreadyProcessed . titleLines . concat ( titleLines . map ( ( x ) => x + alreadyProcessed . lines . length ) ) ;
373+ }
374+
354375 if ( alreadyProcessed === undefined ) {
355376 // no-op
356377 } else if ( msgIdx <= alreadyProcessed . startIdx ) {
@@ -359,13 +380,7 @@ function showMessageScroller2(msg, persist, initAtEndOfMsg, alreadyProcessed) {
359380 allLines2 = alreadyProcessed . lines . concat ( allLines2 ) ;
360381 }
361382
362- // var initScroll = messagesWrapped[0].length;
363- // if (msgIdx==0) initScroll = 0;
364- // if (!!initAtEndOfMsg) {
365- // let i = msgIdx==0?0:1;
366- // initScroll += messagesWrapped[i].length>8?messagesWrapped[i].length-8:0;
367- // }
368- var initScroll = 10 ;
383+ print ( "titlelines" , titleLines )
369384
370385 if ( allLines2 . length == 0 && alreadyProcessed . lines . length == 0 ) {
371386 cancelReloadTimeout ( ) ;
@@ -377,46 +392,59 @@ function showMessageScroller2(msg, persist, initAtEndOfMsg, alreadyProcessed) {
377392 //print("allLines2:\n",allLines2);
378393 //print("messagesWrapped:\n",messagesWrapped);
379394
380- cacheObj = Object . assign (
381- {
382- lines : allLines2 ,
383- titleLines : titleLines ,
384- messagesWrappedLength : messagesWrapped . length ,
385- } , cacheObj
395+ Object . assign (
396+ cacheObj ,
397+ {
398+ lines : allLines2 ,
399+ titleLines : titleLines ,
400+ messagesWrappedLength : messagesWrapped . length
401+ }
386402 )
387403
404+ let prevScrollIdx ;
405+
388406 E . showScroller ( {
389407 scroll : initScroll * g . getFontHeight ( ) ,
390408 h : g . getFontHeight ( ) , // height of each menu item in pixels
391409 c : allLines2 . length , // number of menu items
392410 // a function to draw a menu item
393- draw : function ( idx , r ) {
394- // print(idx ); // FIXME: Remove this print.
411+ draw : function ( scrollIdx , r ) {
412+ print ( scrollIdx , allLines2 . length ) ; // FIXME: Remove this print.
395413 // FIXME: in 2v13 onwards, clearRect(r) will work fine. There's a bug in 2v12
396- g . setBgColor ( titleLines . find ( ( e ) => e == idx ) !== undefined ? g . theme . bg2 : g . theme . bg ) .
397- setColor ( titleLines . find ( ( e ) => e == idx ) !== undefined ? g . theme . fg2 : g . theme . fg ) .
414+ g . setBgColor ( titleLines . find ( ( e ) => e == scrollIdx ) !== undefined ? g . theme . bg2 : g . theme . bg ) .
415+ setColor ( titleLines . find ( ( e ) => e == scrollIdx ) !== undefined ? g . theme . fg2 : g . theme . fg ) .
398416 clearRect ( r . x , r . y , r . x + r . w , r . y + r . h ) ;
399- g . setFont ( bodyFont ) . setFontAlign ( 0 , - 1 ) . drawString ( allLines2 [ idx ] , r . x + r . w / 2 , r . y ) ;
400- if ( idx >= allLines2 . length - 1 && msgIdx < MESSAGES . length - 1 ) {
401- setTimeout ( ( ) => {
402- showMessageScroller2 ( MESSAGES [ msgIdx + 1 ] , true , true , cacheObj ) ;
403- } , 0 )
417+ g . setFont ( bodyFont ) . setFontAlign ( 0 , - 1 ) . drawString ( allLines2 [ scrollIdx ] , r . x + r . w / 2 , r . y ) ;
418+ if ( scrollIdx >= allLines2 . length - 1 && scrollIdx != prevScrollIdx && Math . max ( msgIdx , ( alreadyProcessed && alreadyProcessed . stopIdx ) || 0 ) < MESSAGES . length - 1 ) {
419+ setTimeout ( ( ) => {
420+ E . showScroller ( ) ;
421+ showMessageScroller2 ( MESSAGES [ Math . max ( stopIdx , ( alreadyProcessed && alreadyProcessed . stopIdx ) || 0 ) ] , true , true , cacheObj ) ;
422+ } , 1 ) ;
404423 }
405- if ( idx == 0 && msgIdx > 0 ) {
406- setTimeout ( ( ) => {
407- showMessageScroller2 ( MESSAGES [ msgIdx - 1 ] , true , false , cacheObj ) ;
408- } , 0 )
424+ if ( scrollIdx == 0 && scrollIdx != prevScrollIdx && Math . min ( msgIdx , ( alreadyProcessed && alreadyProcessed . startIdx ) === undefined ?MESSAGES . length :alreadyProcessed . startIdx ) > 0 ) {
425+ setTimeout ( ( ) => {
426+ E . showScroller ( ) ;
427+ showMessageScroller2 ( MESSAGES [ Math . min ( startIdx - 1 ,
428+ ( ( alreadyProcessed && alreadyProcessed . startIdx ) === undefined
429+ ?MESSAGES . length
430+ :alreadyProcessed . startIdx - 1 )
431+ ) ]
432+ , true , false , cacheObj ) ;
433+ } , 1 ) ;
409434 }
410- } , select : function ( idx , touch ) {
435+ prevScrollIdx = scrollIdx ;
436+ } , select : function ( scrollIdx , touch ) {
411437 if ( touch . type == 0 ) {
438+ require ( "widget_utils" ) . show ( ) ;
412439 showMessage ( msg . id , true )
413440 }
414441 if ( touch . type == 2 ) {
442+ require ( "widget_utils" ) . show ( ) ;
415443 showMessageSettings ( msg )
416444 }
417- //showMessage(msg.id, true);
445+ //showMessage(msg.id, true);
418446 } ,
419- back : ( ) => showMessage ( messages [ idx ] . id , true )
447+ // back : () => showMessage(messages[idx].id, true)
420448 } ) ;
421449}
422450
@@ -470,9 +498,9 @@ function showMessagesScroller(messages, offsetToMessageNumber) {
470498function showMessageSettings ( msg ) {
471499 active = "settings" ;
472500 var menu = { "" :{
473- "title" :/*LANG*/ "Message" ,
474- back :( ) => showMessage ( msg . id , true )
475- } ,
501+ "title" :/*LANG*/ "Message" ,
502+ back :( ) => showMessage ( msg . id , true )
503+ } ,
476504 } ;
477505
478506 if ( msg . id != "music" )
@@ -585,7 +613,7 @@ function showMessage(msgid, persist) {
585613 var maxLines = Math . floor ( h / g . getFontHeight ( ) ) ;
586614 if ( lines . length > maxLines ) // if too long, wrap with a bit less spae so we have room for '...'
587615 body = g . setFont ( bodyFont ) . wrapString ( body , w - 10 ) . slice ( 0 , maxLines ) . join ( "\n" ) + "..." ;
588- else
616+ else
589617 body = lines . join ( "\n" ) ;
590618 }
591619 function goBack ( ) {
@@ -721,7 +749,7 @@ function checkMessages(options) {
721749 draw : function ( idx , r ) { "ram"
722750 var msg = MESSAGES [ idx ] ;
723751 if ( msg && msg . new ) g . setBgColor ( g . theme . bgH ) . setColor ( g . theme . fgH ) ;
724- else g . setBgColor ( g . theme . bg ) . setColor ( g . theme . fg ) ;
752+ else g . setBgColor ( g . theme . bg ) . setColor ( g . theme . fg ) ;
725753 g . clearRect ( r . x , r . y , r . x + r . w , r . y + r . h ) ;
726754 if ( ! msg ) return ;
727755 var x = r . x + 2 , title = msg . title , body = msg . body ;
@@ -732,9 +760,9 @@ function checkMessages(options) {
732760 }
733761 if ( img ) {
734762 var fg = g . getColor ( ) ,
735- col = require ( "messageicons" ) . getColor ( msg , { settings, default :fg } ) ;
763+ col = require ( "messageicons" ) . getColor ( msg , { settings, default :fg } ) ;
736764 g . setColor ( col ) . drawImage ( img , x + 24 , r . y + 24 , { rotate :0 } ) // force centering
737- . setColor ( fg ) ; // only color the icon
765+ . setColor ( fg ) ; // only color the icon
738766 x += 50 ;
739767 }
740768 if ( title ) g . setFontAlign ( - 1 , - 1 ) . setFont ( fontBig ) . drawString ( title , x , r . y + 2 ) ;
0 commit comments