iconlaunch - Go back to caching icons on demand but keep presorting apps into items

master
Martin Boonk 2023-07-25 21:51:11 +02:00
parent a9fff20477
commit 94bb93c19e
1 changed files with 19 additions and 17 deletions

View File

@ -45,33 +45,33 @@
const iconYoffset = Math.floor(whitespace/4)-1; const iconYoffset = Math.floor(whitespace/4)-1;
const itemSize = iconSize + whitespace; const itemSize = iconSize + whitespace;
let t = Date.now();
launchCache.items = {}; launchCache.items = {};
for (let c of launchCache.apps){ for (let c of launchCache.apps){
let i = Math.floor(count/appsN); let i = Math.floor(count/appsN);
if (!launchCache.items[i]) if (!launchCache.items[i])
launchCache.items[i] = {}; launchCache.items[i] = {};
launchCache.items[i].push(count%3); launchCache.items[i][(count%3)] = c;
if (c.icon)
c.icondata = s.read(c.icon);
else
c.icondata = ICON_MISSING;
count++; count++;
} }
let texted;
let drawItem = function(itemI, r) { let drawItem = function(itemI, r) {
let x = 0; let x = whitespace;
let apps = launchCache.items[itemI];
let i = itemI * appsN - 1; let i = itemI * appsN - 1;
let selectedApp; let selectedApp;
let currentApp; let c;
let selectedRect; let selectedRect;
for (currentApp of apps) { let item = launchCache.items[itemI];
if (texted == itemI){
g.clearRect(r.x, r.y, r.x + r.w - 1, r.y + r.h - 1);
texted = undefined;
}
for (c of item) {
i++; i++;
x += whitespace; let id = c.icondata || (c.iconData = (c.icon ? s.read(c.icon) : ICON_MISSING));
g.drawImage(currentApp.icondata,x + r.x - 1, r.y + iconYoffset - 1, x + r.x + iconSize, r.y + iconYoffset + iconSize); g.drawImage(id,x + r.x - 1, r.y + iconYoffset - 1, x + r.x + iconSize, r.y + iconYoffset + iconSize);
if (selectedItem == i) { if (selectedItem == i) {
selectedApp = currentApp; selectedApp = c;
selectedRect = [ selectedRect = [
x + r.x - 1, x + r.x - 1,
r.y + iconYoffset - 1, r.y + iconYoffset - 1,
@ -79,11 +79,13 @@
r.y + iconYoffset + iconSize r.y + iconYoffset + iconSize
]; ];
} }
x += iconSize; x += iconSize + whitespace;
}
if (selectedRect) {
g.drawRect.apply(null, selectedRect);
drawText(itemI, r.y, selectedApp);
texted=itemI;
} }
if (selectedRect) g.clearRect(r.x, r.y, r.x + r.w - 1, r.y + r.h - 1);
if (selectedRect) g.drawRect.apply(null, selectedRect);
if (selectedApp) drawText(itemI, r.y, selectedApp);
}; };
let drawText = function(i, appY, selectedApp) { let drawText = function(i, appY, selectedApp) {