|
44 | 44 | initPageAppLast = Math.min(page*4+3, apps.length-1); |
45 | 45 | } |
46 | 46 |
|
47 | | - for (let i = initPageAppZeroth; i <= initPageAppLast; i++) { // Initially only load icons for the current page. |
48 | | - if (apps[i].icon) |
49 | | - apps[i].icon = s.read(apps[i].icon); // should just be a link to a memory area |
50 | | - } |
51 | 47 |
|
52 | 48 | let Napps = apps.length; |
53 | 49 | let Npages = Math.ceil(Napps/4); |
|
57 | 53 | const XOFF = 24; |
58 | 54 | const YOFF = 30; |
59 | 55 |
|
| 56 | + let dotIntvLen = 85; |
| 57 | + let delayTillFirstIcon = 135; //dotIntvLen*Npages; |
| 58 | + g.reset(); |
| 59 | + g.clearRect(0,24,175,175); |
| 60 | + let O = 88+YOFF/2-12*(Npages/2); |
| 61 | + let j = 0; |
| 62 | + let drawDot = ()=>{ |
| 63 | + let y = O+j*12; |
| 64 | + g.setColor(g.theme.fg); |
| 65 | + if (j==page) g.fillCircle(XOFF/2,y,4); |
| 66 | + else g.drawCircle(XOFF/2,y,4); |
| 67 | + g.flip(); |
| 68 | + j++; |
| 69 | + if (j==Npages) { |
| 70 | + clearInterval(dotIntv); |
| 71 | + } |
| 72 | + } |
| 73 | + drawDot(); |
| 74 | + let dotIntv = setInterval(drawDot, dotIntvLen) |
| 75 | + |
| 76 | + |
| 77 | +// |
| 78 | +// for (let j=0;j<Npages;j++){ |
| 79 | +// let y = O+j*12; |
| 80 | +// g.setColor(g.theme.fg); |
| 81 | +// if (j==page) g.fillCircle(XOFF/2,y,4); |
| 82 | +// else g.drawCircle(XOFF/2,y,4); |
| 83 | +// g.flip(); |
| 84 | +// } |
| 85 | + |
60 | 86 | let drawIcon= function(p,n,selected) { |
61 | 87 | let x = (n%2)*72+XOFF; |
62 | 88 | let y = n>1?72+YOFF:YOFF; |
|
83 | 109 | g.drawString(line.trim(),x+36,y+54+lineY*8); |
84 | 110 | }; |
85 | 111 |
|
| 112 | + let intv; |
86 | 113 | let drawPage = function(p){ |
87 | | - g.reset(); |
88 | | - g.clearRect(0,24,175,175); |
89 | | - let O = 88+YOFF/2-12*(Npages/2); |
90 | | - for (let j=0;j<Npages;j++){ |
91 | | - let y = O+j*12; |
92 | | - g.setColor(g.theme.fg); |
93 | | - if (j==page) g.fillCircle(XOFF/2,y,4); |
94 | | - else g.drawCircle(XOFF/2,y,4); |
| 114 | + if (!isFirstDrawPage) { |
| 115 | + g.reset(); |
| 116 | + g.clearRect(0,24,175,175); |
| 117 | + let O = 88+YOFF/2-12*(Npages/2); |
| 118 | + for (let j=0;j<Npages;j++){ |
| 119 | + let y = O+j*12; |
| 120 | + g.setColor(g.theme.fg); |
| 121 | + if (j==page) g.fillCircle(XOFF/2,y,4); |
| 122 | + else g.drawCircle(XOFF/2,y,4); |
| 123 | + } |
95 | 124 | } |
96 | | - for (let i=0;i<4;i++) { |
| 125 | + g.flip(); |
| 126 | + setTimeout(()=>{ |
| 127 | + let i=0; |
| 128 | + drawIcon(p,i,selected==i && !settings.direct); |
| 129 | + i++; |
| 130 | + intv = setInterval(()=>{ |
97 | 131 | if (!apps[p*4+i]) return i; |
98 | 132 | drawIcon(p,i,selected==i && !settings.direct); |
99 | | - } |
100 | | - g.flip(); |
| 133 | + g.flip(); |
| 134 | + i++ |
| 135 | + if (i==4) { |
| 136 | + clearInterval(intv); |
| 137 | + intv = undefined; |
| 138 | + } |
| 139 | + }, 90) |
| 140 | + }, 100); |
| 141 | + //for (let i=0;i<4;i++) { |
| 142 | + // if (!apps[p*4+i]) return i; |
| 143 | + // drawIcon(p,i,selected==i && !settings.direct); |
| 144 | + //g.flip(); |
| 145 | + //} |
101 | 146 | }; |
102 | 147 |
|
| 148 | + for (let i = initPageAppZeroth; i <= initPageAppLast; i++) { // Initially only load icons for the current page. |
| 149 | + if (apps[i].icon) |
| 150 | + apps[i].icon = s.read(apps[i].icon); // should just be a link to a memory area |
| 151 | + //drawPage(page); |
| 152 | + } |
| 153 | + |
103 | 154 | let buzzShort = function() { |
104 | 155 | if (settings.interactionBuzz) Bangle.buzz(20); |
105 | 156 | }; |
|
109 | 160 |
|
110 | 161 | Bangle.drawWidgets(); // To immediately update widget field to follow current theme - remove leftovers if previous app set custom theme. |
111 | 162 | Bangle.loadWidgets(); |
112 | | - drawPage(page); |
| 163 | + let isFirstDrawPage = true; |
| 164 | + //drawPage(page); |
| 165 | + //isFirstDrawPage = false; |
| 166 | + setTimeout(()=>{drawPage(page); isFirstDrawPage = false; },delayTillFirstIcon); |
113 | 167 |
|
114 | 168 | for (let i = 0; i < apps.length; i++) { // Load the rest of the app icons that were not initially. |
115 | 169 | if (i >= initPageAppZeroth && i <= initPageAppLast) continue; |
|
194 | 248 | touch : touchListenerDt, |
195 | 249 | remove : ()=>{ |
196 | 250 | if (timeoutToClock) {clearTimeout(timeoutToClock);} |
| 251 | + if (intv) {clearInterval(intv)} |
197 | 252 | global.dtlaunch.handlePagePersist(page); |
198 | 253 | } |
199 | 254 | }); |
|
0 commit comments