iconlauch - Center icons in items to prevent selection box beeing cut off at top

pull/2895/head
Martin Boonk 2023-07-22 18:04:38 +02:00
parent 91df2dc68e
commit ffd967cb63
1 changed files with 15 additions and 13 deletions

View File

@ -36,12 +36,21 @@
// cache items // cache items
const ICON_MISSING = atob("MDABAAAAAAAAAAAAAAAAAAABAAAAAAADgAAAAAAGwAAAAAAMYAAAAAAYMAAAAAAwGAAAAABgDAAAAADABgAAAAGAAwAAAAMAAYAAAAYP4MAAAAw//GAAABh4/jAAADD4fhgAAGD8PwwAAMD8PwYAAYD8PwMAAwD8PwGABgB4fwDADAAAfgBgGAAAfgAwMAAA+AAYGAAB8AAwDAABwABgBgADgADAAwADAAGAAYADAAMAAMAAAAYAAGAAAAwAADADgBgAABgHwDAAAAwPwGAAAAYP4MAAAAMPwYAAAAGPwwAAAADHhgAAAABgDAAAAAAwGAAAAAAYMAAAAAAMYAAAAAAGwAAAAAADgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); const ICON_MISSING = atob("MDABAAAAAAAAAAAAAAAAAAABAAAAAAADgAAAAAAGwAAAAAAMYAAAAAAYMAAAAAAwGAAAAABgDAAAAADABgAAAAGAAwAAAAMAAYAAAAYP4MAAAAw//GAAABh4/jAAADD4fhgAAGD8PwwAAMD8PwYAAYD8PwMAAwD8PwGABgB4fwDADAAAfgBgGAAAfgAwMAAA+AAYGAAB8AAwDAABwABgBgADgADAAwADAAGAAYADAAMAAMAAAAYAAGAAAAwAADADgBgAABgHwDAAAAwPwGAAAAYP4MAAAAMPwYAAAAGPwwAAAADHhgAAAABgDAAAAAAwGAAAAAAYMAAAAAAMYAAAAAAGwAAAAAADgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
let count = 0; let count = 0;
let selectedItem = -1;
const R = Bangle.appRect;
const iconSize = 48;
const appsN = Math.floor(R.w / iconSize);
const whitespace = Math.floor((R.w - appsN * iconSize) / (appsN + 1));
const iconYoffset = Math.floor(whitespace/4)-1;
const itemSize = iconSize + whitespace;
launchCache.items = []; launchCache.items = [];
for (let c of launchCache.apps){ for (let c of launchCache.apps){
let i = Math.floor(count/3); let i = Math.floor(count/appsN);
if (!launchCache.items[i]) if (!launchCache.items[i])
launchCache.items.push([]); launchCache.items.push([]);
launchCache.items[Math.floor(count/3)].push(c); launchCache.items[Math.floor(count/appsN)].push(c);
if (c.icon) if (c.icon)
c.icondata = s.read(c.icon); c.icondata = s.read(c.icon);
else else
@ -49,13 +58,6 @@
count++; count++;
} }
let selectedItem = -1;
const R = Bangle.appRect;
const iconSize = 48;
const appsN = Math.floor(R.w / iconSize);
const whitespace = (R.w - appsN * iconSize) / (appsN + 1);
const itemSize = iconSize + whitespace;
let drawItem = function(itemI, r) { let drawItem = function(itemI, r) {
let x = 0; let x = 0;
let apps = launchCache.items[itemI]; let apps = launchCache.items[itemI];
@ -67,14 +69,14 @@
for (currentApp of apps) { for (currentApp of apps) {
i++; i++;
x += whitespace; x += whitespace;
layers.push({x:x+r.x,y:r.y,image:currentApp.icondata}); layers.push({x:x+r.x,y:r.y + iconYoffset,image:currentApp.icondata});
if (selectedItem == i) { if (selectedItem == i) {
selectedApp = currentApp; selectedApp = currentApp;
selectedRect = [ selectedRect = [
x + r.x - 1, x + r.x - 1,
r.y - 1, r.y + iconYoffset - 1,
x + r.x + iconSize + 1, x + r.x + iconSize,
r.y + iconSize + 1 r.y + iconYoffset + iconSize
]; ];
} }
x += iconSize; x += iconSize;