mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 02:59:20 +01:00
Added caching of extension icons
This commit is contained in:
parent
a7de123d7e
commit
d26d6d246f
@ -15,7 +15,6 @@ local system = {}
|
|||||||
|
|
||||||
local iconImageWidth = 8
|
local iconImageWidth = 8
|
||||||
local iconImageHeight = 4
|
local iconImageHeight = 4
|
||||||
local iconCache = {}
|
|
||||||
|
|
||||||
local bootUptime = computer.uptime()
|
local bootUptime = computer.uptime()
|
||||||
local dateUptime = bootUptime
|
local dateUptime = bootUptime
|
||||||
@ -41,6 +40,15 @@ local desktopBackgroundWallpaper
|
|||||||
local desktopBackgroundWallpaperX
|
local desktopBackgroundWallpaperX
|
||||||
local desktopBackgroundWallpaperY
|
local desktopBackgroundWallpaperY
|
||||||
|
|
||||||
|
-- Caching commonly used icons
|
||||||
|
local iconCache = {
|
||||||
|
archive = image.load(paths.system.icons .. "Archive.pic"),
|
||||||
|
directory = image.load(paths.system.icons .. "Folder.pic"),
|
||||||
|
fileNotExists = image.load(paths.system.icons .. "FileNotExists.pic"),
|
||||||
|
application = image.load(paths.system.icons .. "Application.pic"),
|
||||||
|
script = image.load(paths.system.icons .. "Script.pic"),
|
||||||
|
}
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
-- Returns real timestamp in seconds
|
-- Returns real timestamp in seconds
|
||||||
@ -365,14 +373,6 @@ function system.updateIconProperties()
|
|||||||
computer.pushSignal("system", "updateFileList")
|
computer.pushSignal("system", "updateFileList")
|
||||||
end
|
end
|
||||||
|
|
||||||
function system.cacheIcon(name, path)
|
|
||||||
if not iconCache[name] then
|
|
||||||
iconCache[name] = image.load(path)
|
|
||||||
end
|
|
||||||
|
|
||||||
return iconCache[name]
|
|
||||||
end
|
|
||||||
|
|
||||||
local function drawSelection(x, y, width, height, color, transparency)
|
local function drawSelection(x, y, width, height, color, transparency)
|
||||||
screen.drawText(x, y, color, string.rep("▄", width), transparency)
|
screen.drawText(x, y, color, string.rep("▄", width), transparency)
|
||||||
screen.drawText(x, y + height - 1, color, string.rep("▀", width), transparency)
|
screen.drawText(x, y + height - 1, color, string.rep("▀", width), transparency)
|
||||||
@ -533,10 +533,20 @@ local function iconAnalyseExtension(icon, launchers)
|
|||||||
icon.image = iconCache.archive
|
icon.image = iconCache.archive
|
||||||
icon.launch = launchers.archive
|
icon.launch = launchers.archive
|
||||||
elseif userSettings.extensions[icon.extension] then
|
elseif userSettings.extensions[icon.extension] then
|
||||||
icon.image =
|
if iconCache[icon.extension] then
|
||||||
image.load(userSettings.extensions[icon.extension] .. "Extensions/" .. icon.extension .. "/Icon.pic") or
|
icon.image = iconCache[icon.extension]
|
||||||
image.load(userSettings.extensions[icon.extension] .. "Icon.pic") or
|
else
|
||||||
iconCache.fileNotExists
|
local picture =
|
||||||
|
image.load(userSettings.extensions[icon.extension] .. "Extensions/" .. icon.extension .. "/Icon.pic") or
|
||||||
|
image.load(userSettings.extensions[icon.extension] .. "Icon.pic")
|
||||||
|
|
||||||
|
if picture then
|
||||||
|
iconCache[icon.extension] = picture
|
||||||
|
icon.image = picture
|
||||||
|
else
|
||||||
|
icon.image = iconCache.fileNotExists
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
icon.launch = launchers.extension
|
icon.launch = launchers.extension
|
||||||
elseif not filesystem.exists(icon.path) then
|
elseif not filesystem.exists(icon.path) then
|
||||||
@ -844,6 +854,7 @@ local function iconOnRightClick(icon, e1, e2, e3, e4)
|
|||||||
local function setAssociation(path)
|
local function setAssociation(path)
|
||||||
userSettings.extensions[icon.extension] = path
|
userSettings.extensions[icon.extension] = path
|
||||||
|
|
||||||
|
iconCache[icon.extension] = nil
|
||||||
icon:analyseExtension(icon.parent.parent.launchers)
|
icon:analyseExtension(icon.parent.parent.launchers)
|
||||||
icon:launch()
|
icon:launch()
|
||||||
workspace:draw()
|
workspace:draw()
|
||||||
@ -2668,13 +2679,6 @@ filesystem.write(temporaryPath, "")
|
|||||||
bootRealTime = math.floor(filesystem.lastModified(temporaryPath) / 1000)
|
bootRealTime = math.floor(filesystem.lastModified(temporaryPath) / 1000)
|
||||||
filesystem.remove(temporaryPath)
|
filesystem.remove(temporaryPath)
|
||||||
|
|
||||||
-- Caching commonly used icons
|
|
||||||
system.cacheIcon("archive", paths.system.icons .. "Archive.pic")
|
|
||||||
system.cacheIcon("directory", paths.system.icons .. "Folder.pic")
|
|
||||||
system.cacheIcon("fileNotExists", paths.system.icons .. "FileNotExists.pic")
|
|
||||||
system.cacheIcon("application", paths.system.icons .. "Application.pic")
|
|
||||||
system.cacheIcon("script", paths.system.icons .. "Script.pic")
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
return system
|
return system
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user